
時々、相対パスを忘れてしまい、ファイルの場所を追跡するまでに、次のように入力することがあります。
Cris-Mac-Book-2:weird cris$ ls ../../../
Icon? Research Support
Cris-Mac-Book-2:weird cris$ ls ../../../Support
Fourganizical PicoCryptical SupportPlan.txt
MoneyProjectical Qwontical Testcomms
OSICAL StanTechStatistical todo
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical
S cs mini php py readme
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py
このスクリプトを実行するには、←コマンドの先頭に戻るまで を押し、python
に置き換えますls
。
私がこの長時間ホールドをするとき←(よくあるようですが)、いつも考えているのは、コマンド文字列を編集したり、前のコマンドの出力を実行したりするより高速な方法が必要です。
それで、bashのスーパーユーザーとしての資格はないのですが、パイプls の Python への出力は、意図したとおりに動作しませんでした。
Cris-Mac-Book-2:weird cris$ ls ../../../Support/PicoCryptical/py/StanTechPico.py | python
File "<stdin>", line 1
../../../Support/PicoCryptical/py/StanTechPico.py
^
SyntaxError: invalid syntax
Cris-Mac-Book-2:weird cris$
そこで質問です。STDOUT
前のコマンドの出力を新しいコマンドの引数の位置に配置するにはどうすればよいでしょうか?
答え1
^ls^python
すぐに必要な処理を実行します( を置き換えて前のコマンドを繰り返しpython
ますls
)
答え2
あなたが本当に尋ねているのかどうかはわかりません
しかし、私が本当に知りたいのは、コマンド ラインから、あるコマンドの STDOUT 出力を別のコマンドの引数の位置に配置する方法だと思います。
役に立つかもしれないと思うのは$_
$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_
は、$_
前に実行したコマンドの最後の引数に置き換えられます。
見るhttp://tldp.org/LDP/abs/html/内部変数.html
しかし、stdoutを他のコマンドの引数として使いたい場合は、xargs
次のようにします(http://linux.die.net/man/1/xargs)
$ ls /tmp/long/path/which/contains/file | xargs python
答え3
バックティックを使用したことがありますか?
python `ls ../../../somefile`
python
の出力をls
引数として呼び出します。
ただし、それがあなたが尋ねていることであるかどうかは完全にはわかりません。
答え4
Andrew の回答以外に知っておくとよいコツは、Ctrl+でaカーソルが行の先頭にジャンプすることです。