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 > toolVariante 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 catmit , pvwenn diese installiert ist).
cat, Werkzeuge wieawkodersedoder ähnliches zu verwenden und weiterzuleiten , da ihnen der Dateiname als Argument gegeben werden kann.