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.
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
$