Fem tips for å arbeide med GNU Bash History på Linux


De sier at de som ikke kjenner historien er dømt til å gjenta den — men hvis du ikke vet hvordan du skal bruke din historie i Bash, du bare ikke å gjøre mest mulig ut av systemet. Men dette er enkel å overvinne med fem tips om hvordan historie på GNU Bash

Hvis du bruker noe tid i det hele tatt på skallet, du har sikkert lagt merke til at Bash holder en ". Historie " av kommandoene du har kjørt – mye som nettlesere holde oversikt over sider du har besøkt. Selvfølgelig, historien funksjonen i Bash (og andre skjell) forut nettleserhistorikk.

De fleste brukerne er klar over at de kan få tilgang til historien ved hjelp av historien kommando, eller bare bla gjennom historien ved hjelp av piltastene eller ctrl-p (forrige) eller Ctrl-n (neste). Det, i seg selv, er veldig nyttig. Men
du ikke gjør full bruk av Bash historie. La oss se på noen mindre brukt triks for å gjøre bruk (eller ikke) av Bash historie kommando og funksjoner.

Ved Numbers

Når du kjører historie du se en liste over kommandoer som har vært drevet (så lenge de har vært logget — mer om det i et sekund).!, og et tall til venstre for kommandoen

Du kan re-kjøre en kommando ved hjelp av n
der n er nummeret til en kommando. So! 50 vil kjøre den 50. kommandoen i historien. Eller du kan kjøre en kommando ved hjelp - n
hvor det er gjeldende kommando minus n
. Klarere – ! -3 Vil kjøre den tredje siste kommando i loggen. Hvis utgangen av historien ser slik ut:


 1 sudo su to exit tre sudo apt-get update 


Så kjører -3 ville kjøre sudo su .

En liten vri

Hvor mange ganger har du kjører en kommando, og deretter innså, Jeg mente å bruke sudo foran det!
? Jeg gjør det hele tiden. En måte å gjenopprette ville være ganske enkelt å bla tilbake i historien (pil opp eller Ctrl-p og deretter trykke Ctrl-en for å gå til forsiden av linjen og skriv sudo. En annen, enda enklere, måte, er å gjøre dette:.?

sudo !!

Det vil kjøre den siste kommandoen (!!) med sudo Nice, eh

Du har sannsynligvis allerede vet at kommandoen vil kjøre! siste kommandoen som begynner med ". kommandoen Så hvis du har nylig kjørt en veldig lang kommandostreng, alt du egentlig trenger å gjøre for å gjenta det er å kjøre kommandoen

Men visste du!. at Bash ikke var ute etter en kommando, er det på jakt etter en string
? Det betyr at det er på utkikk etter en kamp til karakterene, ikke en kamp til full kommando. La oss si at siste kommando bruker git var noe som dette:!

git commit -a -m " ulike og diverse notater "

De fleste brukere vil skrive git å kjøre kommandoen — men alt du trenger å skrive er GI eller selv g hvis ingen andre kommandoer kommer til å matche den ledende strengen

Nå, hva om du har kjørt en rekke kommandoer, men ønsket å matche basert på den andre strengen i Command &ndash!.; kommandoen som du brukte med git i stedet? Deretter kan du bruke!? Kommandoen? og historien innebygde ville matche " kommandoen " i strengen.

Mer Recycling

En annen liten spiss, bruke ESC-. (det er Escape og periode) for å få det siste ordet (string) til en kommando. Hit det en gang og du vil få ordet for den siste kommandoen. Hit det igjen, og du vil få det siste ordet for kommandoen før det. For eksempel, hvis du kjører cp filnavn1 filnavn2 treffer ESC-. vil legge filnavn2 ved markøren. Prøv den og se hvordan det fungerer — det er veldig nyttig.

Men hva om du vil, sier den tredje ordet? Eller alle ordene? For eksempel, hvis du har kjørt dette:

ls file1.txt file2.txt file3.txt file4.txt

Du ønsker kanskje å raskt bare få de midterste to filnavn. Du kan gjøre det ved å kjøre:

ls: 2-3-

Hvis du vil at alle argumenter /ord gått til en kommando uten kommandoen selv, kjør:

ls: *

Søk

En annen nyttig, kanskje mest nyttig, trikset er å bruke Ctrl-r for å søke gjennom historien for en kommando som matcher en søkestreng
For eksempel løper Ctrl-r og type " hi " – det vil få opp den første kommandoen med " hi " i strengen (slik som tidligere). Hit Ctrl-r igjen, og det vil få opp den nest siste kommando, og så videre. Når du finner den kommandoen du vil, så bare trykke Enter, og det vil kjøre igjen.

Hvis du ønsker å endre kommandoen, traff høyre eller venstre piltast og deretter Bash vil forlate deg på spørsmål med kommandoen å redigere den før du kjører kommandoen.

Personvern og sikkerhet

The Bash historie er veldig nyttig, men det kan være tider når du ikke
vil lagre kommandoer til din historie. For eksempel, hvis du bruker en delt maskin du kanskje ikke vil at kommandoen historie for å være synlig i systemadministratorer &ndash til; som bare kan logge inn som root og lese din ~ /.bash_history. Hvis det ikke er en delt maskin, er det alltid en sjanse systemet kan bli kompromittert – så hvis du gjør noe du ønsker å holde virkelig privat, bør du kanskje å utøve noen kontroller. Til slutt, kanskje du bare ønsker å holde fra å logge bestemte kommandoer fordi det er bare ikke nyttig å ha dem clogging opp din historie. Du kan bruke ls hele tiden, men hvorfor beholde noe sånt når det er mer nyttig å holde lengre kommandoer som er vondt å skrive?

La oss ta en titt på måter å holde kommandoer blir lagret i historien, . uansett grunn

En måte å gjøre dette på er å sette HISTCONTROL = ignorespace: ignoredups i din .bashrc. De ignoredups gjør hva det høres ut som – det vil ikke logge duplikater til din historie, så hvis du kjører ls to ganger på rad, eller noe sånt, det vil ikke bli lagret mer enn én gang

ignorespace fungerer slik:. Skriv inn et mellomrom før en kommando, og det blir ikke loggført til din historie. Så hvis du ønsker å kjøre en super-hemmelig kommando, starter det hele med et mellomrom.

Noen distroer legge dette som standard, men du kan legge det selv ved å legge linjen over til din .bashrc.

Du kan også bruke HISTIGNORE miljøvariabelen å fortelle Bash å overse visse kommandoer eller parametere. La oss si at du ikke ønsker å logge noen kommandoer som har navnet på en privat server. Du kan stille HISTIGNORE = " * minserver * " og deretter bruke navnet ustraffet.

Vel, sortering av straffrihet. De vanlige begrensninger gjelder & mdas; hvis du er på en delt server, kan det være måter for andre brukere å se hva som er i minnet, eller bruke ps aux eller noe å se hva kommandoene blir kjørt. Så, disse tiltakene er nyttige – men kan ikke være 100% vanntett. Ikke gjør egentlig sensitive arbeid på maskiner som du ikke stoler på, mmkay?

Jeg håper at dette har gitt noen tips som du vil finne nyttig. Men det er ikke alt du kan gjøre – husk å sjekke ut mannen siden for historie for å lære mer. Anmeldelser