Yanıtlar:
l
Bir olan takma için ls -CF
, düz farklı davranırls
.
-C
-C
ls
çıktıyı sütun biçiminde yapar . Tüm stdout'u bir terminal (yerine bir dosya ya da olmayan terminal cihazına yönlendirilir ya da başka bir komuta yöneltilen) 'dir, -C
ima edilir. Yani koşmak koşmakla ls -C
aynıdır ls
. Ancak yönlendirildiklerinde veya yönlendirildiğinde eşdeğer değildirlerls
. Örneğin:
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
...
Aksine, ls -C
(veya -l
) ne tür bir cihaz olduğuna bakılmaksızın sütun biçiminde çıktılar stdout
. ls -C | less
üst çıktıya benziyor (ancak less
elbette tarafından sayfalandırıldı ).
-F
Arasındaki temel görünür fark ls
vel
bağlı olmaktır -F
neden olan bayrak, ls
girdileri o görüntüler sembolik ekleri (denilen göstergeler) eklemek için. Bu göstergeler ne tür bir dosya veya dizin olduklarını belirler.
Bunu ls
yukarıdaki ilk komutun çıktısıyla karşılaştırın :
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*
...
Buraya:
/
girişin bir dizin olduğu anlamına gelir.*
girişin normal bir dosya olduğu ve yürütülebilir (yani yürütülebilir izinleri olduğu ) anlamına gelir.Başka göstergeler de var:
@
girişin sembolik bir bağlantı olduğu anlamına gelir (ayrıca bakınız man symlink
).|
girişin bir FIFO cihazı olduğu anlamına gelir (unutmayın, Unix benzeri işletim sistemlerindeki birçok kaynak dosya sistemi girişleriyle temsil edilir ).=
girişin bir soket olduğu anlamına gelir .>
girişin bir kapı olduğu anlamına gelir .--classify
Bayrak ve --indicator-style=classify
eşdeğerdir -F
.
Kaynak: GNU Coreutils kılavuzu , Bölüm 10.1.5 Genel çıktı biçimlendirmesi
l
( ls -CF
) benzer ama aynı değildir olarakls
.Akılda tutulması da iyidir:
Bu, otomatik renklendirme (rengin ne zaman uygulandığı yerlerde) gibi hem son derece yararlı hem de zararsız olarak kabul edilen seçenekleri belirtmek için yaygın olarak kullanılır stdout
değiştirilmediğinde veya bir terminal olduğu , bu nedenle renkleri belirten kaçış kodlarının yanlış yorumlanmamaları neredeyse garanti .
ls
kendisi bir takma addır.ek@Kip:/$ alias ls
alias ls='ls --color=auto'
Peki , çalıştırdığınızda hangi komut gerçekten çalıştırılır l
? Bu:
/bin/ls --color=auto -CF
bash
) bir içermeyen komutlar giderir /
belirdiğini eşleşmeye PATH
, burada Ubuntu'da için ls
IS/bin/ls
.Yani l
giderir için ls -CF
hangi giderir ls --color=auto -CF
.
Bu takma adlar, varsayılan olarak bu şekilde ayarlandıkları için mevcuttur, ancak her kullanıcı takma adlarını değiştirebilir. Bkz man alias
, Bölüm 25 ve Ek M Gelişmiş Bash-Komut Kılavuzu'nda ve nasıl "takma" girdileri tasarruf sonsuza .
Aslında, her iki ls
ve l
eşittir
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
neden buna sebep olan yerleşik bir sistem takma adı olduğu anlamına gelir. görmek istiyorsanız, terminalinizi açın ve yazın, alias
sonra böyle bir çıktı alırsınız
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
Kayar ls
olan değil aynı - sadece ne yok dizinleri, çalıştırılabilir, sembolik veya aygıt düğümleri (ve standart çıkış terminali olarak) olduğu için, bu özel dosyalar için aynı çıktı üretmek için.
alias l='ls -CF'
, bu aynı değil. Ayrıca, daha özlü çıktı almak istiyorsanız, çalıştırabilirsiniz alias l
.