lコマンドは何をしますか?


19

l私のマシンには、何もしないように見えるコマンドがあります。 which l出力も生成されません。これは本当のコマンドですか、実際に何かをしますか?

回答:


20

lある別名のためls -CF平野は異なる動作ls

-C

-C作るlsコラム形式で印刷出力を。場合stdoutが端末(よりむしろファイルまたは非端末装置にリダイレクト、または別のコマンドにパイプされる)であり、-C暗示されています。したがって、実行ls -Cはrunning と同じ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)デバイスの種類に関係なく列形式で出力されますstdoutls -C | lessトップ出力のように見えます(ただしless、もちろんページングされます)。

-F

間の主な目に見える違いlslに起因する-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*

...

ここに:

  • / エントリがディレクトリであることを意味します。
  • *エントリが通常のファイルで、実行可能であることを意味する(すなわち、実行可能持つ権限を)。
  • インジケータがない場合、エントリは実行可能ではない通常のファイルです。

他にもいくつかのインジケータがあります。

--classifyフラグと--indicator-style=classifyに相当します-F

出典:GNU Coreutilsマニュアルセクション10.1.5一般的な出力フォーマット

結論として、lls -CF)は似ていますが、同じではありませんls

留意することも良いです:

同じテキストを通常のコマンドとエイリアスの両方にすることができます。

これは一般的に、自動カラー化(色が適用される場合に、 stdoutリダイレクトや端末のため、色を指定するエスケープコードが誤って解釈されないことが実質的に保証されます)。

この原則により、lsそれ自体がエイリアスです。

ek@Kip:/$ alias ls
alias ls='ls --color=auto'

では、実行すると実際に実行されるコマンドlですか?これです:

/bin/ls --color=auto -CF
  1. シェルは、( bash)が含まれていないコマンド解決/に登場する最初の試合へPATHのUbuntuにするためには、lsあるが/bin/ls
  2. エイリアスにはエイリアスを含めることができます。エイリアス解決は再帰的ではありません(エイリアスはそれ自体を呼び出すことはできませんが、同じ名前の通常のコマンドを呼び出すことはできます)。ただし、ネストはサポートされています

したがって、にl解決さls -CFれるに解決されls --color=auto -CFます。

エイリアスは変更できます。

これらのエイリアスはデフォルトで設定されているため存在しますが、すべてのユーザーはエイリアスを変更できます。参照しman alias第25章および付録Mを高度なバッシュ・スクリプトガイドでは、とどのように私の「エイリアス」のエントリ保存永遠に

関連:lsでの異なる色の意味は何ですか?


6

実際には両方lsl等しい

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$ 

ミステリーは解決しました:)
Armand

6
@Alison lとplain lsは同じではありません。起こった何がディレクトリ、実行可能ファイル、シンボリックリンク、またはデバイスノード(および標準出力が端末であった)なかったので、それらの特定のファイルに対して同じ出力を生成します。
エリアケイガン

あなたが見ることができるalias l='ls -CF'ので、それは同じではありません。また、より簡潔な出力を取得したい場合は、を実行できますalias l
wjandrea

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.