Odpowiedzi:
lto alias dla ls -CF, który działa inaczej niż zwykłyls .
-C-Ctworzy lswydruk w formie kolumny. Gdy standardowe wyjście jest terminal (zamiast przekierowany do pliku lub urządzenia bez końca, lub wyprowadzony do innego polecenia) -Cjest domyślnie. Więc bieganie ls -Cjest takie samo jak bieganie ls. Ale są nie równoważne, gdy lsjest przekierowywany lub rurami. Na przykład:
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
...
Natomiast ls -C(lub -l) dane wyjściowe w postaci kolumn niezależnie od rodzaju urządzenia stdout. ls -C | lesswygląda jak górne wyjście (ale lessoczywiście na stronie).
-FGłówna widoczna różnica między lsi lwynika z -Fflagi, która powoduje lsdołączanie symbolicznych sufiksów (zwanych wskaźnikami) do wyświetlanych pozycji. Wskaźniki te identyfikują rodzaj pliku lub katalogu.
Porównaj to z wynikiem pierwszego lspolecenia powyżej:
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*
...
Tutaj:
/ oznacza, że wpis jest katalogiem.*oznacza, że wpis jest normalnym plikiem i jest wykonywalny (tzn. ma uprawnienia do wykonywania ).Istnieje kilka innych wskaźników:
@oznacza, że wpis jest dowiązaniem symbolicznym (patrz także man symlink).|oznacza, że wpis jest urządzeniem FIFO (pamiętaj, że wiele zasobów w systemach uniksopodobnych jest reprezentowanych przez wpisy systemu plików ).=oznacza, że wejście jest gniazdem .>oznacza, że wejście to drzwi .--classifyFlaga i --indicator-style=classifysą równoważne -F.
Źródło: Podręcznik GNU Coreutils , Rozdział 10.1.5 Ogólne formatowanie wyjściowe
l( ls -CF) jest podobny, ale nie taki sam jak ls.Warto również pamiętać:
Jest to powszechnie używane do określania opcji, które są powszechnie uważane zarówno za bardzo przydatne, jak i nieszkodliwe, takie jak automatyczne kolorowanie (gdy kolor jest stosowany, gdy nie stdoutjest przekierowany lub jest terminalem, więc kody ucieczki określające kolory są praktycznie gwarantowane, że nie zostaną źle zinterpretowane).
lssam w sobie jest pseudonimem.ek@Kip:/$ alias ls
alias ls='ls --color=auto'
Więc jakie polecenie naprawdę zostanie wykonane po uruchomieniu l? Ten:
/bin/ls --color=auto -CF
bash) usuwa poleceń, które nie zawierają /pierwszego spotkania znajdującym się w PATH, co w Ubuntu lsjest /bin/ls.Więc lrozwiązuje, do ls -CFktórego rozwiązuje ls --color=auto -CF.
Te aliasy istnieją, ponieważ są domyślnie skonfigurowane w ten sposób, ale każdy użytkownik może zmienić swoje aliasy. Patrz man alias, rozdział 25 i załącznik M w Advanced Bash-Scripting Guide, a Jak uratować moje „alias” wpisów na zawsze .
Powiązane: Co oznaczają różne kolory w ls?
Właściwie oba lsi lsą równe
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
dlaczego oznacza, że przyczyną tego jest wbudowany alias systemowy. jeśli chcesz zobaczyć, otwórz terminal i wpisz, aliasa otrzymasz wynik w ten sposób
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$
li zwykły niels są takie same - po prostu zdarzyło się, że generują takie same dane wyjściowe dla tych konkretnych plików, ponieważ żaden nie był katalogami, plikiem wykonywalnym, dowiązaniami symbolicznymi lub węzłami urządzeń (a standardowym wyjściem był terminal).
alias l='ls -CF'więc to nie to samo. Ponadto, jeśli chcesz uzyskać bardziej zwięzły wynik, możesz uruchomić alias l.