Як використовувати свою Bash історію в терміналі Linux або macOS
Оболонка bash - це стандартне середовище терміналу, включене до більшості дистрибутивів Linux, включене в macOS, і доступне для встановлення на Windows 10. Він запам'ятовує команди, які ви вводите, і зберігає їх у файлі історії. Ви, напевно, знаєте кілька основ історії Баш, але це набагато потужніше, ніж ви могли б зрозуміти.
Гарячі клавіши
Щоб прокрутити вашу історію bash, ви можете скористатися кількома корисними сполученнями клавіш. Натисніть ці комбінації клавіш і команди, які ви раніше використовували, з'являться у запиті.
- Стрілка вгору або Ctrl + P: Перейти до попередньої команди в історії. Натискайте клавішу кілька разів, щоб пройти по командах, які ви використовували.
- Стрілка вниз або Ctrl + N: Перехід до наступної команди в історії. Натискайте клавішу кілька разів, щоб перейти вперед через команди, які ви використовували.
- Alt + R: Відмінити будь-які зміни команди, яку ви витягли з історії, якщо ви редагували її на поточному рядку.
Bash також має спеціальний режим "відкликання", який можна використовувати для пошуку команд, які ви раніше виконували, а не прокручувати їх по одному.
- Ctrl + R: Нагадаємо останню команду, що відповідає наведеним символам. Натисніть цю комбінацію клавіш і почніть вводити текст, щоб виконати пошук у вашій історії bash для команди.
- Ctrl + O: Запустіть команду з Ctrl + R.
- Ctrl + G: Залиште режим пошуку історії без запуску команди.
Переглянути свою історію помилок
Можна надрукувати всю історію bash на екрані, виконавши одну команду:
історія
Ви побачите список всіх команд у вашій історії bash, а також номер зліва від кожного. Команда з "1" поруч з нею є найдавнішою командою у вашій історії bash, тоді як команда з найбільшим числом є найостаннішою..
Ви можете зробити все, що завгодно, з виходом. Наприклад, ви можете передати її до grep
команда для пошуку історії команд.
історія | grep your_search
Ви також можете передати його до хвіст
Щоб переглянути лише невелику кількість запущених команд. Наприклад, наступна команда показуватиме останні 5 записів у вашій історії.
історія | хвіст -5
Запускати команди з вашої історії
Bash може швидко "розширити" попередні команди або розширити їх і змінити їх. Ця функція відома як "розширення історії" і використовує знак оклику, відомий як "вибух". Просто введіть їх у відповідь і натисніть клавішу Enter, щоб запустити їх, як і будь-яку іншу команду.
Щоб запустити певну команду зі своєї історії за її номером, виконайте таку команду:
!#
Наприклад, скажімо, ви хочете запустити 12-ю команду з вашої історії bash. Це команда з "12" ліворуч від неї, коли ви запускаєте історія
команду. Ви повинні ввести наступну команду.
!12
Щоб повторно виконати останню виконану команду, введіть наступну. Це має такий самий ефект, як натискання стрілки вгору один раз, щоб переглянути попередню команду, а потім натиснути клавішу Enter.
!!
Ви також можете звернутися до команди певну кількість ліній назад. Наприклад, !-2
буде виконувати другу команду, яку ви виконали. !!
означає те ж саме, що і !-1
.
Це розширення працює в будь-якому місці лінії. Ви можете додати все, що вам подобається, до або після !!
або будь-який з інших виразів у цьому розділі. Наприклад, ви можете ввести наступну команду для повторного запуску останньої команди sudo
, надання йому привілеїв root. Це особливо корисно, якщо ви забули додати sudo
перед запуском команди.
sudo !!
Або, наприклад, можна повторно виконати попередню команду і провести її виведення у grep для пошуку деякого тексту.
!! | grep text
Щоб знайти команду в історії та запустити її, введіть наступне. Це запускатиме останню команду, яка відповідає вказаному тексту:
!текст
Отже, якщо ви нещодавно запустили команду, що починалася з пінг
, Ви можете запустити наступну команду для її пошуку. Це призведе до попереднього пошуку в історії, знайде останню команду, яка починається з "pi
"І негайно запустити його:
!pi
Можна додати a : стор
до будь-якого з перерахованих вище розширень і bash роздрукує команду на термінал, не запускаючи її. Це корисно, якщо потрібно підтвердити вибір правильної команди перед її запуском.
!12: с
!!: стор
!текст: стор
Повторне використання аргументів з вашої історії
Bash також дозволяє запускати нову команду, але використовувати аргументи з попередніх команд в історії. Це допоможе вам швидко використати довгі або складні аргументи без необхідності повторно вводити їх.
команда! $
Наприклад, скажімо, ви запустили команду touch / home / chris / деякий_файл_ім'я_вона_домен_вона_типу
. Тепер потрібно виконати команду nano / home / chris / деякий_попередній_ім'я_вона_домен
. Замість того, щоб набирати все це з нуля, можна запустити:
nano! $
The !$
зробить bash автоматично заповненням останнього аргументу з попередньої команди.
Це лише заповнює останній аргумент. Отже, якщо ви працюєте ping google.com -c 4
а потім запустіть ping! $
, це просто розшириться до "ping 4
“.
Щоб виправити цю ситуацію, можна використовувати наступний трюк, щоб розширити перший аргумент на рядку, а не на останньому:
команда! ^
Отже, якщо ви побігли ping google.com -c 4
а потім побіг ping! ^
, bash розширив би це на "ping google.com "
.
Щоб заповнити всі аргументи, використані в попередній команді, а не лише один аргумент, використовуйте наступне:
команда! *
Отже, якщо ви побігли ping! *
замість цього bash буде автоматично заповнювати всі аргументи, які ви використовували в попередній команді.
Ви можете використовувати той самий трюк, який ви використовуєте для виконання команд з вашої історії, щоб отримати аргументи з них. Просто використовуйте наступну форму.
команда! abc: #
Наприклад, ми запустили команду sudo ім'я хосту ubuntu
раніше. Якщо ми виконаємо наступну команду, bash буде шукати назад по історії, щоб знайти останню команду, що починається з введених нами літер, і заповнити вказаний аргумент. Отже, якщо ми запустимо echo! su: 2
, bash буде шукати назад, щоб знайти останню команду, що починається з "su
"І заповніть його другий аргумент, який є"ubuntu
“.
Інші трюки працюють, як ви могли очікувати. Наприклад, замінюючи номер зірочкою, відомий як шаблон, викликає bash заповнення всіх аргументів з команди:
команда! abc: *
Перезапустіть попередню команду і змініть її
Bash також дозволяє повторно виконати попередню команду і вказати те, що потрібно змінити. Це може бути корисним для виправлення помилки в команді. Наприклад, наступна команда повторно виконає попередню команду, замінивши текст “abc
"В ньому з текстом"xyz
“.
^ abc ^ xyz
Наприклад, якщо ви випадково побігли ping gogle.com
, потім можна запустити ^ gog ^ goog
і bash буде виконувати команду ping google.com
замість цього.
Де зберігається ваша історія і як її очистити
За замовчуванням bash оболонка зберігає історію команд, запущених у файлі історії вашого облікового запису в ~ / .bash_history. Наприклад, якщо ваше ім'я користувача bob, ви знайдете цей файл за адресою /home/bob/.bash_history.
Оскільки ваша історія зберігається у файлі, вона зберігається між сесіями. Ви можете запустити деякі команди, вийти, повернутися на наступний день, і ці команди все одно будуть у вашому файлі історії, готові до перегляду та використання. Кожен обліковий запис користувача має власний файл історії з окремою історією команд.
Щоб очистити історію bash, можна запустити таку команду. При цьому стирається вміст файлу .bash_history облікового запису користувача:
історія -c
За промовчанням Bash запам'ятовує лише обмежену кількість команд, запобігаючи збільшенню файлу історії. Кількість записів історії bash запам'ятовується контролем HISTSIZE
змінної. За замовчуванням зазвичай 500 або 1000 записів. Ви можете виконати наступну команду, щоб переглянути розмір історії bash у вашій системі.
echo $ HISTSIZE
Щоб встановити нульову історію, виконайте таку команду.
HISTSIZE = 0
Для поточного сеансу bash не зберігатиме жодних записів історії, якщо не виконати команду HISTSIZE = 1000
щоб повернути його до певної кількості записів.
Як ігнорувати простори і дублікати
Bash дозволяє ігнорувати записи історії, які починаються з пробілу, якщо ви встановите значення HISTCONTROL
змінна на ignorespace.
HISTCONTROL = ignorespace
Введіть пробіл перед командою, перш ніж запустити його в оболонці bash, і команда буде працювати нормально, але не відображатиметься в історії, якщо ви включили цю змінну. Це дозволяє зберігати історію трохи чистою, вибираючи запуск команд без їх появи в історії.
Bash також дозволяє ігнорувати повторювані команди, які можуть перешкодити вашій історії. Щоб зробити це, встановіть HISTCONTROL
до ignoredups.
HISTCONTROL = ignoredups
Для використання обох ignorespace
і ignoredups
функція, встановіть HISTCONTROL
змінна на ignoreboth.
HISTCONTROL = ignoreboth
Зауважте, що встановлені змінні bash будуть збережені лише для поточного сеансу. Вам потрібно буде додати їх до файлу .bashrc облікового запису користувача, щоб ці значення автоматично встановлювались у кожному запущеному сеансі bash, якщо ви віддаєте перевагу.
Оболонка bash є складним інструментом з набагато більше можливостей, ніж ці. Ознайомтеся з розділами Bash History and Expansion у офіційному довіднику, який містить докладнішу інформацію та інші передові трюки, які можна використовувати.