Portál AbcLinuxu, 14. května 2025 01:32
grep
neš si z group
jméno skupiny, vycut
neš její číslo (třetí parametr) a pak se podíváš do passwd
, u kterého uživatele je jako čtvrtý parametr to číslo.
#!/bin/sh group_name_array=(`cat /etc/group | cut -d: -f1`) group_id_array=(`cat /etc/group | cut -d: -f3`) user_name_array=(`cat /etc/passwd | cut -d: -f3`) user_id_array=(`cat /etc/passwd | cut -d: -f3`) for (( i=0; i < ${#group_name_array[*]}; i++ )); do if [ "${group_name_array[$i]}" = "$1" ]; then id=`echo ${group_id_array[$i]}` echo $id fi done for (( j=0; j < ${#user_id_array[*]}; j++ )); do if [ "${user_id_array[$j]}" = "$id" ]; then echo ${user_name_array[$j]} fi done exit 0NN
set SEPARATOR='":"' set SPACE='" "' set W='"' set S1='$1' set S3='$3' set ID=`cat /etc/group | awk "BEGIN { FS=$SEPARATOR } { if ( $S1 == $W$1$W ) print $S3; }"` cat /etc/passwd | awk "BEGIN { FS=$SEPARATOR } { if ( $S3 == $W$ID$W ) print $S1; }"
set G_NAMES = "`cut -d: -f1 /etc/group`" set G_IDS = "`cut -d: -f3 /etc/group`" set INDEX = 1 while ($G_NAMES[$INDEX] != $argv[1]) @ INDEX++ end#cize mame ID hladanej skupiny na $G_IDS[$INDEX] takymto stylom to napisem dalej (dufam, ze na tom nie je nic zle), pre hladanie mien uzivatelov s danym ID... dufam, ze sa podari
Vtip je v tom, ze tie zadania su napisane dost blbo, napriklad jeden mi povedal, ze ma pouzivat "iba interne prikazy csh", teda ziadne grep, cat, ls, pri com je zadanie neriesitelne, niekedy som sa stretol s uplne nelogicky danymi zadaniami. (ja napriklad dost casto pouzivam v pisani tych rieseni awk, aj ked dost pochybujem, ze ho prednasajuci na prednaskach spomenulJestli to tedy nakonec bude s grepem, tak to už sem radit nemusíš
user_name_array=(`cat /etc/passwd | cut -d: -f1`)a taky staci:
id=${group_id_array[$i]}jinak celkem v poho. NN
#!/bin/csh set group_name = `cat /etc/group | cut -d: -f1` set group_name_array = ($group_name) set group_id = `cat /etc/group | cut -d: -f3` set group_id_array = ($group_id) set user_name = `cat /etc/passwd | cut -d: -f1` set user_name_array = ($user_name) set user_id = `cat /etc/passwd | cut -d: -f4` set user_id_array = ($user_id) set max_group_name = $#group_name_array set max_user_name = $#user_name_array set i = 0 set j = 0 while ( $i <= $max_group_name ) if ( $group_name_array[$i] == $1 ) then set id = $group_id_array[$i] endif @ i++ end while ( $j <= $max_user_name ) if ( $user_id_array[$j] == $id ) then echo $user_name_array[$j] endif @ j++ end exit 0fuck off awk.. NN
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.