tee
może przekierować standardowe wejście w potoku do standardowego wyjścia i pliku.
echo Hello, World! | tee greeting.txt
Powyższe polecenie wyświetli powitanie na ekranie terminala i zapisze je w zawartości greeting.txt
pliku, tworząc plik, jeśli nie ma takiego przy tej nazwie.
Istnieje również -a
opcja, tee
aby dołączyć do istniejącego pliku zamiast nadpisywania.
Czy istnieje wygodny sposób przekierowania potoku wejściowego do polecenia i standardowego wyjścia zamiast pliku?
Usiłuję utworzyć skrypt opakowania, buku
aby skopiować do podstawowego wyboru adres URL zakładki określony przez jego numer indeksu.
# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION
Tutaj używam echo
dwa razy, najpierw do wyświetlenia na terminalu, a następnie do zapisania w podstawowym wyborze (schowku).
Wyobrażam sobie coś echo $url | teeC xsel
lub skrót do wyświetlenia wyniku przed przekazaniem do następnego polecenia (polecenia łańcuchowe), co pozwoliłoby mi na połączenie całego polecenia w jednym wierszu bez konieczności zapisywania wyniku w zmiennej w następujący sposób:
buku -f 1 -p $1 | cut -f 2 | teeC xsel
Mogę go również używać urlview
do przeglądania, wybierania i otwierania w $BROWSER
następujący sposób:
bukuc 10-20 | urlview
tee /dev/tty
lubtty0
(nie pamiętam dokładnie ... jestem w drodze)info tee
wspomina o podstawieniu procesu i wyjściu trójnika do programu ...Odpowiedzi:
Jest prosty w powłokach, które obsługują podstawianie procesów , np. Bash
W przeciwnym razie możesz użyć FIFO (chociaż nie ma wygody)
źródło
sh
(powłoka Bourne'a) nie obsługuje tej funkcji; 2. Strzała musi trzymać się jako część jednego operatora w>()
celu zastąpienia procesu.Bezpośrednim analogiem „tee for
pee
command ” jest polecenie z moreutils (tee
ale z potokami ). Jego argumenty są używane jako polecenia do uruchomienia, a nie jako ścieżki, i pobierają do nich dane wejściowe, a nie zapisywane do pliku. Wszystkie polecenia mają standardowe wejście, do którego potokowałeśpee
jako własne.Korzystanie
pee
można uzyskać wynik chciałeś informując go uruchomić zarównoxsel
icat
przy wejściu.Pływa tam dodatkowy
cat
proces, aby wykonać dane wyjściowe, co nie jest tak naprawdę problemem dla twojego przypadku użycia, ale może być mniej idealne w innych przypadkach. Działa to z dowolną powłoką, w przeciwieństwie do zastępowania procesów, ale oczywiście wymaga zainstalowania dodatkowego (prawdopodobnie mniej powszechnego) narzędzia.Możesz podać więcej skomplikowanych poleceń poprzez ich cytowanie:
pee "xsel --display :1" cat
. Są uruchamianesh
, więc musisz uważać na metaznaki powłoki.źródło