如何从命令行执行`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/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将光标跳转到行首。

相关内容