Nach cd automatisch ls ausführen
Hallo Listenteilnehmer Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es. Mit einem alias cd='cd;clear;ls' leider nicht. Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte. Bin dankbar für jeden Lösungshinweis. alexander fieger -- Alexander Fieger | alex.fieger@keule4u.de Leider bleibt man bleich und fett beim surfen durch das Internet --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hi Alexander, Alexander Fieger wrote on Fri, Dec 08 2000:
Hallo Listenteilnehmer
Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es. Mit einem alias cd='cd;clear;ls' leider nicht. Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte.
Ich denke mal, weil ich nirgendwo ein Programm namens cd finde, dass cd ein interner Befehl der shell ist. Bei so etwas kann ich mir nicht denken, dass ein alias gut ist, diesen Befehl zu ändern. Dann bleibt für dich also nur übrig, den alias anders zu nennen. Gruss Herbert -- Beim Schreiben dieser Mail stand mir ein freundlicher Pinguin zur Seite. Outside of a dog, a book is man's best friend. Inside of a dog, it is too dark to read. (Groucho Marx) --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Herbert Hoepfner wrote:
Hi Alexander,
Alexander Fieger wrote on Fri, Dec 08 2000:
Hallo Listenteilnehmer
Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es. Mit einem alias cd='cd;clear;ls' leider nicht. Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte.
Ich denke mal, weil ich nirgendwo ein Programm namens cd finde, dass cd ein interner Befehl der shell ist.
Richtig, cd ist ein interner Befehl der bash, kann aber auch (unter anderen Shells, anderen Unixen) ein externer Befehl sein.
Bei so etwas kann ich mir nicht denken, dass ein alias gut ist, diesen Befehl zu ändern. Es spielt keine Rolle ob intern oder extern, es ist ganz allgemein eine sehr schlechte Idee Standard-Programmnamen als alias-Namen zu verwenden, da viele Programme (insb. Shellskripte) davon ausgehen, dass Standard-Programme ein gewisses Verhalten aufweisen (insb. Exitstatus, Ausgaben, Interaktives Verhalten). Verändert man dies, kann dies ein System ziemlich beinträchtigen.
Dann bleibt für dich also nur übrig, den alias anders zu nennen. Es geht schon, nur muss man teuflisch aufpassen.
Ralf --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Fri, Dec 08, 2000 at 05:42:51PM +0100 schrieb Alexander Fieger
Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es. Mit einem alias cd='cd;clear;ls' leider nicht. ^^ Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte.
Hallo Alexander, also der Befehl "cd" ist ein bashbuiltin, wo man IMHO den Namen nicht veraendern kann. Deswegen kann das "alias cd=xxx" nicht funktionieren, da der Befehl fest vergeben ist. Hoffe, das dir das was nuetzt, denn du musst halt nur ein anderes alias nehmen, wie du ja mit "alias c=xxx" schon selbst gemerkt hast. CU Michael -- A train station is a station where a train stops. But what the hell is a workstation? --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo Alexander, * Alexander Fieger schrieb:
Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es.
Das bezweifle ich, denn der Name des Verzeichnisses wird hier nur vom Befehl ls "gesehen", "cd" wird ohne Parameter ausgeführt und du landest deshalb in deinem Home-Verzeichnis.
Mit einem alias cd='cd;clear;ls' leider nicht. Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte.
Du könntest dir eine Shell-Funktion schreiben, die du in die ~/.bashrc setzt: cd() { builtin cd "$@" && clear; ls } Nach dem Editieren der .bashrc neu einloggen oder "bash" starten oder die .bashrc sourcen (Befehl: "source .bashrc" oder ". .bashrc"). Da "cd" ein bash-internes Programm ist, muss man innerhalb der Funktion "cd" den Befehl "builtin" benutzen, damit die Shell zwischen der Funktion "cd" und dem shellinternen Befehl "cd" unterscheiden kann. Da Funktionen eine höhere Priorität als bashinterne Befehle haben, würde es sonst hier zu einer Rekursion kommen (die Funktion riefe sich selbst auf). christian -- Even if you do learn to speak correct English, whom are you going to speak it to? -- Clarence Darrow --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo SuSE-Liste, * Christian Schult schrieb:
Du könntest dir eine Shell-Funktion schreiben, die du in die ~/.bashrc setzt:
cd() { builtin cd "$@" && clear; ls ^^^^^^^^^ Da machen wir dann noch eine Klammer drum, sonst wird clear und ls auch ausgeführt, wenn ein Verzeichniswechsel nicht möglich war.
cd() { builtin cd "$@" && (clear; ls) } christian -- "I'd rather have a bottle in front of me than a frontal lobotomy." --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo SuSE-Liste, * Christian Schult schrieb:
* Christian Schult schrieb:
Du könntest dir eine Shell-Funktion schreiben, die du in die ~/.bashrc setzt:
cd() { builtin cd "$@" && clear; ls ^^^^^^^^^ Da machen wir dann noch eine Klammer drum, sonst wird clear und ls auch ausgeführt, wenn ein Verzeichniswechsel nicht möglich war.
Haltet mich nicht für merkwürdig (zu spät, oder?), aber lediglich ls wird ausgeführt wenn cd fehlschlug. Ist trotzdem unschön. :-)
cd() { builtin cd "$@" && (clear; ls) }
christian -- »Wo kann ich Vögel zum Verkauf anbieten??« - »Bei de.rec.tiere.katze« Anonymus, Marvin Nassowitz, de.newusers.questions --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Christian schrieb:
Du könntest dir eine Shell-Funktion schreiben, die du in die ~/.bashrc setzt:
cd() { builtin cd "$@" && clear; ls }
Nach dem Editieren der .bashrc neu einloggen oder "bash" starten oder die .bashrc sourcen (Befehl: "source .bashrc" oder ". .bashrc").
Da "cd" ein bash-internes Programm ist, muss man innerhalb der Funktion "cd" den Befehl "builtin" benutzen, damit die Shell zwischen der Funktion "cd" und dem shellinternen Befehl "cd" unterscheiden kann. Da Funktionen eine höhere Priorität als bashinterne Befehle haben, würde es sonst hier zu einer Rekursion kommen (die Funktion riefe sich selbst auf).
Das wars. Genial. Danke dir Christian für die ausfürliche Erläuterung zur Lösung. alexander -- Alexander Fieger | alex.fieger@keule4u.de Leider bleibt man bleich und fett beim surfen durch das Internet --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Fri, Dec 08, 2000, Christian Schult wrote:
* Alexander Fieger schrieb:
Ich möchte gerne, dass nach jedem Verzeichnisswechsel automatisch der Inhalt des Verzeichnisses (ls) angezeigt wird. Ich hab schon mit alias gespielt aber es leider nicht hinbekommen. Mit einem alias c='cd;clear;ls' funktioniert es.
Mit einem alias cd='cd;clear;ls' leider nicht. Ich hab schon die manpage von Bash und einige anderen Dokus gelesen aber nichts gefunden für eine Lösung meines Problems hilfreich sein könnte.
Du könntest dir eine Shell-Funktion schreiben, die du in die ~/.bashrc setzt:
cd() { builtin cd "$@" && clear; ls }
Da "cd" ein bash-internes Programm ist, muss man innerhalb der Funktion "cd" den Befehl "builtin" benutzen, damit die Shell zwischen der Funktion "cd" und dem shellinternen Befehl "cd" unterscheiden kann. Da Funktionen eine höhere Priorität als bashinterne Befehle haben, würde es sonst hier zu einer Rekursion kommen (die Funktion riefe sich selbst auf).
In csh/tcsh funktiniert der alias cd='cd;clear;ls', allerdings natürlich nur zum Wechsel ins $HOME-Verzeichnis. Die shell scheint alias-looping für interne Befehle automatisch zu verhindern. Bei externen Befehlen wäre die korrekte Syntax cd='\cd;clear;ls'. Dabei umgeht der \ den alias: oak ~> which ls ls: ein Alias für /usr/bin/ls $LS_OPTIONS oak ~> which \ls /usr/bin/ls Nur so der Vollständigkeit halber und falls sich jemand für csh interessiert... MfG Gunther -- Dipl.-Ing. Gunther Kuhlmann Gunther_Kuhlmann@mentorg.com Tel.: +44 (0)12 52 / 74 83 25 PGP: E6 BC 78 6B E6 09 C7 16 AB 5D 9A 9A D7 1C 01 FB -- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (6)
-
alex.fieger@keule4u.de
-
corsepiu@faw.uni-ulm.de
-
cschult@gmx.de
-
gunther_kuhlmann@mentorg.com
-
herbert@hoepfner.prima.de
-
michael@walfinger.de