Re: pseudo-Terminalname bestimmen mit tty (was: Re: Tipp /root/.bash_history)
Am Samstag, 9. Februar 2019 schrieb Peter Funk:
> Jedoch brauche ich noch das Abtrennen des führenden
> "/dev/" vom Pfadnamen. Das ginge dann z.B. so:
> TTY=`tty | sed 's/\/dev\///'`
> oder so:
> TTY=`tty | cut -b 6-`
> Das ist trotzdem noch kürzer.
Das funktioniert sicher, aber wenn Du nicht nur eine alte Bourne Shell
benutzt, und da auf Debian immer Bash zur Verfügung steht, würde ich
folgendes vorschlagen. Das ist noch einfacher, noch kürzer und ohne den
Aufruf externer Unix Programme:
Diese Syntax für command substitution wird heutzutage empfohlen [1]:
TTY=$(tty)
Man kann den Aufruf von sed oder cut in einer weiteren subshell vermeiden
durch parameter expansion, hier [2] sehr übersichtlich erläutert.
Entfernt alles "*", von links ("##") bis zum letzten "/":
TTY=${TTY##*/}
$ tty
/dev/pts/5
$ TTY=$(tty)
$ echo $TTY
/dev/pts/5
$ echo ${TTY##*/}
5
Freundlichen Gruß,
Stefan
[1] https://mywiki.wooledge.org/BashFAQ/082
[2] https://mywiki.wooledge.org/BashFAQ/073
Reply to: