GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rohrleitungsausgang zum Schneiden

Die erste Zeile:

echo $(ps | grep $PPID) | cut -d" " -f4

sagt:

  • Führen Sie ps | grep $PPID aus in einer Sub-Shell
  • Geben Sie die Ausgabe zurück, die in etwa so aussehen wird:

    3559 pts/1 00:00:00 bash
    

    und verwenden Sie dann diese Ausgabe als ersten Parameter von echo - was in der Praxis bedeutet, dass Sie einfach die Ausgabe wiedergeben

  • Führen Sie dann cut -d" " -f4 aus darauf - was Ihnen in diesem Fall den Befehlsnamen gibt

Der zweite Befehl:

echo ps | grep $PPID | cut -d" " -f4

sagt:

  • Echostring ps
  • Suchen Sie diese Zeichenfolge nach $PPID - Dies wird niemals etwas zurückgeben, als $PPID enthält eine Zahl, also wird es nie ps sein . Daher gibt grep nichts zurück
  • Führen Sie cut -d" " -f4 aus mit Eingabe des vorherigen Befehls - was nichts ist, also bekommst du nichts

Der Grund ist, dass

echo ps

gibt nur den String ps aus; es führt das Programm ps nicht aus . Die korrigierte Version Ihres Befehls wäre:

ps | grep $PPID | cut -d" " -f4

Hinzufügen bearbeitet: paxdiablo weist darauf hin, dass ps | grep $PPID enthält viele Leerzeichen, die durch echo $(ps | grep $PPID) reduziert werden (da das Ergebnis von $(...) , wenn es nicht in doppelten Anführungszeichen steht, wird durch Leerzeichen in separate Argumente aufgeteilt und dann echo gibt alle seine Argumente durch Leerzeichen getrennt aus). Um dies zu beheben, können Sie tr verwenden wiederholte Leerzeichen "quetschen":

ps | grep $PPID | tr -s ' ' | cut -d' ' -f5

oder Sie können einfach bei dem bleiben, womit Sie beginnen mussten. :-)


Linux
  1. Wie sortiere ich die Ausgabe nach Größe?

  2. Linux – Ausgabe von Ps Lstart geändert?

  3. Piping für Schleifenausgang verhindert lokale Variablenänderung?

  4. Ausgabe nach Spalte sortieren?

  5. cut-Befehlsbeispiele in Linux

Bash:In Datei schreiben

Cut-Befehl unter Linux

Ccat – Cat-Befehlsausgabe einfärben

Eingabe-Ausgabe-Umleitung unter Linux erklärt

Ausgabe der 2. Spalte einer Datei

Komprimieren Sie die Befehlsausgabe, indem Sie sie an bzip2 weiterleiten