Показаны сообщения с ярлыком bash. Показать все сообщения
Показаны сообщения с ярлыком bash. Показать все сообщения

вторник, 23 ноября 2021 г.

Автоматизация рутины. Скачиваем файлы через bash

Вышла я на работу, так что пора стряхнуть пыль с рубрики «истории с работы» 👀

Стоит у меня задача — скачать и запустить N справочников на стенде, около 10 штук. Команда выглядит так:

env/bin/test download dir_1

env/bin/test download dir_2

env/bin/test download dir_3

...

env/bin/test start dir_1

env/bin/test start dir_2

Это в упрощенном виде. А если у меня есть какие-то особенности запуска (смещение порта, например), команда получается длиннее:

. tester.env && . custom.env && env/bin/test download dir_1

Команды можно вызвать пачкой, они не конфликтуют друг с другом. Ну и прекрасно! Можно, конечно, уныло вставлять команду в командую строку и ждать выполнения, но зачем?

воскресенье, 28 марта 2021 г.

Что такое bash / shell

 И то, и другое — интерпретаторы командной строки в линуксе. То есть если вы откроете командную строку и введете любую команду, да хоть:

cd /home

То именно интерпретатор ее расшифрует и скажет компьютеру «он хочет перейти в директорию /home». Компьютер ведь не понимает команды на русском / английском языке. Ему нужны байтики. Этим и занимается интерпретатор — переводом с «нашего» на «компьютерный» язык.

Так что «cd /home» — это shell-команда! Или bash. Смотря какой интерпретатор установлен в вашей системе. В каждой операционной системе установлен интерпретатор по умолчанию. У них есть какие-то различия, но есть и набор базовых команд, которые понимают все: cd, mv, cp, ls… (в винде эти команды немного другие)

пятница, 8 сентября 2017 г.

Что значат символы >> и >& в unix/Linux

> перенаправляет вывод в файл, перезаписывая его

>> перенаправляет вывод в файл, но не перезаписывает его, а добавляет в конец

Standard output is represented in bash with number 1 and standard error is represented with number 2. They are separate, so the user can redirect them to different files.

2>&1 redirects the standard error to the standard output so they appear together and can be jointly redirected to a file. (Writing just 2>1 would redirect the standard error to a file called "1", not to standard output.) © stackexchange

Стандартный вывод в bash-е обозначается цифрой 1, а ошибки — цифрой 2.

Команда 2>&1 перенаправляет вывод ошибок в STDOUT. Они и так обычно туда направляются, но так надежнее ツ

Команда 2>1 запишет текст ошибки в файл "1", поэтому нам нужен знак амперсанда, если мы имеем в виду именно поток.

Посмотрим на примере. Перейдем в Cygwin в любую существующую директорию, а потом попробуем удалить некий файл example.txt, которого на самом деле там нет → система выведет ошибку «файла не существует».