ls コマンドは、POSIXシステム上のファイルを一覧表示します。これは単純なコマンドであり、多くの場合過小評価されていますが、実行できることではなく(実際には1つのことしか実行しないため)、使用を最適化する方法について説明しています。
知っておくべき10の最も重要な端末コマンドのうち、謙虚な ls ls であるため、コマンドは上位3つに含まれます ただではありません リストファイル、それはあなたにそれらについての重要な情報を教えてくれます。ファイルまたはディレクトリの所有者、各ファイルが失われたり変更されたとき、さらにはファイルの種類などがわかります。そして、あなたがどこにいるのか、近くにあるものは何か、そしてそれらを使って何ができるのかをあなたに感じさせるという付随的な機能があります。
lsの経験がある場合 ディストリビューションが.bashrcでエイリアスするものに制限されます 、それならあなたはおそらく逃しているでしょう。
GNUまたはBSD?
lsの隠された力を見る前に 、どの lsを決定する必要があります 実行しているコマンド。最も人気のある2つのバージョンは、GNU coreutilsに含まれているGNUバージョンです。 パッケージ、およびBSDバージョン。 Linuxを実行している場合は、おそらく ls インストールされています。 BSDまたはMacOSを実行している場合は、BSDバージョンを使用しています。この記事で説明する違いがあります。
-version を使用すると、コンピュータにインストールされているバージョンを確認できます。 オプション:
$ ls --version
これがGNUcoreutilsに関する情報を返す場合は、GNUバージョンがあります。エラーが返された場合は、BSDバージョンを実行している可能性があります( man ls | head を実行します)。 確かに)。
また、ディストリビューションにどのようなプリセットがあるかを調査する必要があります。ターミナルコマンドのカスタマイズは、 $ HOME / .bashrcに頻繁に配置されます。 または$HOME / .bash_aliases または$HOME / .profile 、およびそれらは lsのエイリアシングによって実現されます より複雑なls 指図。例:
alias ls='ls --color'
ディストリビューションによって提供されるプリセットは非常に役立ちますが、 lsが何であるかを識別するのが難しくなります。 それ自体で行い、その追加オプションが提供するもの。 lsを実行したい場合 エイリアスではなく、バックスラッシュを使用してコマンドを「エスケープ」できます:
$ \ls
単独で実行、 ls ターミナルに収まるだけの数の列にファイルをリストするだけです:
$ ls ~/example
bunko jdk-10.0.2
chapterize otf2ttf.ff
despacer overtar.sh
estimate.sh pandoc-2.7.1
fop-2.3 safe_yaml
games tt
有用な情報ですが、これらのファイルはすべて基本的に同じように見えますが、ディレクトリ、テキストファイル、画像などをすばやく伝えるためのアイコンの便利さはありません。
-Fを使用します (または-分類 GNUの場合)ファイルの種類を識別する各エントリの後にインジケータを表示するには:
$ ls ~/example
bunko jdk-10.0.2/
chapterize* otf2ttf.ff*
despacer* overtar.sh*
estimate.sh pandoc@
fop-2.3/ pandoc-2.7.1/
games/ tt*
このオプションを使用すると、端末にリストされているアイテムは、次の省略形を使用してファイルタイプごとに分類されます。
- スラッシュ( / )はディレクトリ(または「フォルダ」)を示します。
- アスタリスク( * )は実行可能ファイルを示します。これには、バイナリファイル(コンパイルされたコード)とスクリプト(実行可能権限を持つテキストファイル)が含まれます。
- アットマーク( @ )はシンボリックリンク(または「エイリアス」)を示します。
- 等号( = )はソケットを示します。
- BSDでは、パーセント記号(% )はホワイトアウト(特定のファイルシステムでのファイル削除の方法)を示します。
- GNUでは、山かっこ(> )はドアを示します(IllumosとSolarisでのプロセス間通信)。
- 垂直バー( | )はFIFOを示します。
このオプションのより単純なバージョンは-pです。 、ファイルとディレクトリを区別するだけです。
lsから「長いリスト」を取得する 非常に一般的であるため、多くのディストリビューションは llをエイリアスします ls -lへ 。長いリスト形式は、権限、各ファイルを所有するユーザー、ファイルが属するグループ、バイト単位のファイルサイズ、ファイルが最後に変更された日付など、多くの重要なファイル属性を提供します。
$ ls -l
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
-rwxrwxr-x. 1 seth users 662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users 20697793 Jun 29 2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users 6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
[...]
バイト単位で考えない場合は、 -hを追加します フラグ(または-人間 GNUの場合)ファイルサイズをより人間にわかりやすい表記に変換するには:
$ ls --human
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
-rwxrwxr-x. 1 seth seth 662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users 20M Jun 29 2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth seth 6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
-o を使用して所有者の列のみを表示すると、情報が少し少なくなります。 または、 -gのグループ列のみ :
$ ls -o
-rwxrwx---. 1 seth 455 Mar 2 2017 estimate.sh
-rwxrwxr-x. 1 seth 662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth 20M Jun 29 2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth 6.1K May 22 10:22 geteltorito
-rwxrwx---. 1 seth 177 Nov 12 2018 html4mutt.sh
両方のオプションを組み合わせて、どちらも表示しないようにします。
lsのロングリスト形式 通常は次のようになります:
-rwxrwx---. 1 seth users 455 Mar 2 2017 estimate.sh
-rwxrwxr-x. 1 seth users 662 Apr 29 22:27 factorial
-rwxrwx---. 1 seth users 20697793 Jun 29 2018 fop-2.3-bin.tar.gz
-rwxrwxr-x. 1 seth users 6210 May 22 10:22 geteltorito
-rwxrwx---. 1 seth users 177 Nov 12 2018 html4mutt.sh
月の名前は、計算上でも(脳が文字列または整数を好む傾向があるかどうかに応じて)認識によって並べ替えるのも簡単ではありません。 -time-style を使用して、タイムスタンプの形式を変更できます。 オプションとフォーマットの名前。使用可能な形式は次のとおりです。
- full-iso(1970-01-01 21:12:00)
- long-iso(1970-01-01 21:12)
- iso(01-01 21:12)
- ロケール(ロケール設定を使用)
- posix-STYLE(STYLEをロケール定義に置き換えます)
日付の正式な表記を使用してカスタムスタイルを作成することもできます コマンド。
通常、 ls コマンドはアルファベット順にソートします。 -t を使用すると、最近変更されたファイル(最新のものが最初に表示されます)に従って並べ替えることができます。 オプション。
例:
$ touch foo bar baz
$ ls
bar baz foo
$ touch foo
$ ls -t
foo bar baz
lsの標準出力 読みやすさとスペース効率のバランスが取れていますが、ファイルリストを特定の配置にしたい場合があります。
ファイルのコンマ区切りリストについては、 -mを使用してください :
ls -m ~/example
bar, baz, foo
1行に1つのファイルを強制するには、 -1を使用します オプション(これは小文字のLではなく、一番です):
$ ls -1 ~/bin/
bar
baz
foo
ファイル名ではなくファイル拡張子でエントリを並べ替えるには、 -Xを使用します (これは大文字のXです):
$ ls
bar.xfc baz.txt foo.asc
$ ls -X
foo.asc baz.txt bar.xfc
一部のlsにはいくつかのエントリがあります あなたが気にしないかもしれないリスト。たとえば、メタ文字。 および.. それぞれ「ここ」と「1レベル戻る」を表します。ターミナルでのナビゲートに精通している場合は、各ディレクトリがそれ自体をと呼んでいることをすでにご存知でしょう。 そしてその親に.. 、したがって、 -a を使用するときに、常にそれを思い出す必要はありません。 隠しファイルを表示するオプション。
ほとんどすべての隠しファイルを表示するには(。 および.. 除外)、 -Aを使用します オプション:
$ ls -a
.
..
.android
.atom
.bash_aliases
[...]
$ ls -A
.android
.atom
.bash_aliases
[...]
多くの優れたUnixツールには、保存するファイルの名前に特殊文字を追加してバックアップファイルを保存するという伝統があります。たとえば、Vimでは、バックアップは〜で保存されます 名前に追加された文字。
これらの種類のバックアップファイルは、何度か愚かな間違いから私を救ってくれましたが、それらが提供する安心感を何年も楽しんだ後、それらが存在するという視覚的な証拠を持つ必要性を感じません。私はLinuxアプリケーションがバックアップファイルを生成することを信頼しており(そうすると主張している場合)、それらが存在することを信じて喜んで受け入れています。
バックアップファイルを非表示にするには、 -Bを使用します または--ignore-backups 一般的なバックアップ形式を隠すため(このオプションはBSD lsでは使用できません ):
$ ls
bar.xfc baz.txt foo.asc~ foo.asc
$ ls -B
bar.xfc baz.txt foo.asc
もちろん、バックアップファイルはまだ存在しています。フィルターで除外されているため、確認する必要はありません。
GNU Emacsは、バックアップファイルを(特に設定されていない限り)ハッシュ文字(#)で保存します )ファイル名の最初と最後(#file# )。他のアプリケーションは異なるスタイルを使用する場合があります。 -hide を使用して独自の除外を作成できるため、どのパターンを使用してもかまいません。 オプション:
$ ls
bar.xfc baz.txt #foo.asc# foo.asc
$ ls --hide="#*#"
bar.xfc baz.txt foo.asc
ディレクトリの内容はlsにリストされていません lsを実行しない限りコマンド 特にそのディレクトリで:
$ ls -F
example/ quux* xyz.txt
$ ls -R
quux xyz.txt
./example:
bar.xfc baz.txt #foo.asc# foo.asc
ls コマンドは、おそらく特定のシェルセッション中に最も頻繁に使用されるコマンドです。それはあなたの目と耳であり、コンテキストを提供し、コマンドの結果を確認します。多くのオプションがあると便利ですが、 lsの美しさの一部です その簡潔さです:2文字とReturnキー、そしてあなたはあなたがどこにいるのか、そして何が近くにあるのかを正確に知っています。いくつかの異なるオプションについて考えるのをやめなければならない場合(タイプがはるかに少ない)、便利さが低下するため、通常、最も有用なオプションでさえ省略されます。
解決策は、 lsのエイリアスを作成することです コマンドを使用すると、最も気になる情報を取得できます。
Bashシェルでコマンドのエイリアスを作成するには、ホームディレクトリに .bash_aliasesというファイルを作成します。 (最初にドットを含める必要があります)。このファイルに、エイリアスを作成するコマンドをリストし、次に作成するエイリアスをリストします。例:
alias ls='ls -A -F -B --human --color'
この行により、Bashシェルは lsを解釈します ls -A -F -B --human --colorとしてのコマンド 。
既存のコマンドを再定義することに限定されません。独自のエイリアスを作成できます:
alias ll='ls -l'
alias la='ls -A'
alias lh='ls -h'
エイリアスが機能するには、シェルが .bash_aliasesを認識している必要があります 構成ファイルが存在します。 .bashrcを開きます エディターでファイルを作成し(存在しない場合は作成し)、次のコードブロックを含めます:
if [ -e $HOME/.bash_aliases ]; then
source $HOME/.bash_aliases
fi
毎回.bashrc が読み込まれると(新しいBashシェルが起動されるたびに)、Bashは .bash_aliasesを読み込みます。 あなたの環境に。 Bashセッションを閉じて再起動するか、今すぐ強制的に再開することができます:
$ source ~/.bashrc
コマンドのエイリアスを作成したかどうかを忘れた場合は、どちら コマンドはあなたに伝えます:
$ which ls
alias ls='ls -A -F -B --human --color'
/usr/bin/ls
lsのエイリアスを作成した場合 オプションを使用してコマンドを実行すると、 ls の前に付けることで、いつでも独自のエイリアスを上書きできます。 バックスラッシュ付き。たとえば、エイリアスの例では、バックアップファイルは -Bを使用して非表示になっています オプション。これは、 lsを使用してファイルをバックアップする方法がないことを意味します 指図。エイリアスを上書きして、バックアップファイルを表示します:
$ ls
bar baz foo
$ \ls
bar baz baz~ foo
1つのことを実行してうまく実行する
ls コマンドには驚くほど多くのオプションがあり、その多くはニッチであるか、使用する端末に大きく依存しています。 情報lsをご覧ください GNUシステムまたはmanls その他のオプションについては、GNUまたはBSDシステムで。
各ツールが「1つのことを実行し、それをうまく実行する」という前提で有名なシステムが、50のオプションを備えた最も一般的なコマンドを圧迫するのは奇妙に感じるかもしれません。しかし、 ls たった1つのことをします:それはファイルをリストします。また、そのリストの受け取り方法を制御できる50のオプションがあり、 ls その1つの仕事を非常に行います非常に よく。