TL; DR: alias @@='$($(fc -ln -1) |& tail -1)'
Засоби взаємодії історії Баша не пропонують жодного механізму для вивчення результатів команд. Оболонка цього не зберігає , а розширення історії призначене спеціально для команд, які ви виконуєте, або частин цих команд.
Це залишає підхід до повторної повторної роботи останньої команди та підключення як stdout, так і stderr ( |&) до заміни команд. Відповідь heemayl досягає цього, але його не можна використовувати в псевдонімі, оскільки оболонка виконує розширення історії до розширення псевдонімів, а не після.
Я не можу змусити розширення історії працювати також у функції оболонки, навіть включивши її у функцію set -H. Я підозрюю, !!що функція ніколи не буде розширена, і я не впевнений, до чого вона була б розширена, якби вона була, але зараз я точно не впевнений, чому це не так.
Тому, якщо ви хочете налаштувати такі речі, щоб ви могли це зробити з дуже невеликим набором тексту, вам слід використовувати fcвбудовану оболонку замість розширення історії, щоб витягнути останню команду з історії. Це має додаткову перевагу, що вона працює навіть тоді, коли розширення історії вимкнено.
Як показано в Гордоном Девіссон «s відповіді на створення псевдоніма , що містить розширення історії Баша (на Super User ), $(fc -ln -1)симулює !!. Підключивши це протягом !!в командних heemayl по $(!! |& tail -1) врожайності:
$($(fc -ln -1) |& tail -1)
Це працює як, $(!! |& tail -1)але може містити визначення псевдоніму:
alias @@='$($(fc -ln -1) |& tail -1)'
Після запуску цього визначення або його введення .bash_aliasesабо .bashrcзапуску нової оболонки ви можете просто ввести @@(або те, що ви назвали псевдонімом), щоб спробувати виконати останній рядок виводу з останньої команди.
ek@Io:~$ alias @@='$($(fc -ln -1) |& tail -1)'
ek@Io:~$ evolution
The program 'evolution' is currently not installed. You can install it by typing:
sudo apt-get install evolution
ek@Io:~$ @@
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
evolution-common evolution-data-server evolution-data-server-online-accounts
....