Работа с история на команди на 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 .