[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: