Cri*_*low 2 redirection command-line
有时我会忘记我的相对路径,当我找到文件的位置时,我是否输入了:
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
Run Code Online (Sandbox Code Playgroud)
现在运行这个脚本,我发现自己?一直按直到回到命令的开头,然后替换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$
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:如何将STDOUT
前一个命令的输出放在新命令的参数位置?
^ls^python
将执行您的燃眉之急(重复前面的命令,替换python
为ls
)
我不确定你是否真的在问
但我想我真正想要的是知道如何从命令行将一个命令的 STDOUT 输出放在另一个命令的参数位置?
我认为你可能会觉得有用的是使用 $_
$ ls /tmp/long/path/which/contains/file
/tmp/long/path/which/contains/file
$ python $_
Run Code Online (Sandbox Code Playgroud)
将$_
替换为您执行的上一个命令的最后一个参数。
见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
Run Code Online (Sandbox Code Playgroud)