L कमांड क्या करती है?


19

lमेरी मशीन पर एक कमांड उपलब्ध है जो कुछ भी नहीं करता प्रतीत होता है। which lकोई उत्पादन भी नहीं करता है। क्या यह एक वास्तविक आदेश है, और क्या यह वास्तव में कुछ भी करता है?

जवाबों:


20

lके लिए एक उपनाम है ls -CF, जो सादे से अलग व्यवहार करता हैls

-C

-Cबनाता lsस्तंभ के रूप में प्रिंट आउटपुट। जब स्टडआउट एक टर्मिनल होता है (बजाय किसी फ़ाइल या गैर-टर्मिनल डिवाइस पर पुनर्निर्देशित किया जाता है, या किसी अन्य कमांड को पाइप किया -Cजाता है ), निहित है। तो दौड़ना ls -Cभी दौड़ने जैसा ही है ls। लेकिन पुनर्निर्देशित या पाइप किए जाने पर वे समतुल्य नहीं होते हैं ls। उदाहरण के लिए:

ek@Kip:~/firefox$ ls
application.ini             libfreebl3.chk    libxpcom.so
blocklist.xml               libfreebl3.so     libxul.so
chrome                      libmozalloc.so    mozilla-xremote-client
chrome.manifest             libmozsqlite3.so  omni.ja
components                  libnspr4.so       platform.ini
crashreporter               libnss3.so        plugin-container

...

ek@Kip:~/firefox$ ls | less

application.ini
blocklist.xml
chrome
chrome.manifest
components
crashreporter

...

इसके विपरीत, ls -C(या -l) कॉलम फॉर्म में आउटपुट होता है, चाहे वह किसी भी प्रकार का हो stdoutls -C | lessशीर्ष आउटपुट की तरह दिखता है (लेकिन lessनिश्चित रूप से पृष्ठांकित )।

-F

के बीच मुख्य अंतर दिखाई lsऔर lकी वजह से है -Fझंडा है, जिसकी वजह lsप्रविष्टियों यह प्रदर्शित करता है के लिए प्रतीकात्मक प्रत्यय (संकेतक कहा जाता है) संलग्न करने के लिए। ये संकेतक पहचानते हैं कि वे किस प्रकार की फ़ाइल या निर्देशिका हैं।

lsउपरोक्त पहले कमांड के आउटपुट से इसकी तुलना करें :

ek@Kip:~/firefox$ ls -F
application.ini             libfreebl3.chk     libxpcom.so*
blocklist.xml               libfreebl3.so*     libxul.so*
chrome/                     libmozalloc.so*    mozilla-xremote-client*
chrome.manifest             libmozsqlite3.so*  omni.ja
components/                 libnspr4.so*       platform.ini
crashreporter*              libnss3.so*        plugin-container*

...

यहाँ:

  • / मतलब प्रविष्टि एक निर्देशिका है।
  • *मतलब प्रविष्टि एक सामान्य फ़ाइल है और निष्पादन योग्य है (यानी, निष्पादन योग्य अनुमतियाँ हैं )।
  • किसी भी संकेतक की अनुपस्थिति का मतलब है कि प्रविष्टि एक सामान्य फ़ाइल है जो निष्पादन योग्य नहीं है।

कई अन्य संकेतक हैं:

--classifyझंडा और --indicator-style=classifyके बराबर हैं -F

स्रोत: जीएनयू कोरुटिल्स मैनुअल , धारा 10.1.5 सामान्य आउटपुट स्वरूपण

अंत में, l( ls -CF) के समान है, लेकिन है नहीं एक ही रूप में ls

यह भी ध्यान में रखना अच्छा है:

एक ही पाठ एक नियमित आदेश और एक उपनाम दोनों हो सकता है।

यह आमतौर पर उन विकल्पों को निर्दिष्ट करने के लिए उपयोग किया जाता है जो व्यापक रूप से अत्यधिक उपयोगी और हानिरहित दोनों माना जाता है, जैसे कि स्वचालित stdoutरंगीकरण (जहां रंग अप्रत्यक्ष रूप से लागू होता है या एक टर्मिनल होता है, इसलिए रंग निर्दिष्ट करने वाले भागने के कोडों की वास्तव में गलत व्याख्या नहीं होने की गारंटी है)।

इस सिद्धांत से, lsखुद एक उपनाम है।

ek@Kip:/$ alias ls
alias ls='ls --color=auto'

जब आप चलते हैं तो वास्तव में क्या कमांड निष्पादित होती है l? यह वाला:

/bin/ls --color=auto -CF
  1. शेल ( bash) उन कमांडों को हल करता /है PATH, जिनमें उबंटू में होने वाला पहला मैच नहीं है , जो कि उबंटू में lsहै /bin/ls
  2. उपनाम में उपनाम हो सकते हैं। एलियास रिज़ॉल्यूशन पुनरावर्ती नहीं है (एक उपनाम खुद को कॉल नहीं कर सकता है, हालांकि यह एक नियमित कमांड कह सकता है जिसका समान नाम है)। लेकिन यह घोंसले के शिकार का समर्थन करता है ।

इसलिए जो संकल्प lकरता है ls -CF, उसका समाधान करता है ls --color=auto -CF

उपनाम बदले जा सकते हैं।

ये उपनाम मौजूद हैं क्योंकि वे डिफ़ॉल्ट रूप से इस तरह स्थापित हैं, लेकिन हर उपयोगकर्ता अपने उपनाम बदल सकता है। देखें man alias, एडवांस्ड बैश-स्क्रिप्टिंग गाइड में अध्याय 25 और परिशिष्ट एम , और मेरी "उपनाम" प्रविष्टियों को हमेशा के लिए कैसे बचाएं

सम्बंधित: ls में विभिन्न रंगों का क्या अर्थ है?


6

असल में दोनों lsऔर lबराबर हैं

raja@badfox:~/Pictures$ l
des.png
Screenshot from 2012-09-22 19:37:03.png
Screenshot from 2012-09-22 19:37:11.png
Screenshot from 2012-09-22 19:37:12.png
Untitled.png
raja@badfox:~/Pictures$ ls
des.png
Screenshot from 2012-09-22 19:37:03.png
Screenshot from 2012-09-22 19:37:11.png
Screenshot from 2012-09-22 19:37:12.png
Untitled.png

इसका मतलब यह है कि इसके लिए एक अंतर्निहित प्रणाली उर्फ ​​है। अगर आप देखना चाहते हैं, aliasतो अपना टर्मिनल खोलें और टाइप करें तो आपको इस तरह आउटपुट मिलेगा

raja@badfox:~/Pictures$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias lock='gnome-screensaver-command -l'
alias ls='ls --color=auto'
alias sms='php .sms.php'
raja@badfox:~/Pictures$ 

रहस्य सुलझाया :)
आर्मंड

6
@Alison lऔर सादे lsहैं नहीं एक ही - वे बस हुआ , के बाद से कोई भी निर्देशिका, निष्पादन, सिमलिंक, या डिवाइस नोड्स (और मानक उत्पादन एक टर्मिनल था) थे उन विशेष फ़ाइलों के लिए एक ही उत्पादन का उत्पादन करने के लिए।
एलिया कगन

आप देख सकते हैं, alias l='ls -CF'इसलिए यह समान नहीं है। इसके अलावा, यदि आप अधिक रसीला उत्पादन प्राप्त करना चाहते हैं, तो आप चला सकते हैं alias l
वेजेंड्रिया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.