komutlar için "tee"


15

teeborulu standart girişi standart çıkış ve dosyaya yönlendirebilir.

echo Hello, World! | tee greeting.txt

Yukarıdaki komut selamlamayı terminal ekranında görüntüleyecek ve greeting.txtdosyanın içeriğine kaydedecek ve bu isimle hiçbiri yoksa dosyayı oluşturacaktır.

Üzerine yazmak yerine mevcut dosyaya eklenecek bir -ageçiş de vardır tee.


Borulu girişi dosya yerine komuta ve standart çıktıya yönlendirmenin uygun bir yolu var mı ?

bukuBirincil seçime kendi dizin numarası ile belirtilen URL URL kopyalamak için bir sarıcı komut dosyası oluşturmaya çalışıyorum .

# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION

Burada echo iki kez kullanıyorum, önce terminalde görüntülemek ve daha sonra birincil seçimde (pano) kaydetmek için.

Bir echo $url | teeC xselsonraki komutu (zincirleme komutları) geçmeden önce çıktıyı görüntülemek için bir şey veya bir kısayol hayal ediyorum , sonucu aşağıdaki gibi bir değişkene kaydetmeye gerek kalmadan tüm komutu tek bir satırda zincirlememe izin verir :

buku -f 1 -p $1 | cut -f 2 | teeC xsel    

Aşağıdaki urlviewşekilde görüntülemek, seçmek ve açmak için ile birlikte kullanabilirim $BROWSER:

bukuc 10-20 | urlview

3
Deneyin tee /dev/ttyya da tty0(tam olarak hatırlamıyorum ...
yoldayım

2
info teesüreç ikamesinden bahsediyor ve bir programa boru tee çıkışı ...
Xen2050

Yanıtlar:


19

Süreç ikamesini destekleyen mermilerde , örneğin bash

$ echo foo | tee >(xsel)
foo
$ xsel -o
foo

Aksi takdirde, bir FIFO kullanabilirsiniz (kolaylık olmamasına rağmen)

$ mkfifo _myfifo
$ xsel < _myfifo &
$ echo bar | tee _myfifo
bar
$ xsel -o
bar
[1] + Done                       xsel 0<_myfifo
$ 

Teşekkürler! Belirttiğim iki şey: 1. sh(Bourne kabuğu) bu özelliği desteklemiyor; 2. Ok, >()proses ikamesi için tek operatörün bir parçası olarak yapışmalıdır .

11

"Komutlar için tee" nin doğrudan analogu peemoreutils ( teeancak borularla) komutudur . Argümanları yol olarak değil çalıştırmak için komut olarak kullanılırlar ve girdiyi dosyaya yazmaktan ziyade onlara aktarılırlar. Tüm komutlara kendi oluşturduğunuz standart giriş verilir pee.

Kullanılması pee, size hem çalışacak şekilde anlatarak istediği sonucu alabilirsiniz xselve catgirişli.

echo foo | pee xsel cat

catÇıktıyı yapmak için etrafta yüzen ekstra bir süreç var, bu da kullanım durumunuz için gerçekten bir sorun değil, ancak diğer zamanlarda daha az ideal olabilir. Bu, işlem ikamesinin aksine herhangi bir kabukla çalışır, ancak elbette ekstra (muhtemelen daha az yaygın) bir araç gerektirir.

Onları alıntı yaparak daha karmaşık komutlar verebilir: pee "xsel --display :1" cat. Koşuyorlar sh, bu yüzden kabuk metakarakterlerine dikkat etmelisin.


4
Çok havalı - bunu bilmiyordum
steeldriver

3
Bu ... iyi bir isim değil.
David Richerby
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.