
Иногда я забываю относительные пути, и к тому времени, как я нахожу, где находится файл, я набираю:
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перемещает курсор в начало строки.