Сценарий оболочки - Как вывести владельца файла

Есть ли команда для вывода владельца файла, и больше ничего? Я полагаю, я мог бы использовать ls и прогнать его через sed, но если есть лучший способ, я бы определенно использовал его.

2 ответа

Решение
stat -c %U file.txt

ls это инструмент для интерактивного просмотра информации о файле. Его вывод отформатирован для людей и будет вызывать ошибки в скриптах. использование globs или же find вместо. Понять почему: http://mywiki.wooledge.org/ParsingLs

Я бы использовал эту функцию:

lso() { ls -dl ${1:?usage: lso file} | awk '{print $3;exit}'; }

Редактировать:

  • Я думал о stat но я стараюсь по возможности избегать использования чего-либо нестандартного. Я придерживался чего-то портативного (например, POSIX), так как ваш вопрос помечен как linux и unix, а не просто linux, с которым stat вполне стандартно..

  • Поскольку этот вопрос вызвал дискуссию о допустимых именах пользователей, они также определены стандартом Unix как строка, состоящая исключительно из символов из этого списка:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЭЮЯ

0 1 2 3 4 5 6 7 8 9 . _ -

с дополнительным ограничением для дефиса не быть первым символом.

Я предполагал, что места не было. Как и все, что не переносимо, это может привести к неожиданным результатам не только с моей маленькой функцией, но и со многими утилитами CLI Unix / Linux.

Другие вопросы по тегам