RSS

Bokmärken i terminalen

29 Aug

Att använda sig av kommandot cd för att byta mapp, är väl bra nog när man precis har installerat sin Linuxdistribution och ens hemkatalog ännu inte rymmer så mycket. Men ganska snart fylls den upp med många mappar. Dessutom behöver man kanske ta sig till andra ställen i katalogstrukturen, ställen med långa och krångliga sökvägar.

Med en grafisk filbläddrare kan man klicka sig fram på de ikoner som finns, men i terminalen innebär det att ständigt behöva skriva dessa sökvägar. Därför behövs det metoder för att förenkla det hela.

Och säga vad man vill om programmerare, men de är lite lata och vill helst göra saker så enkelt som möjligt för sig. Därför finns det några sätt att skapa genvägar till olika mappar.

Länkar och variabel

Ett sätt är att skapa symboliska länkar. Man behöver ha koll på sökvägen till den mapp man vill länka till — och skriva den korrekt — annars är det enkelt. Formeln ser ut så här.

  ln -s sök/väg/mapp länknamn

Jag förutsätter här att man befinner sig i den mapp där man vill ha länken, t ex i sin hemkatalog. Dessutom är det viktigt med tillvalet -s för att ange att det ska vara en mjuk, symbolisk länk.

Som exempel kan jag gå till mappen för dokumentationen för texlive, dit jag då vill ha en länk i min hemkatalog. Kommandot ser då ut så här, där ”texdoc” får bli namnet på länken.

  ln -s /usr/share/doc/texlive-doc /home/maths/texdoc

Ett annat sätt är att använda sig av variabler. Man ger sökvägen ett namn och kan sedan använda den direkt i Bash. Formeln ser ut så här.

  export LÄNKNAMN=/sökväg/mapp

Eller ange det i filen .bashrc, vilket gör att man har det kvar efter en omstart. Sedan kan man använda det på olika sätt, t ex vid navigering eller i skript.

  cd $LÄNKNAMN

De här två sätten finns inbyggda i systemet. Men man kan också använda sig av ett par skript som några har suttit och skrivit ihop för att kunna få bokmärken i terminalen.

DirB

Ett sånt skript, skrivet av Ira Chayut, är DirB, som ger möjligheten att ha bokmärken. Man får ladda ner det från hemsidan på Github. Jag har skrivit om DirB tidigare. (Observera att det inte är Web Content Scannern DIRB det handlar om.)

  1. Gå till nedladdningssidan.
  2. Ovanför själva koden och till höger finns det några knappar. En heter Raw. Klicka på den och du får en sida med ren text. Spara den sidan till hårdisken. Filen får namnet dirb.sh.
  3. Flytta nu filen så att den ligger direkt under din hemkatalog. Passa också på att döpa om denb och göra den till en dold fil.
      mv dirb.sh ~/.bashDirB
    
  4. Redigera sedan filen ~/.bashrc genom att lägga till följande rader nära slutet av filen.

      # För DirB
      source ~/.bashDirB
    
  5. Ladda sedan om Bash för att aktivera ändringen.
      source ~/.bashrc
    

Vill du se vilka tangentbordsgenvägar som finns, tittar du i början av filen .bashDirB eller läser filen README på nätet.

Nästa gång du kommer till en mapp du vill bokmärka för att snabbt kunna komma till, skapar du ett bokmärke genom att skriva följande.

  cd lång/sök/väg/till/mapp
  s märke

Vill du sedan snabbt komma till mappen kan du skriva så här.

  g märke

För att se en lista på dina bokmärken kör du följande kommando.

  sl
Kommando För att …
s namn Spara bokmärke med namn
g namn Gå till bokmärke med namn
p Hoppa i en lista
r namn Ta bort bokmärke
sl Visa bokmärken
sl -l Visa bokmärken i längre format
d namn Visa sökväg till bokmärke

Snabba symboliska länkar

Jag har också hittat ett litet skript av Jeroen Janssens där man enkelt skapar symboliska länkar.

Det hela bygger på att man skapar mappen ~/.marks, där alla länkarna samlas. Men man behöver inte lägga dem där manuellt, utan använder kommandona jump, mark, unmark och marks för att hantera dem.

  1. Skapa alltså först mappen vi behöver.
      mkdir .marks
    
  2. Öppna sedan filen .bashrc och lägg till följande kod.
      export MARKPATH=$HOME/.marks
      function jump { 
          cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
      }
      function mark { 
          mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1"
      }
      function unmark { 
          rm -i "$MARKPATH/$1"
      }
      function marks {
          ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
      }
      
      _completemarks() {
        local curw=${COMP_WORDS[COMP_CWORD]}
        local wordlist=$(find $MARKPATH -type l -printf "%f\n")
        COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw"))
        return 0
      }
      
      complete -F _completemarks jump unmark
    
  3. Ladda sedan om Bash för att aktivera ändringen.
      source ~/.bashrc
    

Gå sedan till den där mappen du ofta använder och som har en lång sökväg. När du är där, skapar du ett bokmärke.

  cd /lång/sök/väg/till/mapp
  mark märke

Nu kan du från vilken annan mapp som helst gå direkt till ditt bokmärke genom att skriva så här.

  jump märke

Slutar du använda bokmärket och inte vill ha det kvar, kan du ta bort det.

  umark märke

Eftersom minnet kan vara kort är det praktiskt att kunna se en lista på alla bokmärken.

  marks

Listan kan se ut så här.

  märke1	-> /home/användare/sök/väg
  märke2	-> /home/användare/annan/sök/väg style="font-size:small"
  märke3	-> /usr/share/doc
Kommando För att …
mark namn Spara bokmärke med namn
jump namn Gå till bokmärke med namn
umark namn Ta bort bokmärke med namn
marks Visa lista på bokmärken
 
Lämna en kommentar

Publicerat av på 29 augusti 2013 i Dator, Gör så här, Terminalen

 

Etiketter: , , , , , , , ,

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

 
%d bloggare gillar detta: