Ответ
В Linux домашние директории пользователей обычно находятся в /home/. Для их вывода можно использовать несколько команд:
1. Прямое перечисление содержимого /home/:
ls /home/
Это покажет все поддиректории в /home/, каждая из которых обычно является домашней папкой пользователя.
2. Извлечение путей из /etc/passwd (более точный метод):
Файл /etc/passwd содержит информацию о пользователях, где шестое поле — это домашний каталог.
cut -d: -f6 /etc/passwd | grep '^/home/' | sort -u
Эта команда:
cut -d: -f6— извлекает шестое поле (разделитель:).grep '^/home/'— фильтрует только пути, начинающиеся с/home/.sort -u— сортирует и удаляет дубликаты.
3. Получение домашней директории текущего пользователя:
echo $HOME
# или
cd ~ && pwd
Практическое применение в DevOps:
При написании скриптов для настройки окружения или резервного копирования я часто использую второй метод, так как он гарантированно возвращает только пути из /etc/passwd, игнорируя возможные временные или системные каталоги в /home/.
Ответ 18+ 🔞
А, ну вот, классика жанра! Сидишь такой, пишешь скрипт, а тут тебе надо всех юзеров на сервере найти, их домашние папки. Голова уже не варит, а тут ещё этот вопрос. Да ладно, разберёмся, не боги горшки обжигают.
Так, слушай сюда, ёпта. В Линуксе, если всё по-человечески настроено, эти самые «домашние папки» юзеров обычно валяются в /home/. Как в той песне — «мой адрес не дом и не улица, мой адрес — /home/vasya». Первый и самый тупой способ — просто заглянуть туда.
ls /home/
Сделал и сидишь, смотришь. Выдаст тебе список подпапок. Каждая — это, скорее всего, дом какого-то чувака. Но это, блядь, как смотреть в окно и гадать, кто где живёт. Может, там не только люди, но и какой-нибудь системный мусор затесался. Способ для ленивых, но иногда работает.
А вот если ты не полупидор, а хочешь точности, то надо лезть в святая святых — в файл /etc/passwd. Там про каждого пользователя записано, включая где его дом. Шестое поле в каждой строке — это как раз его домашняя директория. Берёшь и выковыриваешь это дело:
cut -d: -f6 /etc/passwd | grep '^/home/' | sort -u
Давай разжую, что тут происходит, а то смотришь и нихуя не понятно.
cut -d: -f6— это как ножом по маслу. Берёт строку, режет её по двоеточиям (-d:) и выдёргивает шестой кусок (-f6), то есть наш путь.- Потом
grep '^/home/'отфильтровывает всё лишнее, оставляя только те пути, которые начинаются с/home/. Вдруг там какой-нибудь системный аккаунт с домашней папкой/или/var/lib/что-то-тамзатесался — нам такое не надо. - Ну и
sort -uдля красоты, отсортирует и уберёт повторы, если вдруг они есть. Чтоб красиво было, а не как попало.
Этот способ — мой фаворит. Надёжный, как швейцарские часы. Особенно когда пишешь скрипты для деплоя или бэкапов. Представь: запускаешь бэкап на сервере, а он, сука, начинает копировать всё подряд из /home/, включая какую-нибудь временную папку установщика. Ёперный театр! А так — только то, что в пассвде прописано, чисто и аккуратно.
Ну и на десерт, если тебе вдруг срочно понадобилось узнать, где твоя собственная берлога, пока ты в системе:
echo $HOME
# или, для любителей классики
cd ~ && pwd
Первая команда крикнет тебе путь, вторая — тихо перейдёт в домашнюю директорию и скажет, где она теперь находится. Всё просто, как три копейки.
Вот и вся магия. Ничего сложного, главное — понимать, откуда ноги растут. А то некоторые так и тыкают команды, не вдумываясь, а потом удивляются, почему скрипт наебнулся. Э, сабака сука, думать надо!