Một ý tưởng tắt tường
Disclaimer: Điều này sẽ là quá mức cần thiết cho hầu hết các bạn. Nhưng tôi đã làm điều này từ năm 1995 và tôi có kỹ năng để làm cho thế giới của mình chính xác như tôi muốn. Vì vậy, tôi tại sao không?
Tôi thực sự thích sử dụng các phương pháp sắp xếp khác nhau với ls
, đặc biệt -rt
(được sắp xếp theo ime r
đã được sửa đổi t
). Vì vậy, tôi quyết định thử một cái gì đó điên rồ và sử dụng awk để sắp xếp.
# 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]
}
Bây giờ thay vì xác định bí danh bash, tôi xác định hàm bash (vì bí danh chỉ có thể nối thêm các đối số ở cuối, nhưng các hàm có thể sử dụng chúng ở bất cứ đâu)
ll(){ CLICOLOR_FORCE=1 ls -lhA $* | awk -f ~/.ls.awk; }
Để xem kết quả
Hãy tạo một số tệp mẫu:
for n in 4 .4 3 .3 2 .2 1 .1; do touch $n; sleep 1; done
Sử dụng ls đồng bằng
$ 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
Sử dụng chức năng của tôi để lọc với awk
$ 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
Bạn có thể thấy triển khai của tôi ở đây https://github.com/RichardBronosky/dotfiles/commit/6170c0a9
Điều quan trọng nhất về điều này là nó là một khung để điều chỉnh ls
đầu ra của bạn . Bạn có thể làm bất cứ điều gì bạn muốn với bộ lọc awk đó. Bạn có thể muốn nó là thư mục, sau đó là dotfiles, rồi mọi thứ khác. Một khi bạn biết cách xử lý màu xterm của mình, điều đó không quá khó. Điều đó hoàn toàn phụ thuộc vào bạn.