Відповіді:
lце псевдонім для ls -CF, який веде себе інакше, ніж звичайнийls .
-C-Cробить lsдрук виводу у формі стовпця. Коли stdout є терміналом (замість того, щоб перенаправлятись на файл або нетермінальний пристрій або переносити на іншу команду), -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) виводиться у формі стовпців незалежно від типу пристрою stdout. ls -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*
...
Тут:
/ означає запис - каталог.* означає, що запис - це звичайний файл і виконується (тобто має виконуваний файл) права ).Є кілька інших показників:
@означає, що запис є символічним посиланням (див. також man symlink).|означає, що запис є пристроєм FIFO (пам’ятайте, багато ресурсів в ОС, схожі на Unix, представлені записами файлової системи ).=означає, що запис є розеткою .>означає вхід - двері .--classifyПрапор та --indicator-style=classifyеквівалентні -F.
Джерело: Посібник GNU Coreutils , Розділ 10.1.5 Загальне форматування вихідних даних
l( ls -CF) подібний, але не такий, якls .Також добре пам’ятати:
Зазвичай це використовується для визначення параметрів, які широко вважаються як дуже корисними, так і нешкідливими, наприклад, автоматичне забарвлення (коли колір застосовується, коли stdout не перенаправлений або є терміналом, тому коди евакуації, що вказують кольори, практично гарантуються, що їх неправильно трактують).
lsсама по собі є псевдонімом.ek@Kip:/$ alias ls
alias ls='ls --color=auto'
То яка команда насправді виконується при запуску l? Цей:
/bin/ls --color=auto -CF
bash) розв'язує команди, які не містять /першого, що з’являється в матчі PATH, що в Ubuntu for lsє /bin/ls.Так lвирішує, до ls -CFякого вирішується ls --color=auto -CF.
Ці псевдоніми існують, оскільки вони налаштовані таким чином за замовчуванням, але кожен користувач може змінити свої псевдоніми. Дивіться man alias, Розділ 25 та Додаток M у Посібнику з розширеного сценарію Bash та як зберегти мої записи "псевдоніму" назавжди .
Пов'язане: Що означають різні кольори у л?
Насправді обидва 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$
lі рівнини lsє НЕ те ж саме - вони просто сталося , щоб зробити той же результат для цих конкретних файлів, так як не було жодного каталоги, виконувані, символічні посилання, або вузли пристрою (і стандартний висновок був термінал).
alias l='ls -CF'так що це не те саме. Крім того, якщо ви хочете отримати більш короткий вихід, ви можете запустити alias l.