有时我会忘记相对路径,当我找到文件的位置时,我输入的是:
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将光标跳转到行首。