Table of Contents
Přechod z tcsh na bash
Odkazy
Syntaxe
Na co dát pozor při psaní skriptů:
Proměnné
tcsh:
setenv VARIABLE value
bash:
export VARIABLE=value
Přesměrování výstupu
tcsh:
( command > x.out ) >& x.err
bash:
command > x.out 2> x.err
Podmínky a smyčky
Konstrukce, které řídí běh programu, mají v obou shellech odlišnou syntaxi.
tcsh:
foreach i (apple pear orange)
echo cp ${i}s.txt my_$i.txt
end
if (-f file.txt) then
echo 'Oh yes!'
endif
bash:
for i in apple pear orange do echo cp ${i}s.txt my_$i.txt done if [[ -f file.txt ]] ; then echo 'Oh yes!' fi
Nevyřešené problémy
- V bashi mi nefungoval příkaz alias. Čím ho nahradím?
- alias je builtin, ten by fungovat opravdu měl (např.
alias ls='ls -F –color=au')
- V tcsh jsem zvyklý, že ALT+P mi v historii projde příkazy, které začínají stejně, jako to, co už jsem napsal na aktuální příkazový řádek. Jak se to udělá v bashi?
- v
.inputrcsi na nějakou klávesu nabinduješhistory-search-backward, myslím, že defaultně to nikde není
- Chci, aby můj prompt byl v tvaru
9:05 zen:/ha/home/zeman>. V tcsh mi trvalo několik týdnů, než jsem přišel na to, jak to udělat, ale od té doby už to spokojeně používám přes 10 let. V bashi to chci určitě stejně.- Stačí nastavit proměnnou
PS1, zřejmě na něco jako“\A ${HOSTNAME%%.*}:\w>” - S tím souvisí, že
pwdse chová jinak v tcsh a jinak v bashi. V tcsh se dozvím skutečnou cestu (tj. všelijaké symbolické linky jsou odmaskované), například vidím, že/home/zemanve skutečnosti vede na/ha/home/zeman. Pwd v bashi mi ale pořád říká/home/zeman. Nejraději bych uměl na požádání vyvolat kterékoli z těchto chování, ale rozhodně bych rád měl nějaký způsob, jak skutečnou cestu zjistit.readlink -f
