Історія баш може зробити багато корисних справ, і пошук із Strg-rцим згадуваним Террі Ван є важливим серед них. Але також можна зробити саме те, про що ви просили.
Ви можете повторити попередню команду за допомогою !!. За допомогою цього ви також можете редагувати попередню команду. Наприклад, ви забули отримати кореневі привілеї для команди
apt-get install a-long-list-of-packages
вам не доведеться вводити все це знову. Замість цього просто зателефонуйте
sudo !!
Якщо ви хочете повторно виконати команду на певній позиції зі своєї історії, ви також можете використовувати !, наприклад
!3
щоб знову виконати команду в положенні 3. Будьте в курсі, що це рахується зверху. Отже, якщо ви зберігаєте 500 команд у своїй історії, це !1було б "500 команд тому". Ви також можете використовувати від’ємні числа. Наприклад
!-2
повторно виконає другу останню команду.
Ви також можете повторно виконати останню команду, розпочату з типу "рядок"
!apt-
який би повторно зробив останній рядок, що починався з "apt-". Якщо ви хочете останню команду, де рядок з'явився в будь-якому місці рядка, ви можете використовувати щось на зразок
!?pt-ge
Є ще цікаві речі, якими може займатися історія баш. Тільки щоб створити враження про широкий спектр можливостей, ви можете спеціально отримати доступ до параметра команди з історії. Так
!-5:3:p
буде надрукувати третій параметр до п'ятого з останньої команди.
EDIT: Що стосується коментаря Руді нижче, стандартні параметри цього розширення історії башів справді виконуються безпосередньо. Це, ймовірно , краще за все можна описати таким чином: Виклик , як !-3буде замінена оболонкою з третьої останньою командою з історії та потім ваш вхід (з заміною) виконується. Отже, якщо ви набираєте !-3і натискаєте, ENTERі третя остання команда була ls ~, це фактично те саме, що якби ви ls ~знову ввели і натиснули ENTER«самостійно».
Якщо ви цього не хочете, ви можете встановити параметр оболонки histverify. Для налаштування та зняття параметрів оболонки ви можете прочитати shoptкоманду. З histverifyнабором виклик, як-от !-3записує лише заміну з вашої історії у ваш командний рядок, але не виконує її безпосередньо. Ви повинні, так би мовити, натискати на найважливіше ENTER- або утримайтеся від цього, якщо захочете.