Portál AbcLinuxu, 3. listopadu 2025 00:59
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
To asi měla být jenom ukázka, kolik různých cest vede ke stejnému cíli. A abych pravdu řekl, moc se mi tahle ukázka líbí, je to takové Linuxové
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.