Я часто запускаю команды с использованием подоболочек и иногда хочу, чтобы подоболочки были развернуты перед тем, как что-то запустить. Таким образом я могу проверить, что я делаю, и, возможно, отредактировать то, что должно произойти.
Например, как мне раскрыть следующую командную строку перед ее запуском, чтобы я мог редактировать результаты подоболочки?
например
$ find -name "test.txt"
/tmp/test.txt
$ mv $(!!) /tmp/new.txt
Я бы хотел увидеть расширенную подоболочкудоЯ запускаю команду, например, так:
$ mv /tmp/test.txt /tmp/new.txt
Есть ли способ это сделать?
решение1
shell-expand-line
( \e\C-e
) расширяет возможности подстановки команд в bash.
$ bind -p|grep shell-ex
"\e\C-e": shell-expand-line
$(!!)\e\C-e
снова запустит предыдущую команду и вставит вывод:
"\eo": "$(!!)\e\C-e"
Он также расширяет другие подстановки команд, но такой команды, как , нет shell-expand-word
.
В bash 4.0 или более поздней версии вы также можете включить globstar
, ввести **/file.txt
и использовать glob-complete-word
( \eg
) или glob-expand-word
( \C-x*
).
решение2
Вот удобный трюк — добавьте эту строку в ~/.inputrc (создав файл при необходимости):
Control-x: shell-expand-line
Обратите внимание, что вы также можете выполнить одно из следующих действий, чтобы расширить только историю, или свои псевдонимы, или и то, и другое:
Control-x: история-развернуть-строку
или
Control-x: псевдоним-развернуть-строку
или
Control-x: история-и-псевдоним-развернуть-строку
Это было почерпнутоиз этого блога, иэтот вопрос на SuperUser, что очень похоже: