GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Kerja Perintah Tee??

Tutup . Pertanyaan ini membutuhkan detail atau kejelasan. Saat ini tidak menerima jawaban.

Ingin memperbaiki pertanyaan ini? Tambahkan detail dan klarifikasi masalahnya dengan mengedit postingan ini.

Ditutup 4 tahun yang lalu.


Perbaiki pertanyaan ini

Setelah menemukan sekitar 3 tee penjelasan yang saya anggap tidak mendidik, saya akan meminta penjelasan yang sederhana, umum, dan bertahap (jika mungkin) tentang perintah ini, yang ditujukan untuk pendatang baru Linux.

Saya mengerti bahwa kami menggunakannya baik melalui pipa, pada stdout perintah, atau sebagai alternatif, langsung ke file tertentu, tetapi saya rasa saya melewatkan apa yang sebenarnya dilakukan perintah dengan konten ini dan kapan itu berguna.

Jadi, inilah yang saya tanyakan, berharap menemukan penjelasan didaktik, disajikan kepada pendatang baru dengan cara yang jelas dan bertahap:

  1. Bagaimana cara kerja perintah dengan stdout perintah, atau sebagai alternatif, file itu sendiri?

  2. Mengapa umum untuk mengatakan tee membaca input standar? Maksud saya, jika saya melakukan ls -l , tee tidak membaca sintaks ls -l itu sendiri melainkan stdout yang dicetak ke dalam sesi.

Juga, jika Anda mau, silakan bagikan contoh praktis dari pekerjaan sehari-hari Anda tentang kapan tee sangat berguna bagi Anda?

Jawaban yang Diterima:

Dari tee manual di sistem saya:

Utilitas tee menyalin input standar ke output standar, membuat salinan
dalam nol atau lebih file. Outputnya tidak buffer.

Jadi, ia membaca dari input standar dan menyalinnya ke output standar, dan saat melakukannya juga menduplikasi aliran menjadi satu atau beberapa file.

Dalam pipa berikut, tee akan mengambil output dari perintah pertama di pipeline dan menyalinnya ke output standar (terminal) sambil juga membuat salinannya di file one , two dan three :

$ somecommand | tee one two three

tee memiliki banyak kegunaan, salah satunya adalah dalam hubungannya dengan sudo untuk mengarahkan output ke file yang dimiliki oleh root:

$ somecommand | sudo tee /root/somefile >/dev/null

Berikut ini akan tidak telah berfungsi sejak pengalihan terjadi sebagai pengguna yang tidak memiliki hak (itu juga akan menjalankan somecommand sebagai root yang mungkin tidak diinginkan):

$ sudo somecommand >/root/somefile

Contoh buatan untuk menambahkan kumpulan baris tetap ke banyak file sekaligus (untuk semua pengguna ~/.profile file, dengan asumsi bahwa * diperluas ke nama pengguna dan baris perintah yang diperluas tidak menjadi terlalu panjang untuk ditangani oleh shell):

$ tee -a /home/*/.profile <<'END_NEWPATH'
PATH="$PATH:/opt/bin"
END_NEWPATH

Contoh nyata penggunaan tee :

time doas box-build.sh 2>&1 | tee build.out |  grep '^=*>'

Ini saya membangun sistem dasar OpenBSD. doas adalah "setara" OpenBSD dari sudo dan box-build.sh adalah skrip shell kecil yang melakukan pembangunan (pada dasarnya cd /usr/src && make obj && make build ). Saya ingin menyimpan output dari keseluruhan proses pembuatan, termasuk kesalahan atau peringatan apa pun, tetapi saya tidak ingin semuanya keluar ke terminal saya. Untuk tujuan ini saya menggunakan tee untuk menyimpan semuanya ke build.out lalu grep hanya untuk mendapatkan petunjuk di mana dalam proses kita berada di terminal.

Terkait:Skrip shell dengan fungsi dan parameter sebagai Variabel?
Linux
  1. Bagaimana perintah oc debug bekerja di OpenShift

  2. Bagaimana cara menggunakan perintah nama dasar?

  3. Bagaimana Cara Kerja Sticky Bit?

  1. Cara menggunakan perintah grep Linux

  2. Bagaimana Perintah Sed '1!g;h;$!d' Membalikkan Isi File?

  3. Bagaimana cara kerja perintah ps?

  1. Cara menggunakan perintah history di Linux

  2. Bagaimana Perintah Keluar Bekerja Pada Terminal Unix?

  3. Bagaimana Wildcard * Diinterpretasikan Sebagai Perintah?