Signatur
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
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;
}
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;
// 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.