Skip to content

TTY

[Stabil: 2 - Stabil]

Stabil: 2 Stabilität: 2 - Stabil

Quellcode: lib/tty.js

Das Modul node:tty stellt die Klassen tty.ReadStream und tty.WriteStream bereit. In den meisten Fällen ist es weder notwendig noch möglich, dieses Modul direkt zu verwenden. Es kann jedoch wie folgt aufgerufen werden:

js
const tty = require('node:tty')

Wenn Node.js erkennt, dass es mit einem Textterminal ("TTY") verbunden ist, wird process.stdin standardmäßig als eine Instanz von tty.ReadStream initialisiert, und sowohl process.stdout als auch process.stderr sind standardmäßig Instanzen von tty.WriteStream. Die bevorzugte Methode, um festzustellen, ob Node.js in einem TTY-Kontext ausgeführt wird, ist zu prüfen, ob der Wert der Eigenschaft process.stdout.isTTY true ist:

bash
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

In den meisten Fällen sollte es für eine Anwendung keinen oder kaum einen Grund geben, manuell Instanzen der Klassen tty.ReadStream und tty.WriteStream zu erstellen.

Klasse: tty.ReadStream

Hinzugefügt in: v0.5.8

Stellt die lesbare Seite eines TTY dar. Unter normalen Umständen ist process.stdin die einzige tty.ReadStream-Instanz in einem Node.js-Prozess und es sollte keinen Grund geben, weitere Instanzen zu erstellen.

readStream.isRaw

Hinzugefügt in: v0.7.7

Ein Boolean, der true ist, wenn das TTY aktuell so konfiguriert ist, dass es als Rohgerät arbeitet.

Dieses Flag ist beim Start eines Prozesses immer false, auch wenn das Terminal im Rohmodus arbeitet. Sein Wert ändert sich mit nachfolgenden Aufrufen von setRawMode.

readStream.isTTY

Hinzugefügt in: v0.5.8

Ein Boolean, der für tty.ReadStream-Instanzen immer true ist.

readStream.setRawMode(mode)

Hinzugefügt in: v0.7.7

  • mode <boolean> Wenn true, konfiguriert den tty.ReadStream so, dass er als Rohgerät arbeitet. Wenn false, konfiguriert den tty.ReadStream so, dass er in seinem Standardmodus arbeitet. Die Eigenschaft readStream.isRaw wird auf den resultierenden Modus gesetzt.
  • Gibt zurück: <this> Die Lesestream-Instanz.

Ermöglicht die Konfiguration von tty.ReadStream, sodass er als Rohgerät arbeitet.

Im Raw-Modus ist die Eingabe immer zeichenweise verfügbar, einschließlich Modifikatoren. Darüber hinaus wird die gesamte spezielle Verarbeitung von Zeichen durch das Terminal deaktiviert, einschließlich des Echos von Eingabezeichen. + verursacht in diesem Modus kein SIGINT mehr.

Klasse: tty.WriteStream

Hinzugefügt in: v0.5.8

Repräsentiert die beschreibbare Seite eines TTY. Unter normalen Umständen sind process.stdout und process.stderr die einzigen tty.WriteStream-Instanzen, die für einen Node.js-Prozess erstellt werden, und es sollte keinen Grund geben, zusätzliche Instanzen zu erstellen.

new tty.ReadStream(fd[, options])

[Verlauf]

VersionÄnderungen
v0.9.4Das options-Argument wird unterstützt.
v0.5.8Hinzugefügt in: v0.5.8

Erstellt einen ReadStream für fd, der einem TTY zugeordnet ist.

new tty.WriteStream(fd)

Hinzugefügt in: v0.5.8

Erstellt einen WriteStream für fd, der einem TTY zugeordnet ist.

Ereignis: 'resize'

Hinzugefügt in: v0.7.7

Das Ereignis 'resize' wird immer dann ausgelöst, wenn sich entweder die Eigenschaften writeStream.columns oder writeStream.rows geändert haben. Es werden keine Argumente an den Listener-Callback übergeben, wenn er aufgerufen wird.

js
process.stdout.on('resize', () => {
  console.log('Die Bildschirmgröße hat sich geändert!')
  console.log(`${process.stdout.columns}x${process.stdout.rows}`)
})

writeStream.clearLine(dir[, callback])

[Verlauf]

VersionÄnderungen
v12.7.0Der Rückruf von write() des Streams und der Rückgabewert werden offengelegt.
v0.7.7Hinzugefügt in: v0.7.7
  • dir <number>

    • -1: nach links vom Cursor
    • 1: nach rechts vom Cursor
    • 0: die gesamte Zeile
  • callback <Function> Wird aufgerufen, sobald der Vorgang abgeschlossen ist.

  • Gibt zurück: <boolean> false, wenn der Stream möchte, dass der aufrufende Code auf das Auslösen des Ereignisses 'drain' wartet, bevor er weitere Daten schreibt; andernfalls true.

writeStream.clearLine() löscht die aktuelle Zeile dieses WriteStream in eine durch dir angegebene Richtung.

writeStream.clearScreenDown([callback])

[Verlauf]

VersionÄnderungen
v12.7.0Der Rückruf von write() des Streams und der Rückgabewert werden offengelegt.
v0.7.7Hinzugefügt in: v0.7.7
  • callback <Function> Wird aufgerufen, sobald der Vorgang abgeschlossen ist.
  • Gibt zurück: <boolean> false, wenn der Stream möchte, dass der aufrufende Code auf das Auslösen des Ereignisses 'drain' wartet, bevor er weitere Daten schreibt; andernfalls true.

writeStream.clearScreenDown() löscht diesen WriteStream vom aktuellen Cursor abwärts.

writeStream.columns

Hinzugefügt in: v0.7.7

Eine Zahl, die die Anzahl der Spalten angibt, die das TTY aktuell hat. Diese Eigenschaft wird immer dann aktualisiert, wenn das Ereignis 'resize' ausgelöst wird.

writeStream.cursorTo(x[, y][, callback])

[Verlauf]

VersionÄnderungen
v12.7.0Der Callback von stream.write() und der Rückgabewert werden offengelegt.
v0.7.7Hinzugefügt in: v0.7.7
  • x <Zahl>
  • y <Zahl>
  • callback <Funktion> Wird aufgerufen, wenn der Vorgang abgeschlossen ist.
  • Gibt zurück: <boolean> false, wenn der Stream wünscht, dass der aufrufende Code auf das Auslösen des Ereignisses 'drain' wartet, bevor mit dem Schreiben zusätzlicher Daten fortgefahren wird; andernfalls true.

writeStream.cursorTo() bewegt den Cursor dieses WriteStream an die angegebene Position.

writeStream.getColorDepth([env])

Hinzugefügt in: v9.9.0

  • env <Objekt> Ein Objekt, das die Umgebungsvariablen enthält, die überprüft werden sollen. Dies ermöglicht das Simulieren der Verwendung eines bestimmten Terminals. Standard: process.env.
  • Gibt zurück: <Zahl>

Gibt zurück:

  • 1 für 2,
  • 4 für 16,
  • 8 für 256,
  • 24 für 16.777.216 unterstützte Farben.

Verwenden Sie dies, um zu bestimmen, welche Farben das Terminal unterstützt. Aufgrund der Beschaffenheit von Farben in Terminals sind sowohl falsch-positive als auch falsch-negative Ergebnisse möglich. Dies hängt von den Prozessinformationen und den Umgebungsvariablen ab, die möglicherweise falsch angeben, welches Terminal verwendet wird. Es ist möglich, ein env-Objekt zu übergeben, um die Verwendung eines bestimmten Terminals zu simulieren. Dies kann nützlich sein, um zu überprüfen, wie sich bestimmte Umgebungseinstellungen verhalten.

Um eine bestimmte Farbsupport zu erzwingen, verwenden Sie eine der folgenden Umgebungseinstellungen.

  • 2 Farben: FORCE_COLOR = 0 (Deaktiviert Farben)
  • 16 Farben: FORCE_COLOR = 1
  • 256 Farben: FORCE_COLOR = 2
  • 16.777.216 Farben: FORCE_COLOR = 3

Das Deaktivieren der Farbsupport ist auch mit den Umgebungsvariablen NO_COLOR und NODE_DISABLE_COLORS möglich.

writeStream.getWindowSize()

Hinzugefügt in: v0.7.7

writeStream.getWindowSize() gibt die Größe des TTY zurück, das diesem WriteStream entspricht. Das Array ist vom Typ [numColumns, numRows], wobei numColumns und numRows die Anzahl der Spalten und Zeilen im entsprechenden TTY darstellen.

writeStream.hasColors([count][, env])

Hinzugefügt in: v11.13.0, v10.16.0

  • count <integer> Die Anzahl der angeforderten Farben (mindestens 2). Standard: 16.
  • env <Object> Ein Objekt, das die zu überprüfenden Umgebungsvariablen enthält. Dies ermöglicht die Simulation der Verwendung eines bestimmten Terminals. Standard: process.env.
  • Gibt zurück: <boolean>

Gibt true zurück, wenn der writeStream mindestens so viele Farben unterstützt, wie in count angegeben. Die minimale Unterstützung beträgt 2 (schwarz und weiß).

Dies hat die gleichen falsch positiven und negativen Ergebnisse wie in writeStream.getColorDepth() beschrieben.

js
process.stdout.hasColors()
// Gibt true oder false zurück, je nachdem, ob `stdout` mindestens 16 Farben unterstützt.
process.stdout.hasColors(256)
// Gibt true oder false zurück, je nachdem, ob `stdout` mindestens 256 Farben unterstützt.
process.stdout.hasColors({ TMUX: '1' })
// Gibt true zurück.
process.stdout.hasColors(2 ** 24, { TMUX: '1' })
// Gibt false zurück (die Umgebungseinstellung gibt vor, 2 ** 8 Farben zu unterstützen).

writeStream.isTTY

Hinzugefügt in: v0.5.8

Ein boolean, der immer true ist.

writeStream.moveCursor(dx, dy[, callback])

[Verlauf]

VersionÄnderungen
v12.7.0Der Write()-Callback des Streams und der Rückgabewert werden offengelegt.
v0.7.7Hinzugefügt in: v0.7.7
  • dx <number>
  • dy <number>
  • callback <Function> Wird aufgerufen, sobald die Operation abgeschlossen ist.
  • Gibt zurück: <boolean> false, wenn der Stream möchte, dass der aufrufende Code auf das Ereignis 'drain' wartet, bevor weitere Daten geschrieben werden; andernfalls true.

writeStream.moveCursor() bewegt den Cursor dieses WriteStream relativ zu seiner aktuellen Position.

writeStream.rows

Hinzugefügt in: v0.7.7

Eine number, die die Anzahl der Zeilen angibt, die das TTY aktuell hat. Diese Eigenschaft wird aktualisiert, wenn das Ereignis 'resize' ausgelöst wird.

tty.isatty(fd)

Hinzugefügt in: v0.5.8

Die Methode tty.isatty() gibt true zurück, wenn die gegebene fd mit einem TTY verbunden ist, und false, wenn dies nicht der Fall ist, einschließlich, wenn fd keine nicht-negative Ganzzahl ist.