Башевата обвивка е стандартната термична среда, включена в повечето Linux дистрибуции, включена в MacOS и налична за инсталиране на Windows 10. Тя запомня командите, които въвеждате, и ги съхранява в исторически файл. Вероятно знаете няколко основни неща за историята на Баш, но това е много по-мощно, отколкото можете да осъзнаете.
За да преминете през историята на баш, можете да използвате няколко от много полезни клавишни комбинации. Натиснете тези бързи команди и командите, които сте използвали преди, ще се появят в подканата.
Баш има и специален режим "изземване", който можете да използвате, за да търсите команди, които преди това сте изпълнявали, вместо да ги превъртате един по един.
Можете да отпечатате цялата си история за баш на екрана, като изпълните една-единствена команда:
история
Ще видите списък с всички команди в историята на Баш, заедно с число отляво на всяка от тях. Командата с "1" до нея е най-старата команда в историята на баш, докато командата с най-голям номер е най-скорошната команда.
Можете да направите каквото ви харесва с изхода. Например, можете да я насочите към Впиши
команда за търсене в историята на командите ви.
история | grep your_search
Бихте могли да го насочите и към опашка
за да видите само малък брой от последните команди, които сте изпълнили. Например следната команда ще покаже последните 5 записа в историята ви.
история | опашка -5
Баш може бързо да "разшири" предишните команди или да ги разшири и модифицира. Тази функция е известна като "разширяване на историята" и използва удивителен знак, известен като "взрив". Просто ги въведете в подканата и натиснете Enter, за да ги изпълните, както бихте изпълнили друга команда.
За да изпълните конкретна команда от историята си по нейния номер, използвайте следната команда:
!#
Например, да речем, че искате да изпълните 12-та команда от вашата история на бас. Това е командата с "12" отляво на него, когато стартирате история
команда. Ще въведете следната команда.
!12
За да стартирате отново последната команда, която сте извършили, въведете следното. Това има същия ефект като еднократно натискане на стрелката за нагоре, за да видите предишната команда и след това да натиснете Enter.
!!
Можете също да препратите към команда определен брой линии обратно. Например, !-2
ще изпълни втората команда, за да продължи командата. !!
означава същото нещо като !-1
.
Това разширение работи навсякъде по линията. Можете да добавите каквото искате преди или след това!!
или някой от другите изрази в този раздел. Например, можете да въведете следната команда, за да извършите повторно последната команда, през която преминахте Sudo
, давайки й права на root. Това е особено полезно, ако забравите да го добавитеSudo
преди да изпълните команда.
sudo !!
Или, например, бихте могли да стартирате повторно предишната команда и да я изведете, за да търсите в текст.
!! | grep text
За да търсите команда в историята си и да я стартирате, въведете следното. Това ще стартира последната команда, съответстваща на текста, който посочвате:
!текст
Така че, ако наскоро сте избрали команда, която е започнала пинг
, можете да изпълните следната команда, за да я потърсите. Това ще търси обратно в историята ви, ще намерите последната команда, която започва с "пи
"И веднага го стартирайте:
пи!
Можете да добавите a : P
към някое от горепосочените разширения и bash ще отпечата командата към терминала, без да го изпълнява. Това е полезно, ако искате да потвърдите, че избирате правилната команда, преди да я изпълните.
! 12: р
!!: р
! Текст: р
Bash също ви позволява да изпълните нова команда, но използвайте аргументи от предишни команди в историята си. Това може да Ви помогне бързо да използвате повторно дълги или сложни аргументи, без да ги налагате отново.
команда!
Да приемем например, че сте изпълнявали командата докосване / начало / chris / some_long_file_name_you_dont_want_to_type_again
, Сега искате да изпълните командата Нано / Начало / chris / some_long_file_name_you_dont_want_to_type_again
, Вместо да напишете цялото нещо от нулата, можете да изпълните:
nano! $
Най- !$
би направил bash автоматично да запълни последния аргумент от предишната ви команда.
Това само запълва последния аргумент. Така че, ако бягате ping google.com -c 4
и след това тичам ping! $
, това просто ще се разшири до "ping 4
“.
За да коригирате тази ситуация, можете да използвате следния трик, за да разширите първия аргумент на линията, а не последния:
команда! ^
Така че, ако сте избягали ping google.com -c 4
и след това избяга ping! ^
, Баш ще разшири това до "ping google.com "
.
За да попълните всички аргументи, използвани в предишната команда вместо само един аргумент, бихте използвали следното:
команда! *
Така че, ако сте избягали ping! *
вместо това, bash ще попълни автоматично всички аргументи, които сте използвали в предишната команда.
Можете да използвате същия трик, който използвате, за да стартирате команди от историята си, за да получите аргументи от тях. Просто използвайте следния формуляр.
команда! abc: #
Например, изпълнявахме командата sudo hostname ubuntu
по-рано. Ако изпълним следната команда, bash ще търси обратно в историята, за да открие последната команда, която започва с буквите, които въвеждаме, и попълва аргумента, който посочваме. Така че, ако бягаме ехо: 2
, bash ще търси обратно, за да открие последната команда, която започва с "су
"И попълнете втория си аргумент, който е"Ubuntu
“.
Други трикове работят, както може да очаквате. Например, замяната на числото със звездичка, известна като заместваща марка, води до това, че bash попълва всички аргументи от командата:
команда! abc: *
Баш също така ви позволява да повторите предишната команда и да посочите нещо, което трябва да бъде променено. Това може да бъде полезно за коригиране на печатна грешка в командата. Например следната команда ще повтори предишната команда, замествайки текста "абв
"В него с текста"ЮЯ
“.
^ ^ Абв ЮЯ
Например, ако случайно сте избягали ping gogle.com
, тогава можете да бягате ^ ^ Гога GOOG
и баш щеше да изпълни командата ping google.com
вместо.
Файлът bash съхранява историята на изпълняваните от вас команди във файла с историята на потребителския ви профил на ~ / .bash_history по подразбиране. Например, ако вашето потребителско име е bob, ще намерите този файл в /home/bob/.bash_history.
Тъй като историята ви се съхранява във файл, тя продължава да съществува между сесиите. Можете да пуснете команди, да излезете от него, да се върнете на следващия ден и тези команди пак да са в историята ви, готови за преглед и използване. Всеки потребителски акаунт има свой собствен файл с история с отделна история на командите.
За да изчистите историята на bash, можете да изпълните следната команда. Това изтрива съдържанието на файла .bash_history на потребителския ви профил:
история -c
Баш само помни ограничен брой команди по подразбиране, предотвратявайки ръста на файла с историята. Броят на записите за историята, които запомнят, се контролира от HISTSIZE
променлива. По подразбиране обикновено са 500 или 1000 записа. Можете да изпълните следната команда, за да видите размера на историята на bash на вашата система.
echo $ HISTSIZE
За да зададете историята си до нула, изпълнете следната команда.
HISTSIZE = 0
За текущата сесия, bash няма да съхранява никакви записи в историята, освен ако не изпълни команда като HISTSIZE = 1000
да го зададете обратно на определен брой записи.
Баш ви позволява да игнорирате записите в историята, които започват с интервал, ако зададете HISTCONTROL
променлива до ignorespace.
HISTCONTROL = ignorespace
Въведете интервал преди команда, преди да го пуснете в shell баш и командата ще се изпълнява нормално, но няма да се появи в историята ви, ако сте активирали тази променлива. Това ви позволява да запазите историята си малко по-чиста, като изберете да изпълнявате команди, без да се появяват в историята ви.
Баш също така ви позволява да пренебрегвате дублиращите се команди, които могат да объркат историята ви. За да направите това, задайте HISTCONTROL
да се ignoredups.
HISTCONTROL = ignoredups
Използване на двете ignorespace
и ignoredups
функция, задайте HISTCONTROL
променлива до ignoreboth.
HISTCONTROL = ignoreboth
Обърнете внимание, че зададените от вас баш променливи ще продължат само за текущата сесия. Трябва да ги добавите във файла .bashrc на потребителския си профил, за да зададете тези стойности автоматично във всяка базова сесия, която започнете, ако предпочитате това.
Башевата обвивка е сложен инструмент с много повече опции от тези. Консултирайте се с разделите за историята на историята на Баш и разширенията на историята в официалното ръководство за бас, по-подробна информация и други усъвършенствани трикове, които можете да използвате.