Как сохранить вывод команды терминала (Bash) в текстовый файл

Всем доброго времени суток и других разностей.

Введение

BASH — Bourne-Again SHell (что может переводится как «перерожденный шел», или «Снова шел Борна(создатель sh)»), самый популярный командный интерпретатор в юниксоподобных системах, в особенности в GNU/Linux. Ниже приведу ряд встроенных команд, которые мы будем использовать для создания своих скриптов.

  • break выход из цикла for, while или until
  • continue выполнение следующей итерации цикла for, while или until
  • echo вывод аргументов, разделенных пробелами, на стандартное устройство вывода
  • exit выход из оболочки
  • export отмечает аргументы как переменные для передачи в дочерние процессы в среде
  • hash запоминает полные имена путей команд, указанных в качестве аргументов, чтобы не искать их при следующем обращении
  • kill посылает сигнал завершения процессу
  • pwd выводит текущий рабочий каталог
  • read читает строку из ввода оболочки и использует ее для присвоения значений указанным переменным.\
  • return заставляет функцию оболочки выйти с указанным значением
  • shift перемещает позиционные параметры налево
  • test вычисляет условное выражение
  • times выводит имя пользователя и системное время, использованное оболочкой и ее потомками
  • trap указывает команды, которые должны выполняться при получении оболочкой сигнала
  • unset вызывает уничтожение переменных оболочки
  • wait ждет выхода из дочернего процесса и сообщает выходное состояние.

И конечно же кроме встроенных команд мы будем использовать целую кучу внешних, отдельных команд-программ, с которыми мы познакомимся уже в процессе

Несколько способов ускорить bash-скрипты

Для написания простого скрипта на bash, нам потребуется выполнить следующие простые действия:

    Создадим в командной строке Linux пустой файл (назовем его для примера firstscript) и откроем его на редактирование в любимом текстовом редакторе (vi/vim, nano, gedit и т.д.):
  1. Скопируем/вставим или просто наберем вручную следующий текст:
  2. Выйдем из текстового редактора с сохранением созданного файла.
  3. Сделаем наш скрипт исполняемым, чтобы в дальнейшем мы его могли без проблем запускать из командной строки, выполнив команду:
  4. Попробуем запустить созданный нами скрипт, выполнив в командной строке: И, вот результат:

Как это все работает:

первая строка нашего скрипта крайне необходима, для того, чтобы наш скрипт успешно выполнился.

вторая строка создает каталог testdir

третья строка позволяет перейти в созданный каталог testdir

команда touch в следующей строке создает три файла

и последняя команда в строке нашего скрипта позволяет вывести на экран содержимое текущего каталога, в котором, благодаря предыдущей строке, появилось три пустых файла.

Читайте также:  Какой принтер лучше купить для домашнего использования?

Как мы видим, в нашем простом скрипте все команды начинаются с новой строки. Каждая строка при запуске скрипта, последовательно выполняет свою работу, совершая те или иные действия.

Если вы ежедневно выполняете цепочку каких-либо одинаковых команд (с постоянными параметрами) в Linux, то возможно вам имеет смысл написать такой же простой скрипт на bash, который позволит вам сэкономить ваше время и автоматизировать вашу работу.

Часто бывает, что необходимо автоматизировать какое-то действие. На помощь всегда приходят bash-скрипты! Не забываем, что для того, чтоб скрипт можно было запустить, надо изменить права доступа к нему, добавив возможность исполнения файла.

, перенаправление

#!/bin/bash # Любой shell-скрипт всегда начинается со строчки #!/bin/bash (или #!/bin/sh) # Комментарии всегда начинаются со знака # # Для того, чтоб вывести на экран сообщение, используем команду ECHO echo "hello, world" # а это пример форматированного вывода…

почти как в Си printf "форматированный вывод десять=%d строка=%s float=%f шестнадцатиричное_число=0x%X\n" 10 "строка" 234 # пример чтения ввода с клавиатуры read A echo $A printf " вы только что ввели слово: %s\n" "$A" #перенаправление, конвейеры, получение результата вывода другой программы # пример генерации пароля из 10 букв PASSWORD1=`cat /dev/urandom | tr -d -c ‘a-zA-Z0-9’ | fold -w 10 | head -1` echo Password=$PASSWORD1 #кавычки вида « дают результат вывода на экран того, что внутри них (т.е. выполняется #программа или скрипт, написанные внутри таких кавычек и результат, выводимый ими на #стандартный вывод является результатом операции "обратные кавычки" #в данном случае результатом является вывод конвейера из нескольких программ.

Интересные bash скрипты для любителей терминала в Linux

#операция | обозначает конвейер. Т.е. в нашем примере: #cat /dev/urandom выводит на содержимое файла /dev/urandom ( для генерации ) #tr осуществляет трансляцию,т.е. заменяет одни байты другими (это нужно, чтоб избежать появления в пароле непе- #чатаемых символов) #fold разбивает то, что ей пришло на на строки длиной 10 символов и выводит это на #head -1 выводит первую строчку того, что ей пришло на стандартный ввод. # или так: PASSWORD2=`cat /dev/urandom | tr -dc _A-Z-a-z-0-9 | head -c10` echo Password=$PASSWORD2

действия, циклы по кол-ву раз

#!/bin/bash A="10" B="5" C=`expr $A + $B` printf "A=10 B=5 C=expr \$A + \$B C=%d \n" "$C" # пример цикла по i I=0 while [ $I -lt 15 ] do printf "0x%02x " "$I" I=`expr $I + 1` done echo

рода проверки

#!/bin/bash # пример проверки существования файла # создаем файл test1 touch test1 # проверяем существование файла test1 if [ -f test1 ] ; then echo "файл test1 существует" fi # проверяем несуществование файла test2 if ! [ -f test2 ] ; then echo "файл test2 не существует" fi # краткая справка по другим опциям команды [ ] # -d filename директория существует # -f filename файл существует # -L filename символьная ссылка существует # -r, -w, -x файл доступен для чтения, записи или выполнения # -s filename файл существует и имеет ненулевую длину # f1 -nt f2 f1 новее чем f2 # f1 -ot f2 f1 старше чем f2

Читайте также:  Запуск от имени администратора программ Windows 7 и 10

Метки: bash, freebsd, shell

Написать комментарий через:

Команды в Git Bash консоли

clear — Очистить консоль

pwd — Показать текущий каталог ls — Показать файлы в данной папке, кроме скрытых ls -f — Показать файлы в данной папке, включая и скрытые cd c:/ — Перейти в конкретный каталог cd — — Вернуться назад cd .. — Выйти на 1 уровень вверх cd ../.. — Выйти на 2 уровня вверх

Создание каталогов

mkdir — Создать папку cd !$ — Перейти в только что созданную папку mkdir -p {app1,app2} — Создать сразу несколько папок mkdir -p app/{css,js} — Создать сразу несколько вложенных папок

Создание файлов

touch — Создать файл touch app/{css/,js/,} — Создать сразу несколько файлов, никаких лишних пробелов быть не должно

Удаление файлов

touch — позволяет создавать файлы rm test — Удалить пустую папку test rm -r test — Удалить папку test с файлами внутри неё

Перемещение файлов

mv app1/*.* app2 — Переместить все файлы из папки app1 в папку app2

Запуск script bash

Чтобы лучше понять, как работать со скриптами, стоит рассмотреть несложный пример. Допустим, необходимо запустить script bash. Для этого, создам файл «», с помощью редактора nano.

$ nano

Внутри файла пишем следующий код:

#!/bin/bash

echo «Primer vypolneniya scripta»

В представленном примере первая строка – это та самая оболочка, посредством которой выполняется определенное действие. Само действие в данном случае указано во второй строке. Примечательно, что у данного варианта могут быть альтернативные окончания. Например:

  • /bin/sh — bash script.
  • /usr/bin/php — php scpript.
  • /usr/bin/python — язык python.

Далее необходимо сохранить файл. Согласно нашему примеру нажимаем «ctrl + O», затем «ctrl + X».

Чтобы script bash отработал, необходимо дать файлу специальные права на исполнение.

$ chmod ugo+x

После этого файл будет доступен к запуску для всех категорий пользователей Линукс (без исключений). Чтобы найти нужный скрипт в системе, необходимо задать полный путь или относительный.

В нашем примере файл лежит в домашнем каталоге, поэтому просто для запуска вводи название скрипта.

$

А вот указание полного пути. Он будет выглядеть следующим образом:

$ /root/

Запуск через оболочку bash

Далее мы рассмотрим альтернативный способ запуска script, используя для этих целей оболочку. Пользователь может сразу передать ей нужный скрипт для выполнения. Такое не часто встречается на практике в случае с bash, чего не скажешь о скриптах python и php. Как запустить скрипт указанным способом:

Читайте также:  SSH в Windows 10: как активировать сервер и подключиться как клиент

$ bash

Предлагаем вашему вниманию еще один аналогичный способ запуска:

$ php

Чтобы произвести запуск сценария в операционной системе Линукс в виде фонового процесса, необходимо использовать специальный символ. Он будет указан ниже:

&

Заключение

Знакомство новичка с терминалом Linux часто приводит к некоторым сложностям.  Разобравшись в том, как происходит управление устройством, данная проблема быстро пропадает. Данная статья лишь подтверждает это. Запускать script в Линукс действительно легко.

Вариант 2: перенаправляем вывод в файл и отображаем его на экране

Не всем и не всегда удобно пользоваться операторами > и >>, так как все же лучше когда волнение команд можно наблюдать в реальном времени в окне терминала. В таком случае мы можем воспользоваться командой tee, которая и отобразит выполнение команд на экране, и сохранит его в файл. Синтаксис ее такой:

команда | tee /путь/к/файлу

Этот вариант подобен оператору > из предыдущего пункта, то есть при записи в файл, все старые данные будут удалены. Если вам нужно дописать в файл, в конструкцию нужно добавить параметр -a:

команда | tee -a /путь/к/файлу

В Bash есть еще несколько операторов и команд, выполняющих идентичные задачи, их часто используют во время написания различных скриптов, но для обычного пользователя, которому нужно сохранить вывод команды чтобы запостить его на форуме, вполне достаточно и этих вариантов. Надеюсь, что помог вам, до новых постов!

Вариант 2: перенаправляем вывод в файл и отображаем его на экране

Предыдущая запись Как добавить пользователя в CentOS 7 Следующая запись Восстановление GRUB 2 после установки Windows в DebianМожет вас заинтересовать:

  1. Отключаем чувствительность терминала Linux к регистру при использовании автодополнения по TAB
  2. Как узнать версию дистрибутива и ядра Linux
  3. Как перезагрузить или выключить компьютер из терминала в Ubuntu
  4. Скринкастинг с помощью FFmpeg (avconv) в Linux

Метки Linux терминалХаки Linux

; — разделитель команд оболочки

В командной строке Вы можете вводить столько команд, сколько Вам нужно, если Вы разделяете каждую из них точкой с запятой (;). Мы сделаем это в следующем примере:

ls> ; wc -l ; rm

; - разделитель команд оболочки

Обратите внимание, что вторая команда выполняется даже в случае сбоя первой, третья — даже в случае сбоя второй и тд.

Если Вы хотите остановить последовательность выполнения в случае сбоя одной команды, используйте двойной амперсанд (&&) вместо точки с запятой:

cd ./doesntexist && cp ~ / Documents / reports / *.

; - разделитель команд оболочки