Как выполнить вывод `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перемещает курсор в начало строки.

Связанный контент