Скільки всього способів подати команду з введенням?


9

Перше, що я помітив про Linux - це різні способи введення даних у команду, я знаю декілька, але я не знаю, скільки їх усього.

способи, які я знаю до цих пір:

трубопроводи:

echo -e "zorro\nwurst\nlahmacun\nsozialhilfe" | sort

з клавіатури з кінцем сигналу файлу:

sort
>gurken
>zucker
>braunkohle

з файлу:

sort foo

Рядок ТУТ (насправді називається ТУТ-документ):

sort << HERE
>wasserkopf
>elternzeit
>schuldeingeständnis
>währungsreform
>alabasterhaut
HERE

Це все або є більше способів це зробити, чому взагалі існують різні способи, чи є деякі способи зайвими?

Відповіді:


9

Принаймні наступне:

  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 bar EOF

  7. Рядок ТУТ: foo <<< bar

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

  9. Ціла різноманітність міжпроцесорних комунікацій , таких як сокети, TCP, файли, нанесені на пам'ять

† так, я розумію, що stdin - це файл (або схожий на файл). І що передача таких файлів насправді те саме, що передача у параметрах


1
Ви можете додати foo < barяк додатковий варіант (файл через stdin)
Хаген фон Ейтцен

14

Для початку sort << HEREі так далі - це не рядок тут. Це ось документ. Тут-рядок використовує <<<оператор. Це в баші (і деяких інших оболонках).

Загалом, є два способи. Один - через стандартне введення (і перенаправлення), а інший - через параметри.

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

    Це потік, який за замовчуванням підключений до терміналу, в якому команда виконує і пов'язана з fd (дескриптор файлу) 1. Він подається все, що вводиться в термінал. Хоча його (вхід) можна переспрямувати, як при використанні труби |або за допомогою тут-документів або тут-рядків. Тоді вхід не надходить з терміналу, а приєднується до стандартного виходу команди, що передує трубі. Різні оболонки мають різні перенаправлення, тому для цієї категорії слід перевірити документацію на оболонку. Шукайте переадресації вводу.

  2. Параметри

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

Підводячи підсумок, є два загальних способи:

  • перший абстрагує внутрішню логіку програми та маніпулює стандартним входом на рівні ОС / оболонки,

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

Для обох способів відповіді немає обмежень. Хоча фактичні обмеження припадають на ОС / оболонку та саме додаток.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.