Portál AbcLinuxu, 6. května 2025 01:37
awk -F: '{print $1}' /etc/shadow
sed -r "s/(^[^:]*):.*/\1/" /etc/shadow
sed 's/:.*//' /etc/shadow
for r in $(cat /etc/shadow); do echo ${r%%:*}; done
U /etc/shadow
vám to sice projde, ale už s /etc/passwd
byste měl problémy (a otevírat /etc/shadow
jen kvůli získání seznamu uživatelů je trochu nešťastné). Takže spíš
while read r; do echo "${r%%:*}"; done < /etc/passwd
nebo
while IFS=: read n r; do echo "$n"; done < /etc/passwd
getent passwd |...
(getent získá záznamy třeba i z ldapu a podobně, pokud je systém dobře nakonfigurován).
nss_ldap
a o tom, jak se správně zjišťují informace o uživatelích, povídal na školení… :-)
cut -d: -f 1 /etc/shadow
perl -pe 's/:.*//' /etc/shadow
ruby -e 'IO.foreach("/etc/passwd") { |l| print l.sub(/(^.*?):.*/,"\\1") }'Není to tak hezký, jen to ukazuje použití *? pro ungreedy match
ruby -e 'IO.foreach("/etc/passwd") { |l| puts l.split(":")[0]}'
[x.split(':')[0] for x in file('/etc/passwd')]ale parsovat /etc/passwd kvůli tomu, aby se získaly nějaké informace o uživatelích není dobrý nápad. Takže raději
#!/usr/bin/python import pwd for user in pwd.getpwall(): print user.pw_name
ruby -e 'require "etc"; Etc.passwd { |user| puts user.name }'
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.