Ich habe eine Beispieldatei / etc / passwd wie folgt:
tom:x:1000:1000:Work:/home/tom:/bin/bash
george:x:1000:1000:Work:/home/george:/bin/bash
bla:x:1000:1000:Work:/home/bla:/bin/bash
boo:x:1000:1000:Work:/home/boo:/bin/bash
bee:x:1000:1000:Work:/root/list:/bin/bash
Ich versuche, alle Benutzer mit einem Home-Ordner aufzulisten /home/
.
Ich hab geschrieben
cat ~/Desktop/e.txt |awk -F ":" '{if ($6 ~/^/home/) print $1;}'
Dabei ist e.txt der Text, den ich hier kopiert habe.
Ich verstehe, dass es ein Problem mit dem Backslash gibt, bei dem es sich um ein Escape-Zeichen handelt, aber wie behebe ich es, damit ich sie in einer Befehlszeile auflisten kann?
grep home e.txt | cut -d ":" -f 1
. Herzlichen Glückwunsch zu Ihrer UUOC-Auszeichnung. Dies ist jedoch keine gute Lösung. Was ist, wenn es einen Dienst "Homebackups" gibt, der unter einem separaten Benutzer ausgeführt wird, der nach dem Dämon benannt ist? Das ist falsch positiv.
cat > tool
Variante solcher Befehlszeilen, da dies die Klarheit verbessern kann, indem der Fluss von links nach rechts beibehalten wird der Eingabe-Verarbeitung-Ausgabe der Rohrkette. Es ist weniger effizient, aber fast immer minimal. Es macht auch das Hinzufügen einen Fortschrittsbalken , wo relevant und nützlich , wenn interaktiv sehr offensichtlich läuft (nur ersetzen cat
mit , pv
wenn diese installiert ist).
cat
, Werkzeuge wieawk
odersed
oder ähnliches zu verwenden und weiterzuleiten , da ihnen der Dateiname als Argument gegeben werden kann.