Risposte:
lè un alias per ls -CF, che si comporta diversamente dalla semplicels .
-C-Ceffettua l' lsoutput di stampa in forma di colonna. Quando stdout è un terminale (anziché essere reindirizzato a un file o dispositivo non terminale o reindirizzato a un altro comando), -Cè implicito. Quindi correre ls -Cè come correre ls. Ma sono non equivalenti quando lsviene ridiretti. Per esempio:
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
...
Al contrario, ls -C(o -l) output in forma di colonna indipendentemente dal tipo di dispositivo stdout. ls -C | lesssembra l'output principale (ma less, naturalmente, impaginato da ).
-FLa principale differenza visibile tra lse lè dovuta al -Fflag, che provoca lsl'aggiunta di suffissi simbolici (chiamati indicatori) alle voci visualizzate. Questi indicatori identificano il tipo di file o directory che sono.
Confronta questo con l'output del primo lscomando sopra:
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*
...
Qui:
/ significa che la voce è una directory.*significa che la voce è un file normale ed è eseguibile (ad esempio, ha autorizzazioni eseguibili ).Ci sono molti altri indicatori:
@significa che la voce è un collegamento simbolico (vedi anche man symlink).|significa che la voce è un dispositivo FIFO (ricordate, molte risorse nei sistemi operativi simili a Unix sono rappresentate da voci del filesystem ).=significa che la voce è un socket .>significa che l'ingresso è una porta .La --classifybandiera e --indicator-style=classifysono equivalenti a -F.
Fonte: manuale GNU Coreutils , sezione 10.1.5 Formattazione generale dell'output
l( ls -CF) è simile ma non uguale a ls.È anche bene tenere a mente:
Questo è comunemente usato per specificare opzioni che sono ampiamente considerate sia estremamente utili che innocue, come la colorazione automatica (dove il colore viene applicato quando non stdoutè indirizzato o è un terminale, quindi i codici di escape che specificano i colori sono praticamente garantiti per non essere male interpretati).
lsè esso stesso un alias.ek@Kip:/$ alias ls
alias ls='ls --color=auto'
Quindi quale comando viene realmente eseguito quando si esegue l? Questo:
/bin/ls --color=auto -CF
bash) risolve i comandi che non contengono /a alla prima corrispondenza che appare PATH, che in Ubuntu lsè /bin/ls.Quindi lrisolve a ls -CFchi si risolve ls --color=auto -CF.
Questi alias esistono perché sono impostati in questo modo per impostazione predefinita, ma ogni utente può modificare i propri alias. Vedi man alias, Capitolo 25 e Appendice M nella Guida avanzata di script Bash e Come salvare le mie voci "alias" per sempre .
Correlati: cosa significano i diversi colori in ls?
In realtà entrambi lse lsono uguali
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
perché significa che c'è un alias di sistema integrato che causa questo. se vuoi vedere, apri il tuo terminale e digita alias, otterrai un output in questo modo
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$
le pianura lssono non lo stesso - hanno appena accaduto per produrre la stessa uscita per quei file particolari, dal momento che nessuno era directory, eseguibile, i collegamenti simbolici, o nodi di dispositivo (e l'output standard era un terminale).
alias l='ls -CF'quindi non è lo stesso. Inoltre, se si desidera ottenere un output più breve, è possibile eseguire alias l.