निर्देशिका सिम्बल का अनुसरण करते हुए भी लंबे प्रारूप (-l) का उपयोग कैसे करें?


27

मैंने देखा है कि ls -lन केवल आउटपुट स्वरूपण को बदलता है, बल्कि यह भी बताया जाता है कि निर्देशिका सीमंलिंक को कैसे संभाला जाता है:

> ls /rmn
biweekly.sh  daily.sh  logs ...

> ls -l /rmn
lrwxrwxrwx 1 root root 18 Feb 11  2011 /rmn -> /root/maintenance/

मुझे इस बात की विस्तृत सूची मिलनी चाहिए /rmnकि /rmnसिमिलर के बारे में जानकारी नहीं है ।

एक काम के आस-पास मैं सोच सकता हूं कि एक शेल फ़ंक्शन बनाना है जो कुछ इस तरह से करता है:

cd /rmn
ls -l
cd -

लेकिन ऐसा लगता है कि यह बहुत ज्यादा हैक करने वाला है, खासकर जब से इसका अगला उपयोग गड़बड़ हो जाता है cd -। क्या कोई बेहतर तरीका है?

(मैं CentOS 2.6.9 पर हूं)


मैंने उस पर भी गौर किया और यह देखने के लिए गया कि क्या किसी ने भी देखा है। इसी तरह मैं यहां आया। :)
येवगेनी अफानसैयेव

जवाबों:


27

देखें कि क्या आपके ls में विकल्प हैं:

 -H, --dereference-command-line
     follow symbolic links listed on the command line 
 --dereference-command-line-symlink-to-dir
     follow each command line symbolic link that points to a directory

यदि वे मदद नहीं करते हैं, तो आप अपने मैक्रो काम को बिना गड़बड़ cd -किए कर सकते हैं:

(cd /rmn ; ls -l)

जो कि एक सबशेल में चलता है।


यह है -H, और यह चाल है। धन्यवाद!
रोमनस्टैंड

4
मैं वास्तव में चाहता हूं कि --dereference-command-line-symlink-to-dirइसका संक्षिप्त रूप था।
व्रचिन

14

मुझे इस बारे में कोई समस्या नहीं है कि इस साधारण समस्या के बारे में सोच इतनी जटिल क्यों है - लेकिन शायद मुझे सिर्फ सवाल गलत तरीका लगा। वैसे भी: जब मुझे एक समान कार्यक्षमता की आवश्यकता थी, तो मैंने उपयोग किया:

ls -lL

यही मेरे मामले में चाल चली। से lsआदमी पेज:

-L, --dereference
     when showing file information for a symbolic link, 
     show  information  for  the file the link references
     rather than for the link itself

उदाहरण के लिए, मैंने /media/stickअपने USB स्टिक पर डेटा एक्सेस करने के लिए एक शॉर्टकट बनाया है । ls -l /media/stickवास्तविक लिंक दिखाएगा, जबकि USB स्टिक पर सामग्रीls -lL /media/stick दिखाएगा ।

की अंदरूनी कामकाज के बीच अंतर के बारे में कुछ गहरे अनुसंधान के बाद -Hऔर -L, मैं अंत में पर इस मामले के बारे में एक बहुत अच्छा लेख भर में आया था उथला विचार ब्लॉग (यहां तक कि अपने सुख के लिए कुछ साफ खोल स्क्रिप्ट चाल की विशेषता!)

यह दो विकल्पों के बीच सूक्ष्म अंतर को इंगित करता है (मूल मैनुअल की तुलना में बेहतर तरीका!) निम्नानुसार है:

  • -H - कमांड लाइन पर स्पष्ट रूप से उल्लिखित उन लिंक्स को केवल हटा दें
  • -L- यदि वे कमांड लाइन पर उल्लिखित नहीं हैं तो भी डेरेक्शन लिंक

(जब इन दोनों को सरल रोजमर्रा के कार्यों के साथ उपयोग किया जाता है, तो सामान्य रूप से आउटपुट में कोई अंतर नहीं होना चाहिए।)

इसके अलावा: क्या आप लंबे रूप को याद रखना पसंद करते हैं ( --option), यह सबसे --dereferenceअधिक लंबे समय तक राक्षस की तुलना में याद रखने के लिए सबसे कम बोझिल है --dereference-command-line-symlink-to-dir


5
ls -l /rmn/

करना होगा या

ls -l /rmn/.

हालांकि, व्यवहार के साथ और बिना अलग नहीं होना चाहिए -l। क्या आपको इसके लिए एक उपनाम मिला है ls?


3
lsझंडे पागल हैं। -lबनाता है -Hबंद करने के लिए डिफ़ॉल्ट, के रूप में करता है -Fकोरुटिल्स देखें - कौन सी फाइलें सूचीबद्ध हैं
मिकेल

@ मायिक यह प्रतीत होता है कि आप उस बारे में पूरी तरह से सही हैं। और हाँ, यह पागल है। (इसके अलावा, मेरे पास एलएस के लिए एक उपनाम नहीं है, इससे बचने की कोशिश की गई लेकिन परिणाम समान हैं)
रोमनस्टेव

वास्तव में यह POSIX द्वारा भी निर्दिष्ट है। मैं ls='ls -F'वास्तव में एक उपनाम के साथ एक था ।
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.