如何从命令行执行`ls`的输出?

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)

现在运行这个脚本,我发现自己?一直按直到回到命令的开头,然后替换pythonls.

当我长时间保持?(似乎经常)时,我总是在想,必须有一种更快的方法来编辑命令字符串或执行上一个命令的输出。

因此,并不是真正有资格成为 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前一个命令的输出放在新命令的参数位置?

ido*_*ing 6

^ls^python将执行您的燃眉之急(重复前面的命令,替换pythonls

  • 太棒了! (2认同)
  • 如果只是为了重用最后一个参数,我发现 `python !$` 更容易输入。`^foo^bar` 语法很好,如果你打错了字并且想保留大部分命令,除了一个小的替换(无论它在哪里) (2认同)

Nic*_*ick 6

我不确定你是否真的在问

但我想我真正想要的是知道如何从命令行将一个命令的 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)