Простой сценарий: я ищу wsdl
файл, потерянный в середине проекта.
$ find -name '*.wsdl'
./some/very/very/long/way/to/some/lost/directory/filename.wsdl
Теперь, когда я знаю, где он находится, я хочу что-то сделать с этим файлом, скажем, отредактировать его. Вместо того, чтобы копировать / вставлять путь позади моей команды, возможно ли использовать путь, возвращенный find
ранее? Также как можно получить доступ к последнему аргументу, который вы набрали, !$
или к вашей последней команде !!
.
Я читал, что это было возможно с $?
, но это только возвращает мне ошибку:0: command not found
$ echo $?
0: command not found
Ответы:
Запустите команду в подстановке команд:
Вывод теперь сохраняется в
output
переменной, которую вы можете использовать столько раз, сколько захотите.источник
$?
не содержит путей.return
в вопросе. Ваш ответ является абсолютно правильным для вышеуказанного вопроса.$?
содержит статус выхода последней командыДля этого не существует специальной переменной bash.
$?
содержит код завершения последней команды (0 = успех,> 0 = код ошибки)Вы можете использовать вывод
find
с-exec
флагом, например так:{}
Заменяется именем файла , найденногоfind
. Это выполнит команду для каждого найденного файла. Если вы хотите выполнить команду со всеми найденными файлами в качестве аргументов, используйте+
в конце следующую строку:Это откроет один экземпляр emacs со всеми найденными .wsdl файлами, открытыми в нем.
Более общее решение - сохранить выходные данные в переменной:
Это работает со всеми командами, а не только найти. Хотя вы также можете использовать
xargs
:источник
$?
вернуть код выхода другой команды? например, ping 1.1.1.1 -w 10; вернуть $?$?
содержит код завершения предыдущей команды, что бы это ни было. Итак, ответ - да.Вот быстрый взлом, который должен делать то, что вы хотите с минимальными нажатиями клавиш, если вы не возражаете, что последняя команда выполняется дважды.
Используйте backtick, аля:
`!!`
например
* edit: я вижу, что выше связанный "возможно дублированный" вопрос также содержит этот ответ. по-прежнему имеет отношение непосредственно к этому, так что оставив его, но извините за обман.
источник
git br | grep
в моем случае)!!
намного проще, чем нажимать клавишу «вверх»? И тогда вы все еще можете увидеть свою команду. Если повторное выполнение команды является приемлемым, я думаю, что просто нажать вверх так же легко (и немного более понятно и прозрачно),