Не совсем. Вы не можете действительно искать на определенный блок в сжатом файле, не распаковывая все это сначала, которое мешает использовать сжатое изображение в качестве блочного устройства.
Вы могли использовать что-то как dump
и restore
(или tar
, действительно), все из которых используют формат потоковой передачи..., таким образом, можно получить доступ к invidividual файлам путем эффективного сканирования через несжатый поток. Это означает, ли файл, который Вы хотите, в конце сжатого архива, у Вас может быть долгое время для ожидания, но это не требует, чтобы Вы на самом деле распаковали все на диск.
Используя tar
поскольку резервные копии могут казаться немного старомодными, но Вы получаете большую гибкость.
Хороший путь к хорошему выводу/etc/passwd файла:
$ column -nts: /etc/passwd
Теперь можно отсортировать его:
$ column -nts: /etc/passwd | sort
С группами называет в последнем столбце (никакая круглая скобка):
$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort
Если у Вас есть корневой доступ на машине, можно сделать следующее:
sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -
Станьте корнем для чтения теневого файла. Вы только требуете полномочий пользователя root, если Вы хотите проверить, есть ли у пользователя набор пароля (пользователь - человек), иначе Вы можете просто cat /etc/passwd
вместо sudo grep ...
:
sudo
Только покажите пользователям, которым установили пароль:
grep -vE '^[^*!]+:[*!]:' /etc/shadow
Вид именем пользователя:
sort
Отбросьте всю информацию за исключением имени пользователя:
cut -d: -f1
Выполните итерации через имена пользователей и обогатите его группой infomration:
while read user; do id $user; done
Отформатируйте вход в столбцы:
column -ts' ,'
Используйте vi для просмотра результата:
vi '+set nowrap' -
попробуйте что-то вроде этого:
cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t
Его вывод несколько отличается, но я оставляю его как осуществление читателю для объединения этих двух частей в этом ответе во что-то, что полностью соответствует заданию. (Не делайте Вас, просто любят sed
?)
Я думал, что это будет легко с join
, но join
требует, чтобы файлы были отсортированы на объединяющем поле. Таким образом, это потребовало (?) обходного решения с временными файлами. Вывод отсортирован на пользователе и отображает пользователя, группу и идентификатор группы.
uag () {
TEMP_GROUPS=/var/tmp/sorted_groups
TEMP_USERS=/var/tmp/sorted_users
cat /etc/group | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
rm $TEMP_GROUPS $TEMP_USERS
}
Переведите символ в другого с tr
; sort
согласно полю ключа с -k
, вывод в файл с -o
; соединение относительно полей в первом (-1
) и второй (-2
) файл, вывод определенные поля в первом файле (-o 1.1
) а также второе (,2.1,2.3
).
/tmp
было бы лучше, потому что FHS указывает это /var/tmp
не будет вытерт на перезагрузках, в которых мы действительно не нуждаемся.
– strugee
09.09.2013, 06:25
В Ubuntu это может быть следующие:
семь полей от/etc/passwd, сохраненного в $f1, f2..., $f7
while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd
Что-то, что я делаю, и он работает для моих целей, - это предоставлено
ls /home
, это не дает вам список пользователей скорее в список каталогов домашних директоров пользователя и прошедших каталогов, но любой Команда, которую вы хотите сделать на пользователя, который не существует терминала, скажет вам и может быть подсказкой для удаления домашнего файла, который не имеет пользователя или не перемещать его!
n
опция.column -ts: /etc/passwd
хорошо работавший. имена файлов – user1014251 10.11.2015, 15:19