5. Используйте эскейп-символы, чтобы управлять отображением длинных команд.
Это пятая «хорошая привычка» из статьи «Learn 10 good UNIX usage habits» от IBM.
Начать с первой части: «умное использование mkdir» .
Перейти к предыдущей части: «про кавычки и переменные» .
Напоминаю, что перевод вольный. Добавлены комментарии, когда было что добавить из «хороших привычек».
Возможно, вы уже видели код, в котором используются бекслеши (\) в конце строк. А за ними на следующей строке уже следует часть кода, которая не уместилась в строку. Многие оболочки командной строки поддерживают подобное разбиение строк — так мы можем экранировать переводы строк. Например:
$ tar czvf project.tar.gz project/bin \ project/demo project/doc project/lib
Однако, не нужно этим злоупотреблять — если можешь написать несколько коротких команд вместо одной длинной — пиши короткие. Так понятнее.
Всё же есть неплохие примеры использования бекслеша для экранирования перевода строки, создания многострочных команд. К примеру, с помощью них можно сделать более читаемым код с управляющими операторами:
~ $ cd tmp/a/b/c || \ > mkdir -p tmp/a/b/c && \ > tar xvf -C tmp/a/b/c ~/archive.tar
Или даже так:
~ $ cd tmp/a/b/c \ > || \ > mkdir -p tmp/a/b/c \ > && \ > tar xvf -C tmp/a/b/c ~/archive.tar
Таким образом логические части разделены визуально, и их проще читать.
Также хочется отметить удобство разделения команды на строки, когда команда принимает список аргументов. Для примера можно рассмотреть apt
:
apt install -y \ git-core \ virtualenvwrapper \ python3 \ python3-pip \ python3-dev \ libxml2-dev \ libxslt1-dev \ build-essential \ libffi-dev \ libssl-dev \ libjpeg8-dev \ zlib1g-dev
Такое перечисление библиотек куда проще воспринимать, нежели однострочную портянку. Этот код ещё и проще поддерживать — в git diff
будет видно: какие пакеты были удалены, а какие добавлены в список установки.
Используйте экранирующие последовательности, чтобы сделать ваш код более понятным!