Я певний час боровся з цим питанням і дуже вдячний, якби хтось міг роз'яснити це за мене. Припустимо, я намагаюся з'єднати дві команди разом. readlink
іcat
readlink Command output
$ readlink -f SUService.log
/cygdrive/c/SUService.log
Тепер якщо я спробую щось подібне (це не вдається)
$ readlink -f SUService.log | cat
Хоча щось подібне буде працювати
$ readlink -f SUService.log | xargs cat
Я хотів знати, чому це так? Я прочитав цю публікацію тут, в якій у ОП було подібне запитання, і цей пост, який намагається пояснити різницю між аргументом та вкладом, проте я все ще не міг обернути голову навколо прийнятих відповідей. З того, що я розумію, це те, що readlink
повертає результат у stdout, який є екраном терміналу, а cat
хоче введення як аргумент. Це взамін спонукає мене запитати, як я можу знати, чи може результат команди (наприклад, locate чи readlink) працювати як аргумент для наступної команди чи ні? Я робив більше читання, і виявляється, я хотів би знати, коли мені слід використовувати команду xarg?
stdout
можу виступати як підрив, якщо оболонка підтримує процес заміщення .