Odpowiedzi:
Albo utwórz wewnętrzną parę cudzysłowów:
alias hidden='ls -a | grep "^\."'
Lub wykonaj zewnętrzną parę cytatów podwójnymi cudzysłowami:
alias hidden="ls -a | grep '^\.'"
Lub zrób wszystkie cytaty podwójnymi cudzysłowami i unikaj wewnętrznej pary:
alias hidden="ls -a | grep \"^\.\""
Lub uczyń go funkcją, abyś mógł przekazać kilka argumentów podczas wywoływania:
hidden() { ls -a "$@" | grep '^\.'; }
Niech powłoka wyświetli listę plików kropek i powie, ls
aby nie przeglądać katalogów:
ls -d .*
grep
podejścia opartego na bazach.
ls -d .* | grep -v '^d'
lub (tylko zsh)print -lr .*(.)
ls -Ad .* #This will list all the hidden files & directories while retaining the color & formatting
LUB
Aby utworzyć alias tego samego:
alias lh='ls -Ad .*'
LUB
To samo można zrobić za pomocą polecenia grep i operatora potoku; jednak straciłby kolor i formatowanie:
ls -a|grep "^\."
LUB
Przez alias:
alias lh='ls -a|grep "^\."'
Dla przypomnienia, to wydaje się nie działać ze mną, ponieważ ls -a
drukuje dwie (czasem więcej kolumn). Polecam użycie tej -1
opcji, aby upewnić się, że każdy plik ma swoją własną linię. Coś takiego:
alias hidden='ls -a1 | grep "^\."'
ls -a | cat
że nadal wyświetla na 2 kolumnach. Powinienem wspomnieć, że używam Solaris, a nie GNU. Może to dlatego. We wszystkich przypadkach Twoje -1
rozwiązanie działało idealnie i jest znacznie bardziej eleganckie niż moje hackerskie obejście. Aktualizuję swoją odpowiedź.
Sprawia to, że jest nieco bardziej skomplikowany, ale unika się parsowanials
.
llsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -ls; }
lsh () { find "${@:-.}/" -maxdepth 1 -type f -name ".*" -print; }
Funkcja dwóch powłok posłuży find
do wygenerowania listy wszystkich ukrytych zwykłych plików w bieżącym katalogu lub w katalogu podanym w wierszu poleceń.
llsh
Funkcja wygenerować „długie wystawianie”, która jest tylko nieco więcej informacji, niż ls -l
, gdy lsh
wytwarza się wymieniając jak jednokolumnowy 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 {} \;
}
Czy twoje ls
wsparcie -A? Od 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
ukrytych plików.
ls -A -1 -d -F .* | egrep -v '/$'
Wystarczy wpisać poniższe polecenie i nie mylić z powyższymi wyjaśnieniami.
ls -A -1 -d -F .* | egrep -v '/$'
ls
flagi i egrep
polecenie odpowiadają na pytanie.
ls -lart | sed -n "/ \.[A-Za-z0-9][A-Za-z0-9]*/p"
'ls -a | grep '"'"'^\.'"'"'
Wygląda okropnie (i w tym przykładzie jest zupełnie niepotrzebne, ponieważ możesz po prostu zamienić podwójne cudzysłowy dla każdej z par), ale w bardzo rzadkich przypadkach jest to przydatne. Możesz także chcieć-C
flagi (wymuś wyjście z wielu kolumn). Zobacz to zdjęcie imgur.com/a/VIVFP