Câu trả lời:
Hoặc làm cho cặp trích dẫn bên trong dấu ngoặc kép:
alias hidden='ls -a | grep "^\."'
Hoặc làm cho cặp trích dẫn bên ngoài dấu ngoặc kép:
alias hidden="ls -a | grep '^\.'"
Hoặc thực hiện tất cả các trích dẫn dấu ngoặc kép và thoát khỏi cặp bên trong:
alias hidden="ls -a | grep \"^\.\""
Hoặc biến nó thành một hàm, để bạn có thể truyền một số đối số khi gọi:
hidden() { ls -a "$@" | grep '^\.'; }
Có shell liệt kê các tệp chấm và yêu cầu ls
không xem qua các thư mục:
ls -d .*
grep
cách tiếp cận dựa trên cơ sở.
ls -d .* | grep -v '^d'
hoặc (chỉ zsh)print -lr .*(.)
ls -Ad .* #This will list all the hidden files & directories while retaining the color & formatting
HOẶC LÀ
Để tạo một bí danh giống nhau:
alias lh='ls -Ad .*'
HOẶC LÀ
Điều tương tự có thể được thực hiện thông qua lệnh grep và toán tử đường ống; Tuy nhiên, nó sẽ mất màu sắc và định dạng:
ls -a|grep "^\."
HOẶC LÀ
Thông qua bí danh:
alias lh='ls -a|grep "^\."'
Đối với bản ghi này dường như không hoạt động với tôi, vì ls -a
in hai (đôi khi nhiều cột hơn). Tôi sẽ khuyên bạn nên sử dụng -1
tùy chọn để đảm bảo mọi tệp nằm trong dòng riêng của nó. Một cái gì đó như thế này:
alias hidden='ls -a1 | grep "^\."'
ls -a | cat
nó vẫn xuất ra trên 2 cột. Tôi nên đề cập đến việc tôi đang sử dụng Solaris chứ không phải GNU ls. Có lẽ đó là lý do. Trong mọi trường hợp, -1
giải pháp của bạn hoạt động hoàn hảo và thanh lịch hơn nhiều so với cách giải quyết khó khăn của tôi. Tôi đang cập nhật câu trả lời của tôi.
Làm cho nó phức tạp hơn một chút, nhưng tránh phân tích cú phápls
.
llsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -ls; }
lsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -print; }
Hàm hai shell sẽ sử dụng find
để tạo danh sách tất cả các tệp thông thường ẩn trong thư mục hiện tại hoặc trong thư mục được cung cấp trên dòng lệnh.
Các llsh
chức năng sẽ tạo ra một "dài danh sách" mà sẽ chỉ hơi dài dòng hơn ls -l
, trong khi lsh
tạo ra một đơn cột liệt kê như ls -1
.
# add it to ~/.bashrc
hidden() { # lists hidden files and directories
find . -maxdepth 1 -name '.?*' -exec ls --color -d {} \;
}
hiddenfiles() { # lists hidden files
find . -maxdepth 1 -type f -name '.?*' -exec ls --color -d {} \;
}
hiddendirs() { # lists directories
find . -maxdepth 1 -type d -name '.?*' -exec ls --color -d {} \;
}
Có ls
hỗ trợ của bạn -A? Từ man ls
:
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
$ ls --version
ls (GNU coreutils) 8.5
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard M. Stallman and David MacKenzie.
only
các tập tin ẩn.
ls -A -1 -d -F .* | egrep -v '/$'
Chỉ cần gõ lệnh dưới đây và không nhầm lẫn với các công cụ được giải thích ở trên.
ls -A -1 -d -F .* | egrep -v '/$'
ls
lá cờ cụ thể đó và egrep
lệnh trả lời câu hỏi.
ls -lart | sed -n "/ \.[A-Za-z0-9][A-Za-z0-9]*/p"
'ls -a | grep '"'"'^\.'"'"'
trông khủng khiếp (và đối với ví dụ này là hoàn toàn không cần thiết vì bạn chỉ có thể trao đổi hai dấu ngoặc kép cho một trong hai cặp), nhưng trong những trường hợp rất hiếm thì nó hữu ích. Bạn cũng có thể muốn-C
cờ (buộc đầu ra nhiều cột). Xem hình ảnh này imgur.com/a/VIVFP