どこかでlsコマンドを台無しにしましたが、実行するとこの順序になります
$ ls -AhHl --color=auto
-rwxr-xr-x 1 clang clang 640 Mar 1 02:46 Apple-touch-icon-precomposed.png
-rwxr-xr-x 1 clang clang 784 Jul 12 02:54 crossdomain.xml
-rwxr-xr-x 1 clang clang 1.2K Mar 1 02:46 favicon.ico
drwxr-xr-x 8 clang clang 4.0K Jul 12 23:50 .git
-rw-r--r-- 1 clang clang 17 Feb 29 19:48 .gitignore
-rwxr-xr-x 1 clang clang 1.4K Jul 12 02:54 humans.txt
Lsがdotfilesを無視し、代わりに最初の文字で並べ替えるために何をしましたか?
locale
の出力:
$ locale
LANG=
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8
追加してみてください
export LC_COLLATE="C"
dotfilesで、またはLC_ALL
割り当て:
export LC_ALL="C"
これは、文字レベルでの並べ替えの方法を制御します。デフォルトではドットファイルをインラインで並べ替えますが、sort
リストのドットファイルを最初に作成します。
ただし、これにより、すべてのロケール対応ユーティリティでの実際のロケールのサポートが基本的に停止することに注意してください。
さらに進むには、 GNU Coreutilsマニュアル (私の強調)を引用します。
非POSIXロケールを使用する場合(たとえば、
LC_ALL
からen_US
)の場合、sortは、慣れている方法とは異なる方法でソートされた出力を生成することがあります。その場合は、
LC_ALL
環境変数をC
に変更します。LC_COLLATE
には2つの問題があります。まず、LC_ALL
も設定されています。第二に、LC_CTYPE
(またはLANG
、もしLC_CTYPE
is unset)が互換性のない値に設定されています。たとえば、LC_CTYPE
はja_JP.PCK
だがLC_COLLATE
はen_US.UTF-8
。
実際に必要としないシステム全体の変更を回避するには、.bashrc
にエイリアスを追加することで、現在のユーザーに対するls
の動作方法のみを変更できます。
alias ll='LC_COLLATE=C ls -alF'
これは最初にドットファイルを並べ替え、キリル文字のような「一般的でない」文字セットを適切に処理(表示および並べ替え)できるようにします。並べ替えで大文字と小文字が区別される唯一の原因。
Ls(1)のマンページには以下がリストされています。
-vテキスト内の(バージョン)番号の自然な種類
これにより、ピリオドのソート方法が変わり、ドットファイルが最初にグループ化されます。私が持っています:
alias ls='ls -vAF'
alias ll='ls -l'
私の〜/ .bashrcで。
設定
LC_ALL="C.UTF-8"
私にとってはうまくいきます-ウムラウトと "ls -la"は最初にドットファイルをリストします。
免責事項:これはあなたのほとんどにとってやり過ぎになるでしょう。しかし、私は1995年以来これを行っており、自分の世界を自分の望むとおりに作るスキルを持っています。だから、私はなぜですか?
ls
、特に-rt
(r
everse modified t
imeでソートされる)でさまざまなソート方法を使用するのが本当に好きです。それで、私は何かおかしなことを試し、awkを使用して並べ替えを行うことにしました。
# save as ~/.ls.awk
# inpsired by http://superuser.com/questions/448291/how-can-i-make-ls-show-dotfiles-first
{
if($1 == "total"){
print $0
next
}
# may need to adjust $9 to match your name column
if(match($9, /^(\033\[[0-9]*m)*\./)) # optionally look past xterm highlighting like: ^[[34m
df[++dd] = $0
else
nf[++nn] = $0
}
END{
while (++d in df)
print df[d]
while (++n in nf)
print nf[n]
}
Bashエイリアスを定義する代わりに、bash関数を定義します(エイリアスは最後に引数を追加できるだけですが、関数はどこでもそれらを使用できます)
ll(){ CLICOLOR_FORCE=1 ls -lhA $* | awk -f ~/.ls.awk; }
サンプルファイルをいくつか作成してみましょう。
for n in 4 .4 3 .3 2 .2 1 .1; do touch $n; sleep 1; done
$ ls -lA
total 8
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .1
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .2
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .3
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .4
-rwxr-xr-x 1 bbronosky staff 285 Nov 29 13:14 .ls.awk
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 1
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 2
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 3
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 4
$ ls -lArt
total 8
-rwxr-xr-x 1 bbronosky staff 285 Nov 29 13:14 .ls.awk
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 4
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .4
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 3
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .3
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 2
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .2
-rwxr-xr-x 1 bbronosky staff 0 Dec 1 00:25 1
-rw-r--r-- 1 bbronosky staff 0 Dec 1 00:25 .1
$ ll
total 8
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .1
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .2
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .3
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .4
-rwxr-xr-x 1 bbronosky staff 285B Nov 29 13:14 .ls.awk
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 1
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 2
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 3
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 4
$ ll -rt
total 8
-rwxr-xr-x 1 bbronosky staff 285B Nov 29 13:14 .ls.awk
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .4
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .3
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .2
-rw-r--r-- 1 bbronosky staff 0B Dec 1 00:25 .1
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 4
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 3
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 2
-rwxr-xr-x 1 bbronosky staff 0B Dec 1 00:25 1
これの私の実装をここで見ることができます https://github.com/RichardBronosky/dotfiles/commit/6170c0a9
これについて最も重要なのは、ls
出力を調整するためのフレームワークであることです。そのawkフィルターを使用して、好きなことができます。あなたはそれをディレクトリ、次にドットファイル、そして他のすべてにしたいかもしれません。 xtermの色を処理する方法がわかれば、それほど難しくありません。それは完全にあなた次第です。