Sziasztok,
a minap találtam egy klassz oldalt a PS1 változó felhasználási lehetőségeiről:
Nagyon tetszett a lehetősége, hogy a PS1 változót változtatva személyre szabhatom a shellemet, és megszabadulhatok az esetek 99,99%-ában fölösleges felhasználónév és hostname látványától.
Először csak leegyszerűsítettem a promptot, valamint hozzáadtam hogy kiírja a \$? változót:
PS1="\[\e]0;\u@\h:\w\a\]${debian_chroot:+($debian_chroot)}@:\w\ \${?}>"
ezt kiegészítettem úgy, hogy a 0-ás visszatérési értéket ne mutassa:
PS1="\[\e]0;\u@\h:\w\a\]${debian_chroot:+($debian_chroot)}@:\w\ \${?##0}>"
Jelenleg a shellem a következőképp néz ki:
@:~\ >
A problémám a következő:
Azt szeretném, hogy az aktuális idő is megjelenjen a promtban óó:pp formátumban,
de csak akkor ha az értéke változott. valahogy így:
[18:34] @~\ >
@~\ >
@~\ >
@~\ >
@~\ >
[18:35] @~\ >
Hiba esetén:
@~\ 127>
vagy
[18:36] @~\ 127>
Ez a következő módon igyekeztem megoldani:
function gettime {
file="temptime"
if [ ! -f $file ]
then
touch "$file"
fi
ttime=`cat $file 2>&1`
if [ "$ttime" != "`date +%H:%M`" ]
then
ttime=`date +%H:%M`
echo "$ttime" > "$file"
echo "["$ttime"] "
fi
}
PS1="\[\e]0;\u@\h:\w\a\]${debian_chroot:+($debian_chroot)}\$(gettime)@\w\ \${?##0}>"
A problémám a következő:
-Ha a PS1 változóban
\${gettime}
-ot használok, akkor csak a \$? változó kiírása működik, az időt sosem írja.
-Ha a PS1 változóban
\$(gettime)
van, akkor az idő kiírása rendesen működik, de a \$? változó hiba esetén sem íródik ki.
Kérdéseim:
-Mit rontottam el?
-Mi a különbség a
$() és a ${}
között?
-Megoldható valahogy, hogy ne kelljen külön fájlba írogatni az időt?
UI:tudom, hogy létezik a
Liquidpromt, de egyrészt az nagyon lassú, másrészt nem akarok ágyúval lőni a verébre.
Üdv: hallgat