Gibt es unter Linux eine Möglichkeit für ein Shell-Skript zu überprüfen, ob seine Standardeingabe vom Nullgerät (1, 3) * umgeleitet wird , idealerweise ohne etwas zu lesen?
Das erwartete Verhalten wäre:
./checkstdinnull
-> no
./checkstdinnull < /dev/null
-> yes
echo -n | ./checkstdinnull
-> no
EDIT
mknod secretunknownname c 1 3
exec 6<secretunknownname
rm secretunknownname
./checkstdinnull <&6
-> yes
Ich vermute , dass ich „nur“ Notwendigkeit , die maj / min Anzahl der Eingabe lesen Geräts . Aber ich kann keinen Weg finden, dies aus der Shell heraus zu tun.
* Nicht nur notwendig
/dev/null
, sondern jedes Nullgerät, auch wenn es manuell mit erstellt wurde mknod
.
{ readlink -f /dev/stdin; } <&6
für den Fall, in dem Sie exec verwendet und den Knoten entfernt haben, ist /root/secretunknownname (deleted)
. Wie es zeigt, wurde die Datei gelöscht: Reicht das nicht für das, was Sie brauchen?
stat
funktioniert nur die Lösung.
/dev/null
, aber nicht notwendig. Sie können "Alias" mit mknod
s in meinem Beispiel dargestellt.
/dev/null
oder nur, dass es kein tty ist?