Skåne Sjælland Linux User Group - http://www.sslug.dk Förstasida   Anmälning   Postarkiv   Översikt   Kalender   Sök
 

Kommandofortolkere - bash, tcsh og zsh

Henvisnininger - links

begyntertips, bash, ...
Skalet Bash - Et kapitel om bash (shell) fra en svensk bog, kapitlet var anvendt på et SSLUG møde i 1997
Linxbog: 2.2. Shell-programmering
Torsdag 1. SSLUG - Kommandotolkarna zsh, tcsh och bash (mødet)

Lidt historie

sh
Mange udgaver - til teletype-terminaler
csh
En af de bedre efterfølgere (fra 1981). Har desværre lånt syntaks fra C.
tcsh
1987 bygger på csh, men med bedre redigeringsfaciliter
bash
1989
zsh
Bygger på 1988-udgaven af ksh. POSIX-kompatibel.

Et par systemvariable (prompt og path)

Kommandoliniens udseende fastsættes med PS1/prompt:

bash:  PS1='\u@\h:\w > '
tcsh:  set prompt='%n@%m:%~ > '
zsh:   prompt='%n@%m:%~ > '
zsh:   PS1='%n@%m:%~ > '

Stien til kørbare programmer fastsættes med PATH:

bash:  export PATH=/bin:/usr/bin:~/bin
tcsh:  setenv PATH /bin:/usr/bin:~/bin
tcsh:  setenv path (/bin /usr/bin ~/bin)
zsh:   export PATH=/bin:/usr/bin:~/bin
zsh:   export path=(/bin /usr/bin ~/bin)

Andet: MANPATH, der bruges af man har syntaks som PATH (med stort).

Kommandolinien - piletaster og redigering

Generelt virker pile- og kontrol-taster som i Emacs.

Både bash, tcsh og zsh har en history-kommando.

!<tal> og !<starten på en kommando> finder tidligere kommandoer i kommandohistorien. Det kan både bruges alene som kommandoer og som en del af andre kommandoer.

!80
!ls
echo !40
echo !ech

Variable, typer og tildeling

Generelt er variable i kommandofortolkerne tekststrenge, men i visse sammenhænge kan de behandles som tal og arrays.

bash: var=værdi
      declare -a tabel
      tabel=(a b c 4 5 6)
      echo ${tabel[0]}
      echo ${tabel[@]}
      export global=Noget

tcsh: set var=værdi
      set tabel=(a b c 4 5 6)
      echo ${tabel[1]}
      echo ${tabel[@]}
      setenv global Noget

zsh:  var=værdi
      tabel=(a b c 4 5 6)
      echo ${tabel[1]}
      echo ${tabel[@]}
      export global=Noget

Tekststrenge sættes i gåseøjne (") eller apostroffer ('), hvis de indeholder mellemrum eller andre specialtegn. I gåseøjne fortolkes $... som variable, mens de bare behandles som regulær tekst mellem apostroffer (i tcsh tolkes ! dog altid som historiehenvisning, hvis der ikke er en bagstreg foran).

Hvis man bruger bag-plinger (`) udføres indmaden som en kommando og uddata indsættes i stedet for.

bash: filer=`ls`
      system=`uname -s`

Talberegning

bash: b=2
      let a=b*3
      echo $a

tcsh: set b=2
      @ a = $b * 3
      echo $a

zsh:  b=2
      let a="b*3"
      echo $a

Opsætningsfiler

bash
Ved login: /etc/profile og så netop en af ~/.bash_profile, ~/.bash_login eller ~/.profile.
Altid: ~/.bashrc
tcsh
Ved login: /etc/csh.login, ~/.login
Altid: /etc/csh.cshrc og netop en af ~/.tcshrc og ~/.cshrc.
Ved logout: ~/.logout
Rækkefølge af login og rc'er er afhængig af opsætningen ved oversættelse af tcsh.
zsh
Ved login: /etc/zprofile og ~/.zprofile
Altid: /etc/zshrc og ~/.zshrc
Ved login dernæst: /etc/zlogin og ~/.zlogin
Ved logout: ~/.zlogout og /etc/zlogout

Filnavnsmønstre

      ls -d [A-CP]*
      ls B?a*
      ls {Ad,B[ai]}*

Kommando- og filnavnsfuldendelse

Kræver OPSÆTNING

I zsh giver

# tcsh
set autolist
set fignore = (.o .ali \~ \#)
#set complete = enhance
set recognize_only_executables
set correct = cmd

complete cd       'p/1/d/'
complete mkdir    'p/1/d/'
complete rmdir    'p/1/d/'
complete latex    'p/*/f:*.tex/'
complete dvips    'p/1/f:*.dvi/' 'p/2/(-o)/' 'p/3/f:*.ps/'
complete finger   'p/*/u/'
complete last     'p/*/u/'
complete gv       'p/*/f:*.{ps,pdf,eps}/'
complete gm       'p/*/f:*.{ads,adb}/'
complete gnatchop 'p/*/f:*.ada/'
complete unzip    'p/2/f:*.zip/' 'p/*/f:*/'

top

 
Förstasida   Anmälning   Postarkiv   Översikt   Kalender   Sök

 
 
Fel och synpunkter angående webb-sidorna skickas till <www_admin>. Senaste ändring Sunday, 07-Mar-2004 21:27:26 CET .