Раскрыть подоболочку перед ее выполнением?

Раскрыть подоболочку перед ее выполнением?

Я часто запускаю команды с использованием подоболочек и иногда хочу, чтобы подоболочки были развернуты перед тем, как что-то запустить. Таким образом я могу проверить, что я делаю, и, возможно, отредактировать то, что должно произойти.

Например, как мне раскрыть следующую командную строку перед ее запуском, чтобы я мог редактировать результаты подоболочки?

например

$ 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, что очень похоже:

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