Nem måde at pege på mapper eller filer i terminal

Har du en guide til en funktion eller et program? Har du tips og trick, som du gerne vil dele med andre? Post dem her.
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af AJenbo »

Kode: Vælg alt

history | grep apt-get | wc -l
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af Jakob77 »

AJenbo skrev:

Kode: Vælg alt

history | grep apt-get | wc -l



Så kom history igen. Det er for vildt.! :)
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af AJenbo »

Den er til at tælle de kommandoer du har kørt med "apt-get", den genskaber ikke historien.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af Jakob77 »

AJenbo skrev:Den er til at tælle de kommandoer du har kørt med "apt-get", den genskaber ikke historien.


Ok, så forstår jeg bedre, at den kom med et tal som output, men ikke hvordan history kom igen. Eller det meste af den, for listen begynder med linje 390
Kan man så også tælle, hvor mange gange en bestemt kommando ( f.eks. "f u" ) er blevet kørt, eller skal listen så evt. lægges over i en fil ( eks.: "history >> ~/Skrivebord/testhist.txt" ) og tælling foregå manuelt..?
zob
Redaktør
Indlæg: 4430
Tilmeldt: 6. jan 2009, 22:01
Geografisk sted: København

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af zob »

Jakob77 skrev:Kan man så også tælle, hvor mange gange en bestemt kommando ( f.eks. "f u" ) er blevet kørt, eller skal listen så evt. lægges over i en fil ( eks.: "history >> ~/Skrivebord/testhist.txt" ) og tælling foregå manuelt..?


Jeg tror du misforstår. Det er præcis det kommandoen ajenbo gav dig gør.

Kode: Vælg alt

history | grep apt-get | wc -l

Tæller hvor mange gange apt-get er blevet kørt i din gemte history. Hvis du fjerner | wc -l så får du en liste med alle de gange du har kørt en kommando med apt-get:

Kode: Vælg alt

history | grep apt-get


Tegnet | betyder at man "piper" noget ind i en anden kommando.

Derfor betyder

Kode: Vælg alt

history | grep apt-get | wc -l

det samme som hvis du først gemte history i en fil med f.eks.

Kode: Vælg alt

history > gemthistorik.txt

derefter søgte gennem filen efter brug af apt-get, måske med

Kode: Vælg alt

grep apt-get gemthistorik.txt

og derefter foretog en optælling af antallet af gange du har brugt apt-get.

Som du kan se er "pipe" ret smart. Det sparer dig for al dette ekstra arbejde.

Når dette er sagt så er er history allerede gemt i en fil (selvfølgelig). Den hedder ~/.bash_history. Du kan se den med

Kode: Vælg alt

cat ~/.bash_history

~/ betyder at den ligger i din hjemmemappe.
Der er bestemt ingen grund til at bruge denne fil til noget, da du jo allerede har kommandoen history som læser denne fil og tilføjer linjenumre for dig. Det smarte ved linjenumre er at du kan køre

Kode: Vælg alt

history

Og måske har du som jeg et sted med nogle virkeligt lange kommandoer:

Kode: Vælg alt

2221  wajig listsections
 2222  comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
 2223  comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) | wc -l
 2224  sudo apt-get update && sudo apt-get dist-upgrade

Og lad os sige at jeg gerne ville køre kommandoen 2222 igen. Så kan jeg bare taste

Kode: Vælg alt

!2222

Afslut med ENTER naturligvis, og vupti!

Som demonstration af pipes og for at give dig en kommando du måske kan finde anvendelse for i forhold til dig spørgsmål:

Kode: Vælg alt

history | awk '{print $2}' | awk 'BEGIN {FS="|"} {print $1}' | sort | uniq -c | sort -n

Den kode skriver de mest bruge kommandoer ud sorteret efter hyppighed.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af Jakob77 »

@zob

Mange tak for din grundige forklaring. Jeg forstår ligefrem næsten det meste af den, tror jeg nok. :)

Jeg prøvede at ændre AJenbos kommando til:

Kode: Vælg alt

history | grep 'f u' | wc -l


og ding dong dynamolygte, så fik jeg et tal for, hvor mange gange kommandoen "f u" er blevet anvendt. :)


Men jeg håber ikke, at du forventer, at jeg kan gennemskue den sidste kommando i dit indlæg.
Den er virkelig super sej, men jeg ville godt rette den sådan, at den ikke bare fortæller, hvor mange gange kommandoen "f" er blevet brugt, men at det udspecificeres, så jeg kan se, hvor mange gange det var "f u" og "f xx" osv.

"history --help" giver ikke meget, og "history -man" kan jeg ikke finde.
Burde der ikke være mere hjælp at hente i terminalen..?
Jeg ville også godt have styr på, hvad det "-c" argument egentlig betyder.
AJenbo
Admin
Indlæg: 20878
Tilmeldt: 15. nov 2009, 15:04
IRC nickname: AJenbo
Geografisk sted: Vanløse, København

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af AJenbo »

Du skal skrive:

Kode: Vælg alt

man history


mest brugte kommandoer:

Kode: Vælg alt

sort ~/.bash_history | uniq -c | sort -n


Fjern en del af kommandoen af gangen og se hvad der ændre dig for at lære at forstå hver stump.
zob
Redaktør
Indlæg: 4430
Tilmeldt: 6. jan 2009, 22:01
Geografisk sted: København

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af zob »

For resten er der en fin vejledning på dansk til nogle af de emner vi har talt om her:
http://www.linuxbog.dk/unix/unix/index.html

Måske specielt kapitlerne 1.3.1, 2.1 og 4.1 - 4.4 til at begynde med.
Jakob77
Indlæg: 889
Tilmeldt: 19. dec 2008, 15:52
IRC nickname: Jakob77

Re: Nem måde at pege på mapper eller filer i terminal

Indlæg af Jakob77 »

Jeg siger mange tak igen. :)