Mastering af Command Line History i Linux
Hvis du bruger en masse tid på Linux, er det fornuftigt at lære at optimere din brug af kommandolinjevalg - især den tid du bruger til at skrive i kommandoer. De fleste Linux-brugere er bekendt med den grundlæggende Linux-kommandolinjeshistorie. Den enkleste måde at undgå at skrive en kommando på er at slå op piletasten, indtil du finder din kommando eller at bruge den enkle !!
for den sidste henrettede kommando. I dag vil vi vise dig et par relativt ukendte, men alligevel effektive måder, du kan bruge Linux historie til at fremskynde den måde du arbejder på.
Udvid de ydmyge !! at arbejde for dig
Sig, at du kørte en kommando, der krævede root privilege, men du glemte at lave en sudo
. Snarere end at skrive det ud igen, eller navigere op og derefter tilbage, her er hvad du kan gøre
$ touch build_04052014.tgz touch: kan ikke røre 'build_04052014.tgz': Tilladelse nægtet $ sudo !! sudo touch new_binary [sudo] adgangskode til richa:
Hvis du vil gemme den foregående kommando i et nyt script, så kan du gøre det uden at skulle skrive det ud
$ touch build_04052014.tgz $ echo !! > script1.sh $ cat script1.sh tryk build_04052014.tgz
Søg og kør kommando fra historie
At have adgang til den sidste runde kommando har begrænset brug. Nogle gange vil du gerne søge gennem historien for at finde en uklart eller virkelig stor kommando, du havde skrevet ud. En enkel ![keyword]
søgning lader dig få adgang til det. For eksempel havde du en stor kommando, som du ville køre om morgenen, og du kan ikke helt huske de muligheder du gav, men du vil stadig køre den igen. Hvis dette er hvad et screenshot af din historie fra den tid var:
Så hvordan løber du den kommando igen? Bare gør:
$! gøre gør brutus.mk && tar brutus / * brutus.tgz && cp brutus.tgz ../output Building ....
Sådan overfører du et argument fra den foregående kommando
Nogle gange kan du måske ikke udføre en tidligere kommando, men bare overføre argumentet. Du kan bruge operatoren " !$
" Som vist nedenfor.
Hvis der var flere argumenter til din tidligere kommando, og du kun vil få adgang til den første, kan du bruge " !^
"
$ ls * .png * .txt * .tgz build_04052014.tgz OOO2.png out2.png unix.txt OOO1.png out1.png out3.png windows.txt $ ls -a! ^ ls -a * .png OOO1.png OOO2.png out1.png out2.png out3.png
For at få adgang til argumentnummer x, brug blot " ![prev_command]:[argument_number]
". Nedenstående eksempel viser det tydeligere.
$ ls * .png * .txt * .tgz build_04052014.tgz OOO2.png out2.png unix.txt OOO1.png out1.png out3.png windows.txt $ ls -a! ls: 3 ls -a * .tgz build_04052014 .tgz
Hvad hvis du har en kommando, du ikke vil opleve i historien overhovedet - hvis du bare vil fjerne dubletter og få en renere historie. Du kan indstille HISTCONTROL miljøvariablen til at håndtere dette. Sådan gør du det.
$ eksport HISTCONTROL = slette op
Forhindre en kommando fra at dukke op i historien
Til tider kan du forhindre simple kommandoer, der vises i historien, som " ls
" eller " pwd
". I sådanne tilfælde kan du forhindre dem i at blive vist i historien ved at bruge kommandoen HISTCONTROL igen, som vi gjorde i ovenstående eksempel. Det er dog normalt ikke en god idé at skjule en kommando fra at blive vist i historien.
For at skjule en kommando skal du først indstille HISTCONTROL for at ignorere mellemrum, dvs. ignorere alle kommandoer, der starter med plads. Så når du skriver kommandoen, skal du sørge for at tilføje ekstra plads, før du skriver. Dette forhindrer historien i at huske kommandoen.
$ eksport HISTCONTROL = ignorespace
Bare i tilfælde af en mærkelig årsag, kan du helt sikkert deaktivere din Linux historie. For at gøre det kan du bruge følgende kommando:
$ eksport HISTSIZE = 0
Hvis du søger efter din historie nu, bliver den blank. Bemærk, at kommandoen HISTSIZE også kan bruges til at ændre størrelsen af din historie. Hvis du ønskede at gemme flere kommandoer i historien, skal du åbne .bash_profile- filen i dit hjemmemappe og ændre HISTSIZE (gør det større eller mindre).
Billedkredit: Bash Command Line Linux Shell Terminal, Introduktion til Command Line Cover