`tee` для команд

Las reglas de udev para DRBD provienen de las utilidades de drbd -. ¿Qué versión de DRBD utils tienes instalada?

La versión más reciente, 9.2.2, incluye reglas adicionales con un comentario de los desarrolladores que parece que podría solucionar su problema:

# This file contains the rules to create named DRBD devices.

SUBSYSTEM!="block", GOTO="drbd_end"
KERNEL!="drbd*", GOTO="drbd_end"

IMPORT{program}="@sbindir@/drbdadm sh-udev minor-%m"

# Use symlink from the environment if available
# some udev version thought it was a good idea to change a long established
# default of string_escape=none to string_escape=replace :-/
# therefore, recent enough drbdadm will no longer export space separated lists.
ENV{SYMLINK_BY_DISK}!="", SYMLINK+="$env{SYMLINK_BY_DISK}"
ENV{SYMLINK_BY_RES}!="", SYMLINK+="$env{SYMLINK_BY_RES}", GOTO="have_symlink"
ENV{SYMLINK}!="", OPTIONS+="string_escape=none", SYMLINK="$env{SYMLINK}", GOTO="have_symlink"

# Legacy rules for older DRBD 8.3 & 8.4 when drbdadm sh-udev did not yet export SYMLINK
ENV{DISK}!="", SYMLINK+="drbd/by-disk/$env{DISK}"
ENV{RESOURCE}!="", SYMLINK+="drbd/by-res/$env{RESOURCE}"

LABEL="have_symlink"

ENV{DEVICE}=="drbd_?*", SYMLINK+="$env{DEVICE}"

LABEL="drbd_end"
16
17.06.2017, 22:02
2 ответа

Это просто в оболочках, поддерживающих подстановку процессов , например. баш

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

В противном случае вы можете использовать FIFO (, хотя это не удобно)

$ mkfifo _myfifo
$ xsel < _myfifo &
$ echo bar | tee _myfifo
bar
$ xsel -o
bar
[1] + Done                       xsel 0<_myfifo
$ 
19
28.07.2021, 13:03

Прямым аналогом «тройника для команд» является командаpeeот moreutils(tee, но с пайпами). Его аргументы используются как команды для запуска, а не как пути, и они получают входные данные, а не записываются в файл. Все команды получают стандартный ввод, который вы передали в pee, как свои собственные.

Используя pee, вы можете получить желаемый результат, сказав ему запустить как xsel, так и catс входными данными.

echo foo | pee xsel cat

Существует дополнительный процесс catдля выполнения вывода, что на самом деле не является проблемой для вашего варианта использования, но может быть менее идеальным в других случаях. Это работает с любой оболочкой, в отличие от подстановки процессов, но, конечно, требует установки дополнительного (вероятно, менее распространенного) инструмента.

Вы можете давать более сложные команды, заключая их в кавычки: pee "xsel --display :1" cat. Они запускаются с sh, так что вы должны быть осторожны с метасимволами оболочки.

13
28.07.2021, 13:03

Теги

Похожие вопросы