2017-02-12 9 views
1

最後の入力を再度実行するために、double bangのbash/shellスクリプトで行を開始するにはどうすればよいですか?bashスクリプトで行を始める!! (double bang)

最後に実行したプログラムの過去の出力を新しいプログラムにパイプしたいと思っています。たとえば、最後にls -lを実行してこのスクリプトを実行すると、ls -l<some program here>にパイプして操作したいと考えています。

#! /bin/sh 
!! | <some program here> 

私は

取得しています!!:ない はあなたが本当にスクリプトで再度コマンドを実行したい場合は、あなたが得るために~/.bash_historyファイルにアクセスすることができます

+0

私が知っている限り、バンバンは最後に実行したコマンドを(対話モードで)再度実行します。これは適切なアプローチではないかもしれません。ファイルを削除してコマンドを実行すると、既に削除されたファイルを再度削除しようとしていたため、別の出力が得られます。 lsの出力をあなたのプログラムにパイプすると、次のようになります: 'ls -l | 。/ yourscript.sh'。スクリプトは実行可能でなければならないことに注意してください。 – redxef

+0

ヒストリ拡張を利用できるようにする必要があります(これは '/ bin/sh'にはありません)、有効にする必要があります(非対話シェルではデフォルトではありません)。 – chepner

+0

皆さんありがとうございます。最初のコマンドを実行した後にmyscript.shを実行したかったとします。履歴から行にアクセスし、myscript.shで再度実行する方法はありませんか? – userJoe

答えて

0

ました歴史(複数の端末ウィンドウが開いている場合にはバグかもしれません)。プログラムを含むシェルスクリプトに

あなただけのコマンドの出力をしたい場合は、パイプ、それは、その後、あなたのコマンドは次のようになります。

<yourcommand> | ./yourscript.sh

とスクリプトは、このようになります。 :

#!/bin/sh 
sed 's/a/b/g' <&0 

sedコマンドにスクリプトの<&0一部パイプSTDIN。

関連する問題