GNU/Linux >> Belajar Linux >  >> Linux

Output perpipaan untuk dipotong

Baris pertama:

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

mengatakan:

  • Eksekusi ps | grep $PPID dalam subkulit
  • Kembalikan hasilnya - yang akan menjadi seperti ini:

    3559 pts/1 00:00:00 bash
    

    dan kemudian gunakan keluaran itu sebagai parameter pertama gema - yang, dalam praktiknya, berarti gema keluaran saja

  • Kemudian jalankan cut -d" " -f4 pada itu - yang memberi Anda nama perintah dalam hal ini

Perintah kedua:

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

mengatakan:

  • Echo string ps
  • Ambil string itu untuk $PPID - ini tidak akan mengembalikan apapun, seperti $PPID berisi angka, jadi tidak akan pernah menjadi ps . Jadi, grep tidak mengembalikan apa pun
  • Eksekusi cut -d" " -f4 dengan input dari perintah sebelumnya - yang bukan apa-apa, jadi Anda tidak mendapatkan apa-apa

Alasannya adalah bahwa

echo ps

cukup cetak string ps; itu tidak menjalankan program ps . Versi yang dikoreksi dari perintah Anda adalah:

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

Diedit untuk menambahkan: paxdiablo menunjukkan bahwa ps | grep $PPID termasuk banyak spasi kosong yang akan diciutkan oleh echo $(ps | grep $PPID) (karena hasil dari $(...) , jika tidak dalam tanda kutip ganda, dipisahkan dengan spasi putih menjadi argumen terpisah, lalu echo menampilkan semua argumennya yang dipisahkan oleh spasi). Untuk mengatasinya, Anda dapat menggunakan tr untuk "memeras" spasi berulang:

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

atau Anda bisa tetap dengan apa yang harus Anda mulai. :-)


Linux
  1. Linux – Output Dari Ps Lstart Berubah?

  2. Perpipaan Untuk Output Loop Mencegah Modifikasi Variabel Lokal?

  3. Urutkan Output Berdasarkan Kolom?

  1. Melihat output penuh dari perintah PS

  2. Ubah keluaran ls menjadi csv

  3. Ubah output menjadi string

  1. Memipipkan `find` ke 'tail`

  2. gzip - pengalihan atau perpipaan?

  3. Kompres keluaran perintah dengan menyalurkan ke bzip2