बस हर बार मैं अपनी मशीन पर एक अलग निर्देशिका में 'सीडी' (इस मामले में, मैक ओएस एक्स 10.6.7) कमांड लाइन (जो कि बैश है) के माध्यम से, मैं तुरंत सामग्री की सूची प्राप्त करने के लिए 'ls' टाइप करता हूं। उस निर्देशिका में। मैं 'cd' को ओवरराइड करने का एक तरीका निकालने की कोशिश कर रहा हूं ताकि यह अनुरोधित निर्देशिका में बदल जाए और फिर मुझे एक शॉट में सूची प्रदान करे।
मैं अपनी ~ / .bash_profile में जोड़ी गई मूल पंक्ति के साथ काम करने के लिए जो मूल कार्यशीलता देख रहा हूँ, उसे प्राप्त करने में सक्षम हूँ
function cl() { cd "$@"; ls -l; }
यह उम्मीद के मुताबिक काम करता है। अनुरोधित निर्देशिका में परिवर्तन करना और फिर मुझे सामग्री दिखाना। जहां मैं एक मुद्दे में दौड़ता हूं, वह एक नया "सीएल" कमांड बनाने के बजाय "सीडी" को ओवरराइड करने की कोशिश कर रहा है।
निम्नलिखित चीजें काम नहीं करती हैं
##### 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;
मैंने कई अन्य पुनरावृत्तियों की भी कोशिश की, जो एक उपनाम बनाने के साथ-साथ काम करने वाले 'cl' फ़ंक्शन की ओर भी सूचीबद्ध नहीं हैं। जिसमें से कोई भी काम नहीं किया।
मैंने प्रलेखन में इस तथ्य के बारे में बात की है कि 'सीडी' को एक बाहरी कमांड के रूप में नहीं चलाया जा सकता है (जो कि मुझे समझ में आता है कि फ़ंक्शन को इसका उपयोग करने की आवश्यकता होगी)।
इसलिए, मैं वर्तमान में अपने "cl" कमांड का उपयोग कर सकता हूं और जो मैं चाहता हूं वह प्राप्त कर सकता हूं, लेकिन सवाल यह है कि:
क्या 'सीडी' के व्यवहार को ओवरराइड करने का एक तरीका है कि इसे अनुरोधित निर्देशिका में बदल दिया जाए और फिर बाद में कुछ और किया जाए?