Чому існують короткі та довгі альтернативи параметрам командного рядка?


23

Більшість команд unixoid містять короткі та довгі альтернативи для параметрів командного рядка, таких як ls -aі ls --all, або ls -Aта ls --almost-all. Чому ці два способи існують? Одне коротше набирати, інше легше читати та розуміти. Але кожного разу, коли я пишу сценарій оболонки, мені потрібно вирішити, який я хочу використовувати. Чи відомо, чому існують дві альтернативи? Який перший був першим, чому інший був представлений. Наприклад, у DOS / Windows є майже лише однозначні варіанти, що не стосуються регістру.

Відповіді:


24

Спочатку існували лише односимвольні варіанти. Деякі програми брали кілька символьних варіантів, але все ще з одним тире. Параметри AFAIK з двома тиреми з декількома символами походять від GNU ; вони були представлені, тому що вони легше читаються та часто запам'ятовуються (а їх у вас може бути більше 52). Зараз у багатьох програмах є обидва: короткі параметри, коли ви вводите командний рядок і запам'ятовуєте символ, довгі параметри сценаріїв або в командному рядку, якщо ви пам’ятаєте лише довше ім'я параметра.


15
+1 за те, що зазначають, що довгі варіанти кращі для сценаріїв, оскільки вони допомагають документувати речі
Норман Грей,

5
Щодо "лише 52 з них": Спробуйте ls -BartSimpsonIsJustCool(або Greatякщо ви на Solaris.
Aaron Digulla

1
@AaronDigulla Це писанка?
користувач712092

5
@ user712092 Ні, це трюк. В Linux все після Iаргументу є -Iпараметром, тому це має значення лише в тому випадку, якщо sJustCoolу поточному каталозі у вас є файл, який називається . -BartSimpsonЧастина може бути замовлена, за винятком того, що S(сортування за розміром) повинен залишитися після t(сортування за датою). Також mне має ефекту при наявності nабо oприсутніх. Таким чином, команда рівнозначна ls -BSainopsr, і якщо я нічого не пропустив, ви не зможете видалити іншу літеру, щоб досягти того самого результату, і ви можете вільно впорядкувати ці літери.
Жил "ТАК - перестань бути злим"

2
@ Gilles: до речі, щоб бути максимально точним, може бути 62 різні короткі варіанти (включаючи цифри), а не 52. Розглянемо, gzip -9 filenameнаприклад.
Радко Дінев

1

Ви можете здогадатися, що це питання смаку. Під час введення в командному рядку може бути кращим варіант, особливо у випадку варіантів збігу (наприклад ls -AL). Довгі варіанти краще передавати наміри, тому вам не потрібно переглядати сторінку чоловіка під час читання ls --almost-all --dereference.

Звичайно, по мірі набуття досвіду ви можете дізнатись, що обидва варіанти -Aта -Lкороткий варіант є досить відомими і не потребують додаткової документації. Особливо в складній команді, яка може об'єднати кілька команд цікавими способами з оцінкою, перенаправленням тощо. У такому випадку ви можете віддати перевагу стислості над документацією.


1

Ще одна мета, яку я можу побачити у різних способах визначення параметрів (коротких і довгих), полягає в тому, що під час введення тексту, командний рядок Unix / Linux люблять мати якомога коротші команди. Однак вони можуть стати кричущими, і якщо сценарій буде написаний з використанням цих коротких версій, їх важко зрозуміти в дорозі. Використання довгої версії може зробити команду SAME більш зрозумілою та зрозумілою для тих, хто не є гуру цієї команди, особливо якщо ця команда насправді є локально написаним сценарієм на відміну від добре відомої команди.

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