Réponses:
lest un alias pour ls -CF, qui se comporte différemment de plainls .
-C-Crend lsla sortie d'impression sous forme de colonne. Lorsque stdout est un terminal (plutôt que d'être redirigé vers un fichier ou un périphérique non terminal, ou redirigé vers une autre commande), cela -Cest implicite. La course ls -Cest donc la même chose que la course ls. Mais ils ne sont pas équivalents lorsqu'ils lssont redirigés ou redirigés. Par exemple:
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
...
En revanche, ls -C(ou -l) sort sous forme de colonne quel que soit le type d'appareil stdout. ls -C | lessressemble à la sortie supérieure (mais paginée par less, bien sûr).
-FLa principale différence visible entre lset lest due au -Fdrapeau, qui provoque l' lsajout de suffixes symboliques (appelés indicateurs) aux entrées qu'il affiche. Ces indicateurs identifient de quel type de fichier ou de répertoire il s'agit.
Comparez cela à la sortie de la première lscommande ci-dessus:
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*
...
Ici:
/ signifie que l'entrée est un répertoire.*signifie que l'entrée est un fichier normal et est exécutable (c.-à-d. possède des autorisations exécutables ).Il existe plusieurs autres indicateurs:
@signifie que l'entrée est un lien symbolique (voir aussi man symlink).|signifie que l'entrée est un périphérique FIFO (rappelez-vous, de nombreuses ressources dans les systèmes d'exploitation de type Unix sont représentées par des entrées de système de fichiers ).=signifie que l'entrée est une prise .>signifie que l'entrée est une porte .Le --classifydrapeau et --indicator-style=classifysont équivalents à -F.
Source: Manuel GNU Coreutils , Section 10.1.5 Formatage général des sorties
l( ls -CF) est similaire mais pas identique à ls.Il est également bon de garder à l'esprit:
Ceci est couramment utilisé pour spécifier des options qui sont largement considérées à la fois comme très utiles et sans danger, telles que la colorisation automatique (où la couleur est appliquée lorsqu'elle stdoutn'est pas redirigée ou est un terminal, de sorte que les codes d'échappement spécifiant les couleurs sont pratiquement garantis pour ne pas être mal interprétés).
lsest lui-même un alias.ek@Kip:/$ alias ls
alias ls='ls --color=auto'
Alors, quelle commande est vraiment exécutée lorsque vous exécutez l? Celui-là:
/bin/ls --color=auto -CF
bash) résout les commandes qui ne contiennent pas /de la première correspondance apparaissant dans PATH, ce qui dans Ubuntu for lsest /bin/ls.lRésout donc à ls -CFqui se résout ls --color=auto -CF.
Ces alias existent parce qu'ils sont configurés de cette façon par défaut, mais chaque utilisateur peut modifier ses alias. Reportez man alias-vous au chapitre 25 et à l' annexe M du Guide de script de script avancé et à la façon de sauvegarder à jamais mes entrées "d'alias" .
En relation: Que signifient les différentes couleurs dans ls?
En fait les deux lset lsont égaux
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
pourquoi signifie qu'il y a un alias système intégré à l'origine de cela. si vous voulez voir, ouvrez votre terminal et tapez aliasalors vous obtiendrez une sortie comme celle-ci
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$
let plaine lssont pas les mêmes - ils ne se sont passées pour produire la même sortie pour les fichiers particuliers, car il n'y en avait des répertoires, des exécutables, des liens symboliques ou des noeuds de périphériques (et la sortie standard est un terminal).
alias l='ls -CF'donc ce n'est pas pareil. De plus, si vous souhaitez obtenir une sortie plus succincte, vous pouvez exécuter alias l.