Начална » как да » Как да използваме вашата Bash история в Linux или macOS терминала

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

    Баш черупката е стандартна терминална среда, включена в повечето дистрибуции на Linux, включена в macOS, и достъпна за инсталиране на Windows 10. Тя помни командите, които въвеждате и ги съхранява в исторически файл. Вероятно знаете няколко основи на историята на bash, но това е много по-мощно, отколкото бихте могли да осъзнаете.

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

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

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

    Bash има и специален режим за „извикване“, който можете да използвате, за да търсите команди, които сте изпълнявали по-рано, вместо да превъртате през тях един по един.

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

    Вижте историята на Bash

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

    история

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

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

    история | grep your_search

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

    история | опашка -5

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

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

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

    !#

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

    !12

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

    !!

    Можете също така да се обърнете към команда с определен брой линии обратно. Например, !-2 ще изпълни втората последна команда. !! означава същото като !-1 .

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

    Sudo !!

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

    !! | grep текст

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

    !текст

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

    !пи

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

    !12: стр
    !!: P
    !текст: р

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

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

    команда! $

    Например, да кажем, че сте изпълнили командата докосване / начало / chris / some_long_file_name_you_dont_want_to_type_again . Сега искате да изпълните командата nano / home / chris / някакъв_пълен_файл_и_употреба_на_на_тип. Вместо да пишете всичко от нулата, можете да стартирате:

    nano! $

    Най- !$ би направило bash автоматично попълване на последния аргумент от предишната ви команда.

    Това само запълва последния аргумент. Така че, ако тичаш пинг google.com -c 4 и след това стартирайте ping! $ , това просто ще се разшири до „ping 4".

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

    команда! ^

    Така че, ако тичаш пинг google.com -c 4 и после изтича пинг! ^ , bash ще разшири това до "пинг google.com ".

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

    команда! *

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

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

    команда! abc: #

    Например, изпълнихме командата sudo име на хоста ubuntu по-рано. Ако изпълним следната команда, bash ще търси назад през историята, за да намери последната команда, започваща с буквите, които въвеждаме и попълваме аргумента, който посочваме. Така че, ако бягаме echo! su: 2 , bash ще търси обратно, за да намери последната команда, започваща с “су"И попълнете втория си аргумент, който е"Ubuntu".

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

    команда! abc: *

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

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

    ^ ^ Абв ЮЯ

    Например, ако случайно сте избягали пинг gogle.com, тогава можеш да бягаш ^ ^ Гога GOOG и bash ще изпълни командата пинг google.com вместо.

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

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

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

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

    история -в

    По подразбиране 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, по-подробна информация и други усъвършенствани трикове, които можете да използвате.