Я могу показать целевой файл, на который указывает ссылка 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
Есть ли способ показать меньше вывода без необходимости передавать через другую команду, такую как awk? Например:
snowch$ ls ?? /usr/local/bin/mvn
/usr/local/bin/mvn -> ../Cellar/maven/3.2.3/bin/mvn
Я использую 3.2.53 на OS X 10.9.5. Вывод нескольких команд показан ниже:
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
работал отлично. Спасибо!stat -c %N -- /usr/local/bin/mvn
. Чтобы удалить цитаты, я должен был| perl -pe 's/['"'"'`]//g'
tr -d \'\`
будет достаточно. Обратите внимание, что эта система RHEL будет иметь GNU,find
с которым вы будете иметь больший контроль.Используйте
file
команду.или
Кроме того , пожалуйста , почитайте через человека страницу
ls
и проверьте параметры-L
и-H
увидеть , если это будет достаточно ваше требование.источник
ls
варианты, но нетfile
. К сожалению, ни один из них не работает :(linux
коробке. Пожалуйста, добавьте вosx
качестве одного из ваших тегов. Это должно привлечь вниманиеosx
пользователей. Я отредактировал пост, чтобы добавить тег, но у меня недостаточно кредитов, чтобы редактирование появилось немедленно.По
ls
крайней мере, с GNU (и, по-видимому,tcsh
реализацией) вы можете взломать$LS_COLORS
переменную окружения, чтобы вставить разделители, где вам нравится (ноtcsh
встроенная функцияls-F
не делает цели ссылки - только флаги связи ) Обычноls
вставляет произвольные непечатные терминальные экранированные символы. основываясь на значениях, хранящихся в этой среде var, но ничто не мешает нам вставлять что-то еще произвольно. Подробнее об этом здесь .Например:
Это помещает строку как
//
в начало каждого списка (так и непосредственно передlrwcrwx
) и///\n
непосредственно перед именем файла любой ссылки.sed
затем фильтрует линейные диапазоны - он будетd
выбирать каждую входную строку до тех пор, пока не встретит ее,///
и оттуда через следующую соответствующую строку//
удалит соответствующие строки//
. Таким образом, он получает только имя ссылки и цель ссылки - независимо от промежуточных символов. Это связано с тем, что/
имя файла не может встречаться - иls
печать по любому пути может произойти только по отдельности.Увидеть?
... который печатает:
Попробуй сам.
источник
ls
которые поддерживаютLS_COLORS
этот путь и параметры a--color=always
и после аргументов? Если в системе GNU, почему вы используете что-то запутанное, когда вы можете использоватьfind
илиstat
? Это также, вероятно, не сработает, если вы сделаете этоln -s /// some-file
.ls
. Я помню, что читал где-то еще несколько месяцев назад о том, чтоls
все склонны принимать синтаксис типа termcap. Хорошаяln -s ///
вещь об этом - но\0
NULs работают также - и-R
эурсивно. Что касается того, почему - это легко использовать. В некоторых случаях это проще, чем ...find
и здесь, по-видимому, немного больше по теме, чемfind
было бы. В любом случае, не так много людей считают это, поэтому я упоминаю об этом, когда мне напоминают.tcsh
имеютls-F
встроенную функцию, которая поддерживаетLS_COLORS
тот же способ, что и некоторые версии GNUls
, но прибегает к вызову,ls -F
если вы передаете ему какую-либо опцию, так что это не будет работать, если толькоls
GNU не установленls
в вашей системе.[В Linux / Bash]
Я бы сделал это:
Команда
sed
сворачивает несколько пробелов в один пробел;cut
извлекает 9th поле и далее , где поле сепаратор представляет собой пространство.Типичный вывод из этого:
Альтернативы:
Но они несовершенны: первый может выводить конечные пробелы; второе, ведущие пробелы.
источник