Розгорнути передплановий пакет перед його виконанням?


11

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

Наприклад, як я можу змусити розширити наступний командний рядок перед тим, як його запустити, щоб я міг редагувати результати підскладок?

напр

$ find -name "test.txt" 
/tmp/test.txt

$ mv $(!!) /tmp/new.txt

Мені хотілося б, щоб перед запуском команди команда розширилася , наприклад:

$ mv /tmp/test.txt /tmp/new.txt

Чи є спосіб це зробити?


1
zsh може це зробити, але я впевнений, що баш не може. У zsh, якщо у вас є курсор на параметр, і натисніть TAB, він розширить його
Патрік

Я з тих пір перейшов на zshце, і це здорово і робить це, як ви пропонуєте ... приємний рада! Оригінальну відповідь я залишу тут, як це було bashпитання.
Бред Паркс

Відповіді:


5

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: оболонка-розширення-лінія

Зауважте, ви також можете скористатися одним із наведених нижче способів, щоб розширити лише історію, або псевдоніми, або обидва:

Control-x: історія-розширення-рядок

або

Control-x: псевдонім-розширення-рядок

або

Control-x: історія та псевдонім-розширення-лінія

Про це написано з цього блогу , і це питання про SuperUser , яке дуже схоже:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.