Hemen hemen her makinemdeki farklı bir dizine 'cd' yaptığımda (bu durumda, Mac OS X 10.6.7 çalıştırarak) komut satırı üzerinden (bash) hemen içeriğini almak için hemen 'ls' yazdım bu dizinde. İstenilen dizine geçmesi için 'cd' yi geçersiz kılmanın bir yolunu bulmaya çalışıyorum ve ardından listeyi bana tek seferde veriyor.
~ / .Bash_profile dosyasına eklenmiş aşağıdaki satırla çalışarak aradığım temel işlevselliği elde edebildim
function cl() { cd "$@"; ls -l; }
Bu beklendiği gibi çalışır. İstenen dizine geçip ardından içeriğini gösterme. Bir sorunla karşılaştığım yerde yeni bir "cl" komutu oluşturmak yerine "cd" yi geçersiz kılmaya çalışıyor.
Aşağıdaki şeyler yapma işi
##### Attempt 1 #####
# Hangs the command line
function cd() { cd "$@"; ls -l; }
##### Attempt 2 #####
# Hangs the command line
function cd() { 'cd' "$@"; ls -l; }
##### Attempt 3 #####
# Does not change directory.
# Does list contents, but of the directory where you started.
function cd() { /usr/bin/cd "$@"; ls -l; }
#### Other attempts that fail in various ways #####
alias cd=cd "$@"; ls -la;
alias cd="cd '$@'; ls -la;"
alias cd='cd "$@"'; ls -la;
alias cd=/usr/bin/cd "$@"; ls -la;
Ayrıca çalışmayan 'cl' işlevine işaret eden bir diğer ad oluşturmanın yanı sıra listede olmayan birkaç diğer yinelemeyi de denedim. Hiçbiri işe yaramadı.
Dokümantasyonda okuduklarım, 'cd' nin harici bir komut olarak çalıştırılamadığı gerçeğinden bahsediyor (fonksiyonun onu kullanması gereken şekilde anlıyorum).
Böylece şu anda "cl" komutumu kullanabilir ve istediğimi elde edebilirim, ancak soru şu / kalır:
İstenilen dizinde değişiklik yapması ve daha sonra başka bir şey yapması için 'cd' davranışını geçersiz kılmanın bir yolu var mı?