Mogę pokazać plik docelowy, do którego prowadzi łącze ls -l
:
snowch$ ls -l /usr/local/bin/mvn
lrwxr-xr-x 1 snowch admin 29 12 Dec 08:58 /usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Czy istnieje sposób na pokazanie mniejszej mocy wyjściowej bez konieczności przepuszczania innego polecenia, takiego jak awk? Na przykład:
snowch$ ls ?? /usr/local/bin/mvn
/usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Używam wersji 3.2.53 w systemie OS X 10.9.5. Dane wyjściowe z kilku poleceń pokazano poniżej:
snowch$ ls -H /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ ls -L /usr/local/bin/mvn
/usr/local/bin/mvn
snowch$ file /usr/local/bin/mvn
/usr/local/bin/mvn: POSIX shell script text executable
snowch$ file -b /usr/local/bin/mvn
POSIX shell script text executable
stat -f "%N -> %Y" -- /usr/local/bin/mvn
działało świetnie. Dzięki!stat -c %N -- /usr/local/bin/mvn
. Aby usunąć cytaty, musiałem| perl -pe 's/['"'"'`]//g'
tr -d \'\`
wystarczy. Zauważ, że ten system RHEL miałby GNU,find
dzięki któremu będziesz mieć większą kontrolę.Użyj
file
polecenia.lub
Ponadto, przejdź przeczytać stronę man
ls
i sprawdzić opcje-L
i-H
i sprawdzić, czy wystarczyłoby swoje wymagania.źródło
ls
opcji, ale niefile
. Niestety, żadne nie wydaje się działać :(linux
pudełku. Dodajosx
jako jeden ze swoich tagów. Powinno to również zwrócić uwagęosx
użytkowników. Zredagowałem post, aby dodać tag, ale nie mam wystarczających napisów, aby zmiana pojawiła się natychmiast.Przy pomocy GNU
ls
przynajmniej (i najwyraźniejtcsh
implementacji) możesz zhakować$LS_COLORS
zmienną środowiskową, aby wstawić separatory tam, gdzie chcesz (aletcsh
wbudowanels-F
nie robi celów link - tylko flagi link ) Zwyklels
wstawia dowolne znaki niedrukowalne terminala oparte na wartościach przechowywanych w tym środowisku var, ale nic nie powstrzymuje nas przed wstawieniem arbitralnego czegokolwiek innego. Więcej na ten temat tutaj .Na przykład:
To umieszcza ciąg jak
//
na początku każdego wpisu (czyli tuż przedlrwcrwx
) i///\n
tuż przed nazwą pliku dowolnego linku.sed
następnie filtruje zakresy linii - usunied
każdą linię wejściową, aż napotka,///
a stamtąd przez następny//
pasujący wiersz usunie pasujące linie//
. Otrzymuje więc tylko nazwę i cel linku - niezależnie od interweniujących postaci. Wynika to z faktu,/
że nazwa pliku nie może wystąpić - a osoby z dowolnej ścieżkils
mogą drukować tylko pojedynczo.Widzieć?
... który drukuje:
Spróbuj sam.
źródło
ls
które obsługująLS_COLORS
ten sposób--color=always
oraz opcje i po argumentach? Jeśli w systemie GNU, dlaczego miałbyś używać czegoś, co byłoby skomplikowane, kiedy możesz użyćfind
lubstat
? To też prawdopodobnie nie zadziała, jeśli coś zrobiszln -s /// some-file
.ls
. Pamiętam, że czytałem to gdzieś kilka miesięcy temu o tym,ls
że wszyscy akceptują składnię typu termcap. Dobra uwaga na ten tematln -s ///
- ale\0
NUL działają również - i-R
ekscytująco. Co do tego - cóż, jest łatwy w użyciu. W niektórych przypadkach łatwiej niżfind
- i wydawało się tutaj, że jest trochę więcej na ten temat, niżfind
byłoby. W każdym razie nie myśli o tym zbyt wiele osób, więc wspominam o tym, gdy mi przypominają.tcsh
mająls-F
wbudowane, które obsługujeLS_COLORS
tak samo, jak niektóre wersje GNUls
, ale ucieka się do wywoływania,ls -F
jeśli przekażesz mu jakąkolwiek opcję, więc nie będzie działać tutaj, chyba żels
GNU jestls
w twoim systemie.[W systemie Linux / Bash]
Zrobiłbym to:
sed
Komenda zapada wielokrotne spacje w jednej przestrzeni;cut
pobiera pole 9-r, w którym pole separatora jest przestrzeń.Typowe wyjście z tego:
Alternatywami są:
Ale te są niedoskonałe: pierwsze może generować końcowe spacje; druga wiodąca przestrzeń.
źródło