Я заметил много вопросов, ответов и комментариев, выражающих презрение к (а иногда и боязнь) написания сценариев вместо однострочников. Итак, я хотел бы знать:
Когда и почему я должен писать отдельный скрипт, а не «однострочник»? Или наоборот?
Каковы варианты использования и плюсы и минусы обоих?
Некоторые языки (например, awk или perl) лучше подходят для однострочников, чем другие (например, python)? Если так, то почему?
Это просто вопрос личных предпочтений или есть веские (то есть объективные) причины для написания того или другого в конкретных обстоятельствах? Каковы эти причины?
Определения
one-liner
: любая последовательность команд, введенная или вставленная непосредственно в командную строку оболочки . Часто с участием трубопроводов и / или использование языков , таких какsed
,awk
,perl
, и / или инструменты , такие какgrep
илиcut
илиsort
.Определяющим признаком является прямое выполнение в командной строке - длина и форматирование не имеют значения. «Однострочный» может быть все в одной строке, или он может иметь несколько строк (например, sh for loop, или встроенный код awk или sed, с переводом строки и отступом для улучшения читабельности).
script
: любая последовательность команд на любом интерпретируемом языке (ах), которые сохраняются в файл и затем выполняются. Сценарий может быть написан полностью на одном языке, или это может быть оболочка сценария оболочки вокруг нескольких «однострочников», использующих другие языки.
У меня есть собственный ответ (который я опубликую позже), но я хочу, чтобы это стало каноническим вопросом и ответами на эту тему, а не только моим личным мнением.