Die Shell ist ja primär dazu gemacht, Kommandos des Benutzers entgegenzunehmen und diese dann abzuarbeiten. Eine der ersten Verbesserungen, die die C-Shell gegenüber der originalen Bourne Shell hatte, war die Fähigkeit, die Kommandos, die schon einmal getippt waren wieder aufrufen zu können. Das ist gerade in einem System, in dem sehr komplexe, lange und schwer zu merkende Befehle eingegeben werden ein nicht zu unterschätzender Vorteil.
Jede Instanz der Shell hält sich einen eigenen Kommandozeilenbuffer, in dem die bisher eingegebenen Befehle gespeichert werden. Nach dem Beenden einer Shell mit exit (oder Strg-d) schreibt die „sterbende Shell“ diesen Kommandozeilenspeicher noch in eine Datei (wenn nichts anderes angegeben, dann handelt es sich um die Datei ~/.bash_history). Beim Starten der nächsten Shell werden diese Kommandos dann wieder in den Kommandozeilenspeicher eingelesen, so dass die letzten Kommandos auch am nächsten Tag wieder zur Verfügung stehen. Standardmäßig werden so immer die letzten 500 Befehle zwischengespeichert.
Mit den Tasten Pfeil hoch und Pfeil runter kann in diesem Kommandozeilenspeicher geblättert werden, ähnlich, wie bei dem bekannten DOS-Programm DOSKEY. Es stehen aber auch noch andere Funktionen zur Verfügung, um den Kommandozeilenspeicher zu durchsuchen oder sich in ihm zu bewegen. Die wichtigsten sind:
Strg-R
Sucht rückwärts im Kommandozeilenspeicher nach einem Befehl. Jedes eingegebene Zeichen verursacht sofort einen Sprung auf die nächste passende Befehlszeile. So müssen für einen komplexen Befehl nur die ersten signifikanten Zeichen eingegeben werden.
Strg-S
Sucht vorwärts im Kommandozeilenspeicher. Das hat natürlich nur einen Sinn, wenn man bereits zurückgeblättert hat. Sonst entspricht es der Rückwärtssuche.
Esc-<
Springt zum ersten Befehl im Kommandozeilenspeicher.
Esc->
Springt zum letzten Befehl im Kommandozeilenspeicher. Das ist meistens die leere Zeile, wenn man nicht schon etwas getippt hatte, ohne Enter zu drücken und dann zurückgeblättert hat.