最近よく使っている自作ツール(3) select.pl

TL;DR

www.youtube.com

ちょうどひと月ぐらい空いてしまいましたが、以下のシリーズの続きです。

note103.hateblo.jp

note103.hateblo.jp

今回は、複数のファイルを直感的に選択して、それらに同じコマンドを渡すためのツールです。

リポジトリは以下。

GitHub - note103/select

で、いつものようにLICEcapを使ったGIF動画と、文章による説明とを組み合わせつつ記事を作ろうかと思っていましたが、けっこうそれも大変なんだよなあと思い直し、それでこのところ「音声入力による文字起こし」の実験をする過程で泥縄的に身に付けたスクリーンキャスト的手法で紹介してみようか、と思って作ったのが冒頭の動画(YouTube)です。

説明としてわかりやすいかどうかは不明ですが、文章で全部書くよりはずっとラクでした。

で、とはいえ、それだけではいろいろ情報が不足するだろうと思って、その補足ぐらいは文章で補おう・・と思っていましたが、やっぱりそれもまた面倒というか、いや面倒ならやらなければいいのですが、いや説明はしたい、そもそも自作ツールを紹介したいからわざわざこんな記事を書いているのだ、ということで、それならいっそその動画で喋った音声もそのままGoogleドキュメントの音声入力機能でテキスト化しちゃえばいいのでは、と思ってそうしてみました。

で、さらにその際、なんだかメタっぽいですが、せっかくなのでその音声入力による文字起こしの模様も動画に撮ってみたので、記事の最後に貼り付けておきます。興味のある人はご高覧のほど。

ということで、上の動画で喋った内容をGoogleドキュメントの音声入力でテキスト化した上で、簡単に手直ししたもの(それでも40分ぐらいかかったけど)を以下に掲示して本記事を終わりたいと思います。

このシリーズ自体はまだ続きがあるので、また時間ができたら更新したいと思っています。

Transcript

[00:00]

  • ええ、はい。今日はですね。これ、プログラミングの、いつも練習をですね、記録しているブログに、動画でですね、ちょっとのせてみようかと思っておりまして。
  • `test`っていうディレクトリで、ちょっとやってみようかなという感じですけど。
  • 今日紹介したいコードはですね、`select.pl`ってやつで。詳しくはですね、GitHubとかにも上げてるはずなので、ブログの方で紹介したいと思いますけども。
  • 私は今この`e`っていう名前のエイリアスを入れてるんですけども。
  • こんな感じですね。複数のファイルをこんなふうに選択して、選択するとこういう`+`マークがつくんですね。
  • で、デフォルトでただ`e`って入れるだけだと、echoするよって、選択したファイルを全部echoするよ、みたいな感じになるんですね。
  • で、そのままやっていいかなってなった場合は……(実行)はい、ちょっとわかりづらいですけど、フルパスで全部出るんですね。3つファイルがあってですね、全部echoされたと。

[02:00]

  • で、それの何が嬉しいのって感じなんですけど、eあるいはそのselect.pl をこれPerlで書いてるんですけど、実行するときの引数にですね、コマンドを何か入れると。たとえば、こんな感じでcatするよと。`e cat`って入れて、 `yes` ってやるとですね。
  • この`project1.txt`ってやつの中身がcatされて、`project3.txt`の中身もcatされて、みたいな感じでですね。ようするに、複数のファイルを選択して、それに同じコマンドを渡すみたいなことをやりたいと。
  • んで、そんなのべつに普通にやればいいんじゃないの、みたいな感じもするんですけど、なんでこんな、ハッシュ値が入っているような長いファイル名にしているのかっていうことが、これを作った理由を示しているんですけど。
  • これをですね、たとえばcatしようって言ってですね。project2なんかを選ぼうと思ってもですね、めちゃくちゃ長いファイル名だと、めんどくさいわけですね。
  • たとえばproject2と、なんかを選びたいなと。projecct2とproject4を選びたいなってときにですね、2015……とか書いても、これでタブを押しても駄目なんですね。2016の……05の……とかやってるとですね、いつまでも選択が終わらないぞ、みたいな。
  • 2017のこれを選びたいので‥‥とかやってもですね、めんどくさくてしょうがないですね。
  • まあ、できますけど、それもこれでやれば、これで選ぶと、楽ですよね。
  • ちなみにもう1回選択すると、消えたりとかするんですけど。
  • まあ、それだけっちゃそれだけですけど(笑)。

[04:40]

  • あとついでにっていうか、`de`っていうエイリアスを仕込んでるんですけど、これ消したいなという時ですね。複数のファイルを消したいと。
  • そういう時は、これ私は`trash`っていうコマンドが入ってるんですけど、ない場合は、まあ`rm`とかでもいいんでしょうかね。
  • 私はこれを仮のゴミ箱がこういう場所にあるんですが、ここにtrashしたいと。(実行)で、どうなったかっていうとですね。1,2,4のファイルしか、もう残ってないと。
  • 複数のファイルをどっかに飛ばしちゃいたいという時にこれはよく使いますね。
  • あとまあ、ちなみに、不可視ファイルをですね。捨てたいなっていう時も時々あるんですね。
  • そういう場合は、`de.`っていうのでやると、ちゃんとそれも飛んでってくれると。
  • 逆にっていうか、そのまま`de`だけだと不可視ファイルは出ないようになってるので、こういうコマンドならこれも消せるよと。
  • そういう感じにしてたりします。

[06:30]

  • あとは複数じゃなくて、1個だけファイルを選んで何かやりたいっていう時は、また別にこれだけで済ませるコマンドを作ってるんですが、またそれは必要があれば紹介するかもしれないですけども。
  • まあどんどん消しちゃって。無くなっちゃいますけど。
  • という感じで、そういうselectコマンドを紹介してみました。

余録

www.youtube.com

※音声入力による文字起こしについては以下をご参照。
21世紀の文字起こし - the code to rock
21世紀の文字起こし(2) - the code to rock

補足

動画の中で、エイリアスのことをちらちら言っていました。補足的に以下に示しておきます。

alias e="perl /path/to/select.pl"
alias de="perl /path/to/select.pl 'trash -r'"
alias de.="perl /path/to/select.pl -a 'trash -r'"

alias d="sh /path/to/delete.sh"
alias d.="sh /path/to/delete.sh -a"

最後にオマケ的に紹介していた`d`, `d.`などは、すでに前回紹介していたdelete.shのエイリアスでした。
最近よく使っている自作ツール(2) delete.sh - the code to rock