Как я могу использовать коммуникатор таким образом?

Как я могу использовать коммуникатор таким образом?

Насколько я понимаю, я хочу использовать comm -23 file1 file2. file1 — это результат , findа file2 — cut -c43- list. Возможно ли записать это в одну строку и не использовать никаких файлов (кроме того, который я назвал list)?

решение1

Замена процесса — ваш друг здесь:

$ comm -23 <(find /dir -name 'something') <(cut -c43- list)

Формат <(command)применяет временный файловый дескриптор к commandи все это <( )используется как входной файл для comm(или любой другой команды).
Смотритеподробнее о замене процессов здесь. Также проверьте man bash:

Подстановка процесса
Подстановка процесса позволяет ссылаться на вход или выход процесса с помощью имени файла. Он принимает форму <(list) или >(list). Список процессов запускается асинхронно, и его вход или выход отображается как имя файла. Это имя файла передается в качестве аргумента текущей команде в результате расширения. Если используется форма >(list), запись в файл предоставит входные данные для списка. Если используется форма <(list), файл, переданный в качестве аргумента, должен быть прочитан для получения выходных данных списка. Подстановка процесса поддерживается в системах, которые поддерживают именованные каналы (FIFO) или метод именования открытых файлов /dev/fd.

Связанный контент