Как да използвате историята на Баш в терминала за Linux или MacOS

Съдържание:

Как да използвате историята на Баш в терминала за Linux или MacOS
Как да използвате историята на Баш в терминала за Linux или MacOS

Видео: Как да използвате историята на Баш в терминала за Linux или MacOS

Видео: Как да използвате историята на Баш в терминала за Linux или MacOS
Видео: Распаковка Apple Watch Series 8 и SE2! Вот теперь реально все очень плохо! - YouTube 2024, Април
Anonim
Башевата обвивка е стандартната термична среда, включена в повечето Linux дистрибуции, включена в MacOS и налична за инсталиране на Windows 10. Тя запомня командите, които въвеждате, и ги съхранява в исторически файл. Вероятно знаете няколко основни неща за историята на Баш, но това е много по-мощно, отколкото можете да осъзнаете.
Башевата обвивка е стандартната термична среда, включена в повечето Linux дистрибуции, включена в MacOS и налична за инсталиране на Windows 10. Тя запомня командите, които въвеждате, и ги съхранява в исторически файл. Вероятно знаете няколко основни неща за историята на Баш, но това е много по-мощно, отколкото можете да осъзнаете.

Комбинация от клавиши

За да преминете през историята на баш, можете да използвате няколко от много полезни клавишни комбинации. Натиснете тези бързи команди и командите, които сте използвали преди, ще се появят в подканата.

  • Стрелка нагоре или Ctrl + P: Отворете предишната команда в историята си. Натискайте клавиша няколко пъти, за да вървите назад през командите, които сте използвали.
  • Стрелка надолу или Ctrl + N: Преминете към следващата команда в историята си. Натиснете бутона няколко пъти, за да вървите напред чрез командите, които сте използвали.
  • Alt + R: Върнете всички промени в командата, която сте изтеглили от историята си, ако сте я редактирали на текущия ред.

Баш има и специален режим "изземване", който можете да използвате, за да търсите команди, които преди това сте изпълнявали, вместо да ги превъртате един по един.

  • Ctrl + R: Извикайте последната команда, съответстваща на символите, които предоставяте. Натиснете този пряк път и започнете да пишете, за да търсите в историята на bash за команда.
  • Ctrl + O: Изпълнете командата, която намерихте с Ctrl + R.
  • Ctrl + G: Оставете режима за търсене на историята без да изпълнявате команда.
Image
Image

Преглеждайте историята на Баш

Можете да отпечатате цялата си история за баш на екрана, като изпълните една-единствена команда:

history

Ще видите списък с всички команди в историята на Баш, заедно с число отляво на всяка от тях. Командата с "1" до нея е най-старата команда в историята на баш, докато командата с най-голям номер е най-скорошната команда.

Можете да направите каквото ви харесва с изхода. Например, можете да я насочите към
Можете да направите каквото ви харесва с изхода. Например, можете да я насочите към

grep

команда за търсене в историята на командите ви.

history | grep your_search

Бихте могли да го насочите и към
Бихте могли да го насочите и към

tail

за да видите само малък брой от последните команди, които сте изпълнили. Например следната команда ще покаже последните 5 записа в историята ви.

history | tail -5

Image
Image

Изпълнявайте команди от вашата история

Баш може бързо да "разшири" предишните команди или да ги разшири и модифицира. Тази функция е известна като "разширяване на историята" и използва удивителен знак, известен като "взрив". Просто ги въведете в подканата и натиснете Enter, за да ги изпълните, както бихте изпълнили друга команда.

За да изпълните конкретна команда от историята си по нейния номер, използвайте следната команда:

!#

Например, да речем, че искате да изпълните 12-та команда от вашата история на бас. Това е командата с "12" отляво на него, когато стартирате

history

команда. Ще въведете следната команда.

!12

За да стартирате отново последната команда, която сте извършили, въведете следното. Това има същия ефект като еднократно натискане на стрелката за нагоре, за да видите предишната команда и след това да натиснете Enter.
За да стартирате отново последната команда, която сте извършили, въведете следното. Това има същия ефект като еднократно натискане на стрелката за нагоре, за да видите предишната команда и след това да натиснете Enter.

!!

Можете също да препратите към команда определен брой линии обратно. Например,

!-2

ще изпълни втората команда, за да продължи командата.

!!

означава същото нещо като

!-1

This expansion works anywhere on the line. You can add anything you like before or after
This expansion works anywhere on the line. You can add anything you like before or after

!!

или някой от другите изрази в този раздел. Например, можете да въведете следната команда, за да извършите повторно последната команда, през която преминахте

sudo

давайки й права на root. Това е особено полезно, ако забравите да го добавите

sudo

преди да изпълните команда.

sudo !!

Или, например, бихте могли да стартирате повторно предишната команда и да я изведете, за да търсите в текст.

!! | grep text

За да търсите команда в историята си и да я стартирате, въведете следното. Това ще стартира последната команда, съответстваща на текста, който посочвате:
За да търсите команда в историята си и да я стартирате, въведете следното. Това ще стартира последната команда, съответстваща на текста, който посочвате:

!text

Така че, ако наскоро сте избрали команда, която е започнала

ping

можете да изпълните следната команда, за да я потърсите. Това ще търси обратно в историята ви, ще намерите последната команда, която започва с"

pi

И веднага го стартирайте:

!pi

Image
Image

Можете да добавите a

:p

към някое от горепосочените разширения и bash ще отпечата командата към терминала, без да го изпълнява. Това е полезно, ако искате да потвърдите, че избирате правилната команда, преди да я изпълните.

!12:p

!!:p

!text:p

Image
Image

Повторете използването на аргументи от вашата история

Bash също ви позволява да изпълните нова команда, но използвайте аргументи от предишни команди в историята си. Това може да Ви помогне бързо да използвате повторно дълги или сложни аргументи, без да ги налагате отново.

command !$

Да приемем например, че сте изпълнявали командата

touch /home/chris/some_long_file_name_you_dont_want_to_type_again

Сега искате да изпълните командата

nano /home/chris/some_long_file_name_you_dont_want_to_type_again

Вместо да напишете цялото нещо от нулата, можете да изпълните:

nano !$

Най-

!$

би направил bash автоматично да запълни последния аргумент от предишната ви команда.

Това само запълва последния аргумент. Така че, ако бягате
Това само запълва последния аргумент. Така че, ако бягате

ping google.com -c 4

и след това тичам

ping !$

това просто ще се разшири до"

ping 4

“.

За да коригирате тази ситуация, можете да използвате следния трик, за да разширите първия аргумент на линията, а не последния:

command !^

Така че, ако сте избягали

ping google.com -c 4

и след това избяга

ping !^

Баш ще разшири това до"

ping google.com'

За да попълните всички аргументи, използвани в предишната команда вместо само един аргумент, бихте използвали следното:
За да попълните всички аргументи, използвани в предишната команда вместо само един аргумент, бихте използвали следното:

command !*

Така че, ако сте избягали

ping !*

вместо това, bash ще попълни автоматично всички аргументи, които сте използвали в предишната команда.

Можете да използвате същия трик, който използвате, за да стартирате команди от историята си, за да получите аргументи от тях. Просто използвайте следния формуляр.
Можете да използвате същия трик, който използвате, за да стартирате команди от историята си, за да получите аргументи от тях. Просто използвайте следния формуляр.

command !abc:#

Например, изпълнявахме командата

sudo hostname ubuntu

по-рано. Ако изпълним следната команда, bash ще търси обратно в историята, за да открие последната команда, която започва с буквите, които въвеждаме, и попълва аргумента, който посочваме. Така че, ако бягаме

echo !su:2

bash ще търси обратно, за да открие последната команда, която започва с"

su

"И попълнете втория си аргумент, който е"

ubuntu

“.

Други трикове работят, както може да очаквате. Например, замяната на числото със звездичка, известна като заместваща марка, води до това, че bash попълва всички аргументи от командата:

command !abc:*

Image
Image

Пренаредете предишната команда и я променете

Баш също така ви позволява да повторите предишната команда и да посочите нещо, което трябва да бъде променено. Това може да бъде полезно за коригиране на печатна грешка в командата. Например следната команда ще повтори предишната команда, замествайки текста"

abc

"В него с текста"

xyz

“.

^abc^xyz

Например, ако случайно сте избягали

ping gogle.com

тогава можете да бягате

^gog^goog

и баш щеше да изпълни командата

ping google.com

вместо.

Image
Image

Къде се съхранява историята ви и как да я изчистите

Файлът bash съхранява историята на изпълняваните от вас команди във файла с историята на потребителския ви профил на ~ /.bash_history по подразбиране. Например, ако вашето потребителско име е bob, ще намерите този файл в /home/bob/.bash_history.

Тъй като историята ви се съхранява във файл, тя продължава да съществува между сесиите. Можете да пуснете команди, да излезете от него, да се върнете на следващия ден и тези команди пак да са в историята ви, готови за преглед и използване. Всеки потребителски акаунт има свой собствен файл с история с отделна история на командите.

За да изчистите историята на bash, можете да изпълните следната команда. Това изтрива съдържанието на файла.bash_history на потребителския ви профил:

history -c

Баш само помни ограничен брой команди по подразбиране, предотвратявайки ръста на файла с историята. Броят на записите за историята, които запомнят, се контролира от
Баш само помни ограничен брой команди по подразбиране, предотвратявайки ръста на файла с историята. Броят на записите за историята, които запомнят, се контролира от

HISTSIZE

променлива. По подразбиране обикновено са 500 или 1000 записа. Можете да изпълните следната команда, за да видите размера на историята на bash на вашата система.

echo $HISTSIZE

За да зададете историята си до нула, изпълнете следната команда.

HISTSIZE=0

За текущата сесия, bash няма да съхранява никакви записи в историята, освен ако не изпълни команда като

HISTSIZE=1000

да го зададете обратно на определен брой записи.

Image
Image

Как да се игнорират пространства и дубликати

Баш ви позволява да игнорирате записите в историята, които започват с интервал, ако зададете

HISTCONTROL

променлива до

ignorespace.

HISTCONTROL=ignorespace

Въведете интервал преди команда, преди да го пуснете в shell баш и командата ще се изпълнява нормално, но няма да се появи в историята ви, ако сте активирали тази променлива. Това ви позволява да запазите историята си малко по-чиста, като изберете да изпълнявате команди, без да се появяват в историята ви.

Баш също така ви позволява да пренебрегвате дублиращите се команди, които могат да объркат историята ви. За да направите това, задайте
Баш също така ви позволява да пренебрегвате дублиращите се команди, които могат да объркат историята ви. За да направите това, задайте

HISTCONTROL

да се

ignoredups.

HISTCONTROL=ignoredups

Използване на двете
Използване на двете

ignorespace

и

ignoredups

функция, задайте

HISTCONTROL

променлива до

ignoreboth.

HISTCONTROL=ignoreboth

Обърнете внимание, че зададените от вас баш променливи ще продължат само за текущата сесия. Трябва да ги добавите във файла.bashrc на потребителския си профил, за да зададете тези стойности автоматично във всяка базова сесия, която започнете, ако предпочитате това.

Препоръчано: