Шаги конвейера, вывод предыдущей команды используется как ввод для следующей:
ls -l /projects/ghosttrail
список содержимого каталога (, не начинающегося с точки ), с подробностями.
tail -n +2
вывод, начинающийся со строки 2 (удаляет первую строку ). Без +
tail
будет показывать последние две строки (столько, сколько указано в -n
, по умолчанию 10 ).
sed 's/\s\s*/ /g'
заменяет несколько последовательных пробелов одним.
cut -d ' ' -f 3
получить 3-е поле (имя пользователя ).
sort | uniq -c
сортировать и подсчитывать уникальные строки. sort
используется, потому что uniq
не обнаруживает повторяющиеся строки, если они не являются смежными, как описано вman uniq
.
Альтернативный способ получить те же результаты с помощью GNUfind
:
find. -maxdepth 1 -not -name '.*' -printf '%u\n' | sort | uniq
find
перечисляет имена пользователей(-printf '%u\n'
вариант )в рабочем каталоге. -maxdepth 1
предотвращает поиск подкаталогов -. -not -name '.*'
исключает точечные файлы. sort | uniq
имеет ту же цель, что и в исходном примере.
(авторизовался как пользователь root:)
root@vps46990199:~# getent passwd mike
mike:x:1000:1000::/home/mike:/bin/sh
root@vps46990199:~# getent passwd root
root:x:0:0:root:/root:/bin/bash
... недолгий поиск находит ответ:
root@vps46990199:~# usermod -s /bin/bash mike
... проблема решена (благодаря ender.qa)
подробнее
Почитав вокруг, я сначала убедился, что на самом деле /bin/sh
не файл, а символическая ссылка. В соответствии с современными версиями Ubuntu это было(до того, как я запустилusermod
)ссылку на /bin/dash
, о которой я читал:
bash является стандартом де-факто (очень широко используется ), но это не "стандарт"; sh в Ubuntu использует dash, который является оболочкой, совместимой с Posix -, так что это действительно стандарт. Мой совет — использовать тире как можно чаще в сценариях, особенно для сценариев на стороне сервера -. Хотя bash более выразителен, dash работает намного быстрее и безопаснее(здесь , комментарий Рика -777)
Это заставляет вас задаться вопросом, почему учетная запись root
Hostinger.com использует bash
, а не dash
в качестве стандартной, как с созданной по умолчанию учетной записью пользователя. Помимо моей зарплаты.