Użytkownicy Uniksa mogą mieć swoje prawdziwe nazwiska wymienione w /etc/passwd/
. The finger
polecenie może wyświetlać prawdziwe nazwy. Mogą ls -l
pokaż te prawdziwe nazwy właścicieli plików obok plików?
Jeśli ls
nie można tego zrobić bezpośrednio, to jaki jest najlepszy sposób na potokowanie danych wyjściowych ls -l
przez finger
aby osiągnąć ten wynik? Brzmi jak praca awk
- posługiwać się ls -l | finger
jako tabela przeglądowa do zastąpienia trzeciej kolumny ls -l
.
(Podobne pytanie w przypadku, gdy nie ma prawdziwych nazw finger
ale w tabeli przeglądowej: Wymiana tekstu w tabeli wyszukiwania w bashu )
finger
(I możels
może uzyskać dostęp do tych informacji). W drugim pytaniu prawdziwe nazwy znajdują się w pliku, ale nie wfinger
.ls
? Nie powinieneś tego próbować:ls -l | awk 'BEGIN{lc=0; while((getline line<"/etc/passwd") >0){split(line,p,":"); map[p[1]]=p[5]; lc++}} {$3=map[$3]}1'
Zakładam, że trzecia kolumna twojegols -l
polecenie zawiera użytkownika.ls
(jest dla ludzi, nie maszyn) ... dodatkowo,finger
tak naprawdę nie jest do tego przeznaczony ... wolę coś takiegogetent passwd ${USER}
. Co gorsza, nie sądzę, aby czwarte pole passwd było standaryzowane ... patrz GECOSOdpowiedzi:
Możesz analizować
ls
jak @Cyrus wspomniany w komentarzach. Proponuję jednak zrobić prosty skrypt, który można wykonać jako plik wykonywalny:The
user
zmienna otrzymuje nazwę użytkownika właściciela (z 3. kolumny wyjścia ls),name
pobiera prawdziwą nazwę użytkownika, a następnie na wyjściuls
po prostu zastępujemy nazwę użytkownika prawdziwym imieniem i nazwiskiemsed
.Nie użyłem
finger
w moim przykładzie jako parsowanie/etc/passwd
plik jest mniej podatny na błędy i nie potrzebujesz zewnętrznego narzędzia. (finger
nie jest domyślnie zainstalowany na Debianie / Ubuntu)Przykładowy wynik:
Zauważ, że nie jest to najlepiej wyglądające wyjście, ponieważ nie jest idealnie wyrównane, ale powinno nadal działać.
źródło
ls
(a co zamiast tego)? ...ls -lh | tail -n +2
to dopiero początek ... Powinieneś przynajmniej używać--numeric-uid-gid
jeśli masz zamiar spróbować :-)