tee
dapat mengarahkan input standar yang disalurkan ke output dan file standar .
echo Hello, World! | tee greeting.txt
Perintah di atas akan menampilkan salam pada layar terminal dan menyimpannya dalam isi greeting.txt
file, membuat file jika tidak ada dengan nama itu.
Ada juga yang -a
beralih untuk tee
menambahkan file yang sudah ada alih-alih menimpa.
Apakah ada cara yang mudah untuk mengarahkan input yang disalurkan ke perintah dan output standar alih-alih file?
Saya mencoba membuat skrip pembungkus untuk buku
menyalin ke pemilihan utama, URL bookmark yang ditentukan oleh nomor indeksnya.
# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION
Di sini saya menggunakan echo
dua kali, pertama untuk ditampilkan di terminal, dan kemudian menyimpan dalam pemilihan utama (clipboard).
Saya membayangkan sesuatu echo $url | teeC xsel
atau cara pintas untuk menampilkan output sebelum meneruskan ke perintah berikutnya (perintah chaining), apa yang akan memungkinkan saya untuk rantai seluruh perintah dalam satu baris tanpa perlu menyimpan hasil dalam variabel sebagai berikut:
buku -f 1 -p $1 | cut -f 2 | teeC xsel
Saya juga dapat menggunakannya dengan urlview
untuk melihat, memilih, dan membuka dengan yang $BROWSER
berikut:
bukuc 10-20 | urlview
tee /dev/tty
atautty0
(tidak ingat persis ... saya di jalan)info tee
menyebutkan penggantian proses, dan menyalurkan output tee ke sebuah program ...Jawaban:
Ini mudah di shell yang mendukung substitusi proses , misalnya bash
Kalau tidak, Anda bisa menggunakan FIFO (meskipun tidak nyaman)
sumber
sh
(Bourne shell) tidak mendukung fitur itu; 2. Panah harus menempel sebagai bagian dari operator tunggal>()
untuk penggantian proses.Analog langsung "tee for commands" adalah
pee
perintah dari moreutils (tee
, tetapi dengan pipa). Argumennya digunakan sebagai perintah untuk dijalankan, bukan sebagai jalur, dan mereka mendapatkan input yang disalurkan ke mereka daripada ditulis ke file. Semua perintah diberi input standar yang Anda gunakanpee
sebagai milik mereka.Dengan menggunakan
pee
, Anda bisa mendapatkan hasil yang Anda inginkan dengan menyuruhnya menjalankan keduanyaxsel
dancat
dengan input.Ada
cat
proses tambahan yang mengambang di sana untuk melakukan output, yang sebenarnya bukan masalah untuk use case Anda tetapi bisa jadi kurang ideal di lain waktu. Ini bekerja dengan shell apa pun, tidak seperti substitusi proses, tetapi tentu saja ia membutuhkan alat tambahan (mungkin kurang umum) yang diinstal.Anda dapat memberikan lebih banyak perintah kompleks dengan mengutip mereka:
pee "xsel --display :1" cat
. Mereka dijalankan dengansh
, jadi Anda harus berhati-hati tentang karakter meta shell.sumber