Аналог bat файлов в linux

Обновлено: 07.07.2024

В Linux, так же как и в операционных системах семейства Microsoft Windows можно создавать командный файл . которые содержат в себе набор команд интерпретатора shell. Такие файлы имеют свой синтаксис, который позволяет оперировать такими структурами как циклы и условия. Далее основы shell программирования linux на примере командной строки ubuntu 9.04 и интерпретатора bash.

Основы

Запишем в файл sample последовательность команд

$ cat sample
pwd
ls
echo The END

А теперь выполним эти команды

$ sh sample
/home/sgww
cpp file.txt mydaemon net_sh perl php sample
The END

Таков принцип .

Командный файл легко сделать исполняемым

$ chmod +x sample
$ /home/sgww/sample
/home/sgww
cpp file.txt mydaemon net_sh perl php sample
The END

Параметры

$1, $2 . $9 - позволяют задавать аргументы командной строки для выполняемого файла

$ cat sample
echo the first parameter: $1
echo the second parametr: $2
echo the third parameter: $3
ls $1 $2 $3

$ /home/sgww/sample -l -s -r
the first parameter: -l
the second parametr: -s
the third parameter: -rtotal 28
4 -rwxr-xr-x 1 sgww sgww 100 Mar 2 11:19 sample
4 drwxr-xr-x 2 sgww sgww 4096 Dec 15 16:52 php
4 drwxr-xr-x 2 sgww sgww 4096 Feb 1 15:39 perl
4 -rw-r--r-- 1 sgww sgww 79 Mar 1 16:16 net_sh
4 drwxr-xr-x 2 sgww sgww 4096 Feb 1 17:15 mydaemon
4 -rw-r--r-- 1 sgww sgww 56 Mar 1 17:18 file.txt
drwxr-xr-x 2 sgww sgww 4096 Feb 1 17:15 cpp

Переменные

Имя переменной может начинаться с буквы или символа подчереркивания
знак равенства(=) это оператор присваиивания

_var=1
_word =slovo
value="t ak aia dli nna iain epo niat naia str oka"

Тип данных переменных shell это всегда строка символов!

$ cat sample
_string="Hello from Perm"
echo $_string
$ /home/sgww/sample
Hello from Perm

результат выполения команды в переменную (команда обрамляется обратными апострофами)

$cat sample
_date=`date`
echo $_date
$/home/sgww/sample
Tue Mar 2 11:41:30 YEKT 201

ввод значения переменной в консоли

$ cat sample
echo Enter data:
read data1
read data2
echo Your data: $data1 and $data2
$ /home/sgww/sample
Enter data:
Linux
Windows
Your data: Linux and Windows

Системные переменные

$ cat sample
echo $PATH
echo $HOME
echo $MAIL
echo $SHELL
$ /home/sgww/sample
/usr/local/bin:/usr/bin:/bin:/usr/bin/X1 1:/usr/games
/home/sgww
/var/mail/sgww
/bin/bash

PATH - пути поиска исполняемых файло (так как каталога /home/sgww/ там нет, постояно приходилось писать полный путь /home/sgww/sample для выполнения команды)
HOME - домашний каталог
MAIL - файл электронной почты
SHELL - оболочка в которой работаем

Добавим к переменной PATH каталог HOME что бы не приходилось постоянно писать полный путь

$ cat sample
PATH=$PATH:$HOME

Эти строки следует добавить в

/.bash_profile
теперь нет необходимости писать полный путь до команды

Специальные символы

* - любая последовательность, любых символов
? - один любой символ
[. ] - любой из символов диапазона

$echo *
cpp file.txt mydaemon net_sh perl php sample
$ echo "*"
*

$ cat sample
text="This is a text"
echo \$text
$ sample
$text

$ cat sample
text=`pwd`
echo $text
$ sample
/home/sgww

Арифметические операции

Для выполнения арифметических операций в командном файле понадобиться команда expr

$ expr 7 + 96
103
$ expr 87 - 555
-468
$ expr 18 / 2
9
$ expr 19 / 2
9
$ expr 19 % 2
1
$ expr 6 \* 32
192
$ expr 6 '*' 32
192
$ expr 6 * 32
expr: syntax error

Если при умножении не поставить \ или '' то * будет восприниматься как любой символ

Стоит отметить, что \ - это не деление, а целая часть от деления, операция % дает остаток от деления

Переменные окружения, команда export и unset

Для взаимодейстивя с другими процессами могут пригодияться переменные окружения

Их полный списко можно посмотреть командой export

$ export
declare -x HISTCONTROL="ignoreboth"
declare -x HOME="/home/sgww"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="sgww"
.

Задать свою переменную

$ name=Pavel && export name
$ echo $name
Pavel

$ unset name
$ echo name

Условие IF

Для составления условных выражений оператора if очень полезна программа test.

$ cat sample
if test -r sample
then
echo True
else
echo False
fi
$ sample
True

В этом примере test -r sample - это условие
echo True выполняется если условие истино
echo False если ложно

Программа test предназначена для проверки типов файлов и сравнения значений

Остальные параметры можно посмотреть в man test

Цикл FOR

$ cat sample
for x in 1 two 3
do
echo $x
done
$ sample
1
two
3

В этом цикле код между do и done выполниться 3 раза, при этом первый раз
x=1, второй раз x=two и последний x=3

Другой интересный пример

$ cat sample
for x in *
do
echo $x
done
$ sample
cpp
demo
file.txt
mydaemon
net_sh
perl
php
sample

* в списке переменных цикла, заставляет for использовать в качестве значения $x элементы текущего каталога

Циклы WHILE и UNTIL

$ cat sample
while test -r file
do
sleep 10
echo file exists
done
echo file does not exist

$ touch file
$ sample
file exists
file exists
Ctr+Z
[1]+ Stopped sample
$ rm file
$ fg
sample
file exists
file does not exist

$ cat sample
until test -r file
do
sleep 5
echo file does not exist
done
echo file exists
$ sample
file does not exist
file does not exist
Ctr+Z
[1]+ Stopped sample
$ touch file
$ fg
sample
file does not exist
file exists
$

Если Вы использовали .BAT файлы, чтобы создать сокращения для длинных командных строк (я писал их множество), то в Linux это можно сделать вставкой соответствующих alias строк (см. пример выше) в profile или .profile . Но если ваши .BAT-файлы были более сложными, тогда вам понравится язык создания сценариев, предоставляемый shell: он также мощен как QBasic, если не больше. Он имеет переменные, структуры типа while, for, case, if. then. else, и множество других возможностей: он может быть хорошей альтернативой "настоящему" языку программирования.

Чтобы написать скрипт --- эквивалент .BAT файла под DOS --- все, что Вы должны сделать - это написать стандартный ASCII-файл, содержащий команды, сохранить его, затем сделать его выполнимой программой с помощью команды chmod +x <scriptfile> . Для запуска напечатайте его имя.

Предупреждение. Системный редактор называется vi , и, по моему опыту, новички находят его очень трудным для использовании. Я не собираюсь объяснять, как им пользоваться, потому что мне он не нравится, и я не пользуюсь им. Так что могу рассказать про него следующее:

  • Чтобы вставить текст, напечатайте " i ", затем ваш текст;
  • Чтобы удалить символы, напечатайте <ESC> затем " x ";
  • Чтобы выйти из vi без сохранения, напечатайте <ESC> затем :q!
  • Сохранить и выйти, напечататйте <ESC> затем :wq .

Хороший редактор для новичка - joe : вызовите его, напечатав jstar , и вы получите очень знакомый по DOS редактор. Jed в WordStar или IDE режиме даже лучше. Пожалуйста, обратитесь к разделу "Где найти приложения", чтобы узнать, где можно найти эти редакторы.

Написание скриптов под bash - это такой обширный предмет, что требуется книга, и я не буду углубляться в эту тему дальше. Я только дам Вам пример скрипта shell, из которого Вы можете извлечь некоторые основные правила:

8.2. C для Вас

В UNIX системный язык - C, вызывающий или любовь, или ненависть. Также доступны и множество других языков (Java, ФОРТРАН, Паскаль, Lisp, BASIC, Perl, awk . ).

В предположении, что в знаете C, имеется пара руководящих принципов для тех из Вас, кто испорчен Турбо C++ или одном из компиляторов DOS. Транслятор С в Linux называется gcc и испытывает недостаток всех звоночков и свистков, которые обычно сопровождают его DOSовских собратьев: никаких IDE, интерактивных справок, интегрированных отладчиков, и т.д. Это всего лишь грубый транслятор командной строки, очень мощный и эффективный. Чтобы скомпилировать ваш стандартный hello.c , выполните:

который создаст исполняемый файл, называемый a.out. Чтобы дать выполнимой программе другое имя,

Чтобы подсоединить библиотеку к программе, добавьте ключ -l <libname> . Например, чтобы подсоединить математическую библиотеку:

(ключ -l <libname> ; указывает gcc присоединить библиотеку /usr/lib/lib<libname> ; .a; так -lm связан с /usr/lib/libm.a ).

Вам надо будет написать так называемый makefile , который обучает транслятор зависимости между исходниками и объектными файлами. В нашем примере:

Сохраните этот файл как Makefile , и напечатайте make , чтобы скомпилировать вашу программу; альтернативно, сохраните его как calc.mak , и напечатайте, make -f calc.mak , и, конечно, RMP. Вы можете вызывать некоторые справки о функциях C, которые документированы в 3 разделе man страниц; например,

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


В Unix-подобных системах мы используем команду «cat» для вывода и связи файлов.

Используя команду cat, мы можем вывести содержимое файла в стандартном виде, объединить несколько файлов в целевой файл и добавить несколько файлов в целевой файл.

Сегодня я наткнулся на аналогичную утилиту под названием «Bat», клон для команды cat, с некоторыми дополнительными классными функциями, такими как подсветка синтаксиса, интеграция git и автоматическая подкачка и т. д.

В этой статье мы установим и потестируем Bat и его команды в Linux.

Установка

Bat также доступен в репозиториях по умолчанию Arch Linux. Таким образом, вы можете установить его с помощью pacman в любых системах на основе arch.

В Debian, Ubuntu, Linux Mint, загрузите файл .deb со страницы релиза и установите его, как показано ниже.

Для других систем вам может потребоваться компиляция и установка из исходников.

Убедитесь, что вы установили Rust 1.26 или выше.

Кроме того, вы можете установить его с помощью диспетчера пакетов Linuxbrew.

Использование команды Bat

Команды Linux cat и bat , отличия и сходства

Команда Bat очень похожа на команду cat.

Чтобы создать новый файл с помощью команды bat, выполните следующие действия:

Чтобы просмотреть содержимое файла с помощью команды bat, просто выполните:

Таким образом, вы можете просматривать сразу несколько файлов:

Чтобы добавить содержимое нескольких файлов в один файл:

Как я уже сказал, помимо просмотра и редактирования файлов, команда Bat имеет некоторые дополнительные интересные функции.

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

Например, посмотрите на следующий пример.

Я собираюсь отобразить содержимое файла reverse.py с помощью команд cat и bat.

Вы заметили разницу? В текстовом формате команда выводит выходные данные с подсветкой синтаксиса, номерами строк в аккуратном формате табличного столбца.

Гораздо лучше, не так ли?

Если вы хотите отображать только номера строк (не табличные столбцы), используйте флаг -n.

Пример вывода

Это означает, что вы можете читать выводы страница за страницей.

Позвольте мне показать вам пример.

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

Посмотрите следующий результат:

Как вы можете видеть, команда cat отображает последнюю страницу файла.

Таким образом, вам может потребоваться прочитать содержимое этого документа с командой less.

Теперь вы можете увидеть страницу, нажав клавишу ENTER.

Тем не менее, это не обязательно, если вы используете команду bat.

Команда bat автоматически выведет часть файла, которая охватывает несколько страниц.

Просто нажимайте клавишу Enter и двигайтесь вниз по файлу.

Команда bat также поддерживает интеграцию GIT, поэтому вы можете просматривать / редактировать файлы в своем репозитории Git без особых хлопот.

Bat клон Cat в Linux

Как установить Bat (клон cat) в Linux

В Debian и других дистрибутивах Linux на основе Debian вы можете загрузить последний .deb пакет со страницы выпуска или использовать следующую команду wget, чтобы загрузить и установить его.

В Arch Linux вы можете установить его из репозитория Community, как показано на ниже.

После установки bat просто запустите ее так же, как вы обычно запускаете команду cat, например, следующая команда отобразит указанное содержимое файла с подсветкой синтаксиса.

Просмотр файла с подсветкой синтаксиса

Чтобы отобразить несколько файлов одновременно, используйте следующую команду.


print-a-specified-range-of-lines

list-all-supported-languages-for-syntax-highlighting

Затем явно установите язык для подсветки синтаксиса с помощью -l переключателя.

Установка языка подсветки

Вы также можете прочитать из стандартного ввода, как в этом примере.

Передать вывод в bat

Выбор темы для отображения

Обратите внимание, что эти настройки будут потеряны после перезагрузки, чтобы сделать изменения постоянными, экспортируйте переменную среды BAT_THEME в файл

/.bashrc (для пользователя) или /etc/bash.bashrc (для всей системы), добавив следующую строку в файл.

Чтобы показывать только номера строк без каких-либо других украшений, используйте переключатель -n.

Для получения дополнительной информации о том, как использовать или настроить bat , введите man bat или перейдите в репозиторий Github.

Заключение

Читайте также: