@hirose31 さんが「シェルスクリプトでハマった件→【募】ステキな回避方法」でお題を出されていて、それに回答してみました。 その内容はリンク先を見てもらうとして、回答の中で使ったbashのプロセス置換について書かれた記事をあまり見ないので、回答で使ったプロセス置換のことをエントリにしてみたいと思います。 最初に注意点ですが、プロセス置換の機能は、bashやzsh*1の機能でPOSIX互換の機能ではありません。そのため、使用時には、対応していないシェルでは使えませんし、bashで使う場合も /bin/sh ではなく /bin/bash を明示的に指定する必要があります。たとえば、プロセス置換を使ったスクリプト「script.sh」に対して"$ bash script.sh" というコマンドは成功しますが、"$ sh script.sh" というコマンドは失敗します。この辺りの違いは「/
Bash にはプロセス置換という便利な機能があります。しかしこの機能、あまり知名度が高くない。 ぼくは毎日の労働に疲れ果てているし、日本学生支援機構という組織から毎月金を請求され、しまいには信用情報機関に登録される寸前までいくような生活を送っているというような状態なので、みなさんにこのプロセス置換という機能をご説明して気を紛らわすことに決めた。 プロセス出力をファイルとして扱うと便利なケース 一般に、unix でファイルの差分をチェックするには diff を使います。 例えば、それぞれ 1〜3 と 1〜4 が順番に入力された 2 つのファイルがあるとすると、次のような感じで比較しますね。 瞬時に 4 だけが仲間外れであることが分かり、同質であることを良しとし異端を排除する日本においては、杭として打たれ、イジメの対象となります。とてもこわいですね。はーこわい。 $ diff -u seq3.
ありがたいことに昨日のエントリがそこそこブクマを集めているのだけれど、コメントで gibo を使っているという話があって、存在を知らなかったので試してみたら gibo で良かったという話。 gibo なんか日本人としては義母を連想してしまいアンニュイな気持ちになるのだけれど、gitignore boilerplates の略だそうです。 GitHub が公開している github/gitignore から任意のものを取ってきてくれる。当然複数のものをつなぎ合わせることも出来る。 出来た .gitignore は昨日紹介した .gitignore.io のものとほぼ同じなのだけれど、それもそのはず、どちらも github/gitignore から元データを取ってきている。 しかし、gibo の場合は初回にローカルに clone してくれるので速い。.gitignore.io の場合は lis
I want to find a bash command that will let me grep every file in a directory and write the output of that grep to a separate file. My guess would have been to do something like this ls -1 | xargs -I{} "grep ABC '{}' > '{}'.out" but, as far as I know, xargs doesn't like the double-quotes. If I remove the double-quotes, however, then the command redirects the output of the entire command to a singl
よく忘れるので例示と共にメモ。ここらへん押さえておくと作業効率が上がる。bashのページで発見したものを載せている。zshでも確認した。 実行系 !! 直前に実行したコマンドを再現 !+何かの文字 !sudoとすれば、sudoで始まる直近の実行コマンドを再度実行。他にヒットしないのがわかってれば、!suとか!sでもいい。最短マッチ。 !:s/foo/bar 直前に実行したコマンドのfooをbarにして実行。gsにするとすべて置換 これは便利!! $ vim ../../.zshrc $ !:s/zsh/vim !n n番目のコマンドを実行。 hisotry | grep hogeして確認してから使うなど*1 代わりの名前系(単語指示子、というらしい) 使うケースは多い。 $ ls /etc/hoge/fuga/ $ cd !^ とか。!^が最初の引数、!$で最後、!:nでn番目、!*ですべ
歳のせいか最近記憶力が落ちてるので補完に頼ってみることにした。 以下を行なうにはbash-completionパッケージが必要です。 macportsだと sudo port install bash-completionでインストールされるはず。 バージョン1 とりあえず、サブコマンドを全部登録してみました版 _gisty() { COMPREPLY=(list post private_post sync sync_delete pull_all about help) } complete -F _gisty gisty上記を/opt/local/etc/bash_completion.d/の配下にgistyという名前で保存 以下のように設定ファイルを読み込み $ . /opt/local/etc/bash_completion"gisty "と打ってtabを押すと about li
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く