Работа с история на команди на bash
Задаване на размера на историята
Броят на съхранените команди се определя от две променливи: HISTSIZE и HISTFILESIZE. Първата определя броя на командите, съхранявани в паметта, втората - във файла. Подходящо е да ги инсталирате в
/.bachrc. Такива стойности ми се струват оптимални:
Задаване на метода за запазване
По подразбиране всеки екземпляр на bash пренаписва историята. Тоест, ако стартирате два терминала, направите нещо в тях и след това ги затворите, тогава историята ще бъде запазена само от последния затворен. (Това ще замени историята на първото затворено.) Това е много неудобно и може лесно да се поправи със следната команда:
което също е подходящо да се напише
Пет последни команди:
В комбинация с grep:
Но всичко това е само поговорка.
Изпълнение на команди от историята по номер
Удивителният знак ще изпълни командата с дадения номер. Пример:
Както можете да видите от последната команда, заместването на удивителен знак може да бъде част от друга команда. Може да се използва в тръба или друг контекст. Примери:
Числото може да бъде относително, от края:! -2. Специална кройка ! - последната команда.
Придвижване през историята
Всеки знае, че можете да се придвижвате в историята с клавишите със стрелки. Но понякога има ситуации, когато тези ключове не са налични, не работят правилно или просто липсват (имах това, когато се свързвах с някакъв ssh клиент от iPad). В този случай е полезно да знаете, че превъртането работи на Ctrl-p и Ctrl-n .
Търсене по история
Режимът на търсене се активира от Ctrl-r. За да намерите следващото съвпадение, натиснете отново Ctrl-r. За да се придвижите според мачовете от другата страна, има клавишна комбинация Ctrl-s .
Проблемът е, че Ctrl-s в повечето терминали ги кара да спят. За да се събудите от сън, натиснете Ctrl-q. За да изключите съня, има команда:
История на търсенето в началото на команда
Bash (или по-скоро линия за четене) поддържа много удобен стил на търсене - чрез първите символи на команда. За съжаление този механизъм не се предлага по подразбиране. За да го активирате, трябва да пишете
/.inputrc нещо подобно:
Сега можете да напишете началото на командата и да натиснете Shift-. И за вас ще бъде намерена последната команда от историята със същото начало. Стрелките с клавиша Shift вече ви позволяват да се движите по мачове.
Естествено, можете да персонализирате всички други клавиши.
Замествания на команди и промени
Вече видяхте три основни замествания:
- ! - последната команда
- !n - n-ият отбор в историята (номериран)
- !-n - n-тата команда от края
След удивителен знак можете да посочите началото на подниза на командата.
!ls - последната команда ls (с всички аргументи).
Можете да посочите подниз за търсене:
!?енкодер? последна команда с подниза на кодера .
Операции с една дума
Всички думи (параметри, разделени с интервали) са достъпни чрез модификатора: (двоеточие). Пример:
В този случай: когато работим с последната команда, можете да пропуснете един удивителен знак и двоеточие:
Съществуват и често срещани съкращения: първият аргумент е ^, последният е $, всичко е *. Това се отнася до параметрите на командата. Без да се вземе предвид самият екип.
Манипулиране на пътища и имена на файлове
Следващото ниво на модификатори позволява минимален контрол върху имената на файловете.
Модификатор: t дава достъп до името на файла. Това е удобно да се каже в следния сценарий:
Вие се позовавате на определен файл, посочвайки пълния път:
След това отидете в директорията с този файл
Изпълнявате някои други команди и след това решавате да редактирате файла. Тогава можете да напишете така:
Тоест, намирате последната команда за котка (! Cat) в историята, вземате последния й аргумент: $ и оставяте само името на файла от нея: t .
Последната команда ще се промени в директорията/etc .