next up previous contents
Nästa: 6.6 Omdirigering Upp: 6. Skalet Bash Förra: 6.4 Startfiler

   
6.5 Omskrivningar

Vi har sett några fall där Bash skriver om ett kommando på olika sätt innan det slutligen exekveras. Till exempel skrivs *.tex om till en alfabetiskt sorterad lista av de filer i den nuvarande katalogen vars namn slutar på ''.tex''. I detta avsnitt ska vi diskutera åtskilliga andra typer av omskrivningar som Bash kan göra med en kommandorad.

Tecknet ~ skrivs om till namnet på den egna hemkatalogen i konstruktioner som ~/dikter. Omskrivningen sker bara om tildetecknet kommer i början av ett argument.$ echo Min hemkatalog heter ~
Min hemkatalog heter /home/göran
$ cd ~/dikter
$ pwd
/home/göran/dikter
$
På motsvarande sätt skrivs ~eva om till namnet på eva:s hemkatalog ifall det finns en användare med namnet eva.$ echo ~eva/post
/home/eva/post
$ echo hej~
hej~
$ echo ~=
~=
$
I de båda sista exemplen skedde ingen omskrivning.

Om kommandoraden innehåller ett uttryck av formen $(kommando), så skriver Bash om detta till utdatan från kommandot kommando.$ echo Dagens datum är $(date)
Dagens datum är tis feb 17 18:30:20 CET 1998
$
Figur 6.2 visar vad som hände när kommandot ovan exekverades: argumentet $(date) skrevs om till tis feb 17 18:30:20 CET 1998 innan echo anropades.

  
Figur 6.2: Ett kommando i kommandot.
\begin{figure}
\begin{center}
\psframebox[framesep=1.1]{
\begin{psmatrix}
\p...
...ows=->]{1,1}{2,1}\tlput{Omskrivning}
\end{psmatrix} }
\end{center}\end{figure}

Så här kan man få date att ange dagens datum på formen ååmmdd:$ date +%y%m%d
980217
$
I nästa exempel gör vi en kopia av filen bellman. Namnet på kopian märks med dagens datum:$ cp bellman kopia.$(date +%y%m%d).bellman
$ ls
bellman               kopia.980217.bellman  lenngren
$
I gamla Bourne-skalet skrev man `kommando` i stället för $(kommando). Av kompatibilitetsskäl fungerar detta också i Bash.

Om ett argument i kommandoraden inleds med tecknet #, så stryks detta tecken och allt som kommer efter det på samma rad innan kommandot utförs. Man använder detta för att kunna skriva kommentarer till kommandon.$ date # Detta är en kommentar!
sön okt 12 23:05:29 CEST 1997
$ echo hej #på dej
hej
$ echo hej#på dej
hej#på dej
$

Ett argument av formen prefix{ord1,ord2,...}suffix skriver Bash om till orden prefixord1suffix prefixord2suffix osv. Alla ord som räknas upp inom klamrarna bildar alltså nya ord genom att prefix och suffix läggs till i början respektive på slutet.$ echo Sål{d,l,t}
Såld Såll Sålt
$ echo H{e,a}l{,a,t}!
Hel! Hela! Helt! Hal! Hala! Halt!
$ echo kap{1,2,5{A,B},23}
kap1 kap2 kap5A kap5B kap23
$

Som vi redan sett kan Bash hålla reda på alias för kommandon. Om man till exempel har gett kommandot alias ls='ls -NF -color' och sedan vid prompten skriver ett kommando som inleds med ls, så byter Bash ut ''ls'' mot ''ls -NF -color'' innan kommandot exekveras. (Alias är ett primitivt men trots det ganska användbart hjälpmedel. Betydligt kraftfullare är möjligheten att skriva funktioner i Bash.Följande exempel visar hur man kan få rm att automatiskt ta med flaggan -i:$ alias rm='rm -i'
$ rm bellman
rm: ta bort "bellman"? n
$ ls
bellman               kopia.980217.bellman  lenngren
$


next up previous contents
Nästa: 6.6 Omdirigering Upp: 6. Skalet Bash Förra: 6.4 Startfiler
Goran Andersson
1999-03-08