
有時我忘記了我的相對路徑,當我找到文件位置時,我已經輸入了:
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/internalvariables.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
除了安德魯的答案之外,一個需要知道的好技巧是Ctrl+a將遊標跳到行首。