コマンドラインから `ls` の出力を実行するにはどうすればよいでしょうか?

コマンドラインから `ls` の出力を実行するにはどうすればよいでしょうか?

時々、相対パスを忘れてしまい、ファイルの場所を追跡するまでに、次のように入力することがあります。

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カーソルが行の先頭にジャンプすることです。

関連情報