Start · Sprachen · PHP · Referenz · readline_list_history

readline_list_history

Funktion

Gibt die gesamte Readline-Eingabehistorie als Array von Zeichenketten zurück.

seit PHP 4.0.0 Kategorie: io

Signatur

readline_list_history(): array

Beschreibung

readline_list_history() liefert alle bisher in der aktuellen Sitzung gespeicherten Readline-Einträge als indiziertes Array von Zeichenketten. Jeder Eintrag entspricht einer zuvor mit readline() eingelesenen oder explizit per readline_add_history() hinzugefügten Eingabe.

Die Funktion ist nützlich, wenn ein interaktives CLI-Skript die bisherigen Benutzereingaben auswerten, anzeigen oder weiterverarbeiten soll – beispielsweise um Duplikate zu vermeiden, eine Suche über vergangene Befehle anzubieten oder die Historie vor dem Speichern zu filtern.

Die zurückgegebene Reihenfolge entspricht der chronologischen Reihenfolge der Einträge, beginnend mit dem ältesten. Ist die Historie leer, wird ein leeres Array zurückgegeben.

Hinweis: Die Readline-Erweiterung steht nur auf Systemen zur Verfügung, auf denen die GNU-Readline-Bibliothek installiert ist. Unter Windows ist sie standardmäßig nicht verfügbar.

Rückgabewert

Typ
array
Beschreibung
Ein indiziertes Array von Zeichenketten mit allen Einträgen der aktuellen Readline-Historie, geordnet vom ältesten zum neuesten Eintrag. Ist die Historie leer, wird ein leeres Array zurückgegeben.

Beispiele

Eingabehistorie anzeigen

<?php
// Einträge manuell zur Historie hinzufügen (simuliert readline()-Eingaben)
readline_add_history('ls -la');
readline_add_history('cd /var/www');
readline_add_history('php -v');

// Gesamte Historie auflisten
$history = readline_list_history();

echo "Bisher eingegebene Befehle:" . PHP_EOL;
foreach ($history as $index => $entry) {
    echo ($index + 1) . ": " . $entry . PHP_EOL;
}
Bisher eingegebene Befehle: 1: ls -la 2: cd /var/www 3: php -v

Duplikate aus der Historie entfernen und speichern

<?php
// Einige Einträge hinzufügen – darunter Duplikate
readline_add_history('help');
readline_add_history('exit');
readline_add_history('help');
readline_add_history('status');

// Duplikate entfernen
$unique = array_unique(readline_list_history());

echo "Eindeutige Historieneinträge:" . PHP_EOL;
foreach ($unique as $entry) {
    echo "- " . $entry . PHP_EOL;
}

// Bereinigte Historie in Datei speichern
readline_clear_history();
foreach ($unique as $entry) {
    readline_add_history($entry);
}
readline_write_history('/tmp/clean_history.txt');
echo "Historie gespeichert." . PHP_EOL;
Eindeutige Historieneinträge: - help - exit - status Historie gespeichert.

// Wichtig · Fallstricke

Die Funktion ist nur verfügbar, wenn PHP mit der Readline-Erweiterung kompiliert wurde (--with-readline). Unter Windows steht stattdessen ggf. die readline-Stub-Implementierung zur Verfügung, die jedoch nicht alle Funktionen unterstützt.

Die Funktion gibt immer die aktuelle In-Memory-Historie zurück – nicht zwingend den Inhalt einer auf der Festplatte gespeicherten Historiendatei. Um eine gespeicherte Datei zu laden, muss zuvor readline_read_history() aufgerufen werden.