Сколько всего существует способов передать команду вводом?

Вы можете проверить смонтированные файловые системы с помощью команды df . Один лайнер для получения точки монтирования для sda может быть:

df -h | grep sda1 | tr -s " " | cut -d " " -f 6

Обратите внимание, что в случае автоматического монтирования пути / mnt и / run также являются возможными.

9
18.05.2017, 23:21
2 ответа

По крайней мере следующее:

  1. Опции команды: foo --bar

  2. Стандартный ввод: foo | bar или bar < foo

  3. Файл(ы): foo *.* (или открыв файл(ы) с помощью кода в foo) †

  4. ​​Экспорт среды: export foo=bar; baz

  5. Окружение (без экспорта): foo=bar baz или env foo=bar baz

  6. ЗДЕСЬ doc: foo << EOF бар EOF

  7. HERE string: foo <<< bar

  8. Сигналы kill -SIGUSR1 $procid

  9. Целый ряд межпроцессных взаимодействий, таких как сокеты, TCP , отображаемые в память файлы

† да, я понимаю, что стандартный ввод — это файл (или файлоподобный). И передача таких файлов действительно аналогична передаче опций

9
27.01.2020, 20:04

Начнем с того, что sort << HERE и т.д. не является здесь-строкой. Это здесь-документ. В этой строке используется оператор <<<. Это в bash (и некоторых других оболочках).

В общем, есть два пути. Один через стандартный ввод (и перенаправления), а другой через параметры.

  1. Стандартный ввод и его перенаправления

    Это поток, который по умолчанию подключен к терминалу, в котором выполняется команда и связан с fd (файловым дескриптором) 1. Он передает все, что вводится на терминал. Хотя его (ввод) можно перенаправить, как при использовании канала |, так и при использовании здесь-документов или здесь-строк. Тогда вход поступает не с терминала, а прикрепляется к стандартному выводу команды, предшествующей каналу. Различные оболочки имеют разные перенаправления, поэтому для этой категории вам следует проверить документацию оболочки. Найдите перенаправления ввода.

  2. Параметры

    Это то, что в вашем примере sort foo. Вызывая программу или функцию, вы передаете ей один или несколько параметров. Локальный файл — это только одна из возможностей. Параметр может содержать URL-адрес или что-то еще. Варианты здесь безграничны.

Подводя итог, можно выделить два основных способа:

  • первый абстрагируется от внутренней логики приложения и манипулирует стандартным вводом на уровне ОС/оболочки,

  • а второй задействует внутренности приложения, и именно они предлагают безграничные возможности, основываясь на параметрах вызова как на интерфейсе.

Для обоих способов ответ: ограничений нет. Хотя фактические ограничения связаны с ОС/оболочкой и самим приложением.

14
27.01.2020, 20:04

Теги

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