Командная строка является неотъемлемой частью любого дистрибутива Linux. Какие бы оконные оболочки мы не устанавливали, администраторы все-равно большинство задач будут решать через командную строку. Поэтому важно уметь пользоваться этим инструментом.
Данная статья предназначена прежде всего для пользователей и администраторов, перешедших с ОС Windows на Astra Linux. Разработчики Астры постарались сделать оконный интерфейс максимально схожим с Windows, для того, чтобы пользователям было удобнее ориентироваться в нем. А вот командная строка здесь использует классические команды Bash и именно с ними мы и будем разбираться.
Дорога к командной строке
Для начала давайте найдем терминал в ОС Astra Linux 1.8 SE. Здесь и далее будем предполагать, что у той учетной записи, которую вы используете есть права на запуск терминала. В случае, если у вас используется режим киоска, скорее всего таких прав у вас не будет (иначе использование этого режима теряет смысл). Во всех остальных случаях заходим в систему, далее выбираем звездочку в левом нижнем углу экрана. Затем Инструменты и Терминал.
В командной строке мы всегда оказываемся с правами пользователя. Даже если у вас используется учетная запись, созданная при установке ОС и у нее есть права sudo на все команды, все равно здесь мы будем обычным пользователем.
Базовые команды
Для любого пользователя, знакомого с Ubuntu или Debian работа с командами в терминале Астры не составит никакого труда.
На рисунке ниже представлено то как выглядит приглашение, курсор, команда и собственно ее вывод.
Здесь как и в любом другом дистрибутиве при желании внешний вид приглашения можно поменять в файле $HOME/.bashrc, указав новое значение для переменной окружения PS1.
После внесения изменений необходимо заново открыть терминал.
Алиасы
Изменение внешнего вида командной строки задача не самая важная. А вот создание алиасов может существенно упростить выполнение задач администрирования. Поэтому об этом мы поговорим подробнее.
По сути алиасы в Bash это аналоги собственных команд. В простейшем случае алиас может иметь следующий вид:
alias ll='ls -F'
Здесь при выполнении в командной строке ll у нас на экран будет выведен результат выполнения команды ls- F. Удобно, не надо запоминать синтаксис и писать длинную команду.
Для того, чтобы написать свой алиас необходимо открыть в редакторе $HOME/.bashrc, например с помощью nano:
$ nano $HOME/.bashrc
И вписать нужный алиас в формате:
alias имя_алиаса=’выполняемая_команда’
Например
alias la='ls -A'
Однострочная команда в алиасе конечно тоже может быть полезна, но лучше всего их использовать для много строчных команд.
В таком случае формат алиаса уже будет немного другой.
alias имя_алиаса=’(
выполняемая_команда1
выполняемая_команда2
…
)’
Вот пример алиаса который переходит в нужный каталог, с заданного ресурса загружает скрипт для обновления, выставляет ему права на выполнения, выполняет и затем удаляет
alias upd='(
cd "${program_to_update_dir}"
wget "https://somesite/update.sh"
chmod +x update.sh
./update.sh
rm update.sh
)'
Каждая из этих команд будет выполнена последовательно. Возможно при использовании определенных моделей безопасности у вас могут возникнуть сложности с назначением файлу прав на выполнение, но в общем случае подобный алиас вполне можно настроить и в Astra Linux.
Использование скриптов
Алиасы можно использовать совместно со скриптами, просто вызывая нужный скрипт с помощью алиаса. В таком случае для запуска скрипта вам не нужно будет указывать полный путь, достаточно будет просто вызвать нужный алиас.
Однако скрипты это тоже очень важный инструмент, который использует любой администратор. Сценарий в Bash должен начинаться с символа !# после которого идет указание местоположения исполняемого файла командного интерпретатора, возможно с параметрами. В случае, если этой строки не будет в файле скрипта, будет использоваться интерпретатор по умолчанию.
Также символ # используется для комментирования строк. Все что идет после этого символа до конца строки считается комментарием и не обрабатывается интерпретатором.
Переменные в скриптах это именованное значение, содержащее информацию, хранящуюся в оперативной памяти. Есть предопределенные интерпретатором переменные (PATH,PWD, USER, HOME…) и определенные пользователем. Когда мы первый раз указываем переменную, ее имя указывается без знака $, при последующих обращениях этот знак должен присутствовать.
Например:
a=0
echo $a
Скрипт может представлять из себя обычную последовательность команд, однако возможны ситуации когда в скрипте выполняется цикл, и также присутствуют определенные условия.
Начнем с циклов. Если мы хотим перебрать определенный набор элементов, то можно использовать такой цикл:
for переменная in список
do
команда1
команда2
done
В примере ниже мы будем последовательно выводить на экран цифры от 1 до 5.
!/bin/bash
for number in 1 2 3 4 5
do
echo $number
done
exit 0
Другой вариант использования циклов это счетчики. В примере ниже мы последовательно увеличиваем значение $i и выводим его на экран.
Обратите внимание, что в обоих примерах скриптов у нас последней строкой идет exit 0. Тем самым мы явно указываем статус завершения нашего скрипта. Статус равен нулю – успешное выполнение, любое другое значение – скрипт завершился с ошибками. Здесь Астра обработает эти статусы точно также как и любой другой дистрибутив Linux.
Еще один важный элемент любого скрипта это условия. Здесь все просто, с помощью команды if мы можем проверить истинность того, или иного условия.
Синтаксис этой команды довольно простой:
if условие
then
Команды если истина
else
Команды если ложь
fi
Вот пример небольшого скрипта:
Кроме if для проверки условий мы можем использовать также оператор case.
case слово in
Шаблон_1)
Команды 1;;
Шаблон_2)
Команды_2;;
…
*)
Команда_по_умолчанию
esac
Оператор case позволяет удобнее чем if описать операции множественного выбора. Если не один из шаблонов не совпал, то выполняется блок по условию *).
В завершении рассмотрим еще циклы с условиями while и until. Цикл while в Bash позволяет многократно выполнять блок кода до тех пор, пока определённое условие остаётся истинным.
while [ условие ]
do
команда1
команда2
команда3
done
В случае с until все наоборот, цикл будет выполняться пока условие неверно.
until [ условие ]
do
команда1
команда2
done
Также в циклах while и until можно использовать команды break и continue для выхода из цикла и завершения текущего прохода.
Заключение
На этом мы можем завершить рассмотрение базовых элементов работы в терминале Astra Linux. Напомню, что командная строка в этой ОС позволяет выполнять те же команды и скрипты, что и интерпретатор в других дистрибутивах Linux.
Статья подготовлена в преддверии старта курса «Расширенное администрирование Astra Linux». На странице курса вы сможете посмотреть записи прошедших вебинаров, а на будущие бесплатные вебинары можно зарегистрироваться в календаре мероприятий.
Комментарии (26)
onix74
07.11.2024 13:26Для того, чтобы написать свой алиас необходимо открыть в редакторе $HOME/.bashrc, например с помощью nano:
А $HOME/.bash_aliases чем не устраивает?
nochkin
07.11.2024 13:26Для этого надо, что бы в .bashrc было что-то типа ". ~/.bash_aliases". Возможно, в Астре этого нет, но я не проверял.
Wolfen113
07.11.2024 13:26Я кстати недавно алиасы в отдельный файл вынесла. Который вовсе находится на другом диске и в папке что в облако выгружается. Ну а в bashrc прописала на него ссылаться. Удобно. И баш рк не засорен. И легко использовать набор алиасов новых системах. Годами даже не знала о такой возможности ибо линуксом пользуюсь как обычный пользователь что поставил его дабы просто комп работал, программы и игры ставились. И в консоль почти не заглядывая без острой нужды. Соответственно как обычный потребитель пк во всякие технические дебри не лезу.
nochkin
07.11.2024 13:26Если консоль особо не нужна, то и алиасы тоже идут лесом. Вполне нормальный подход, так как цели разные. У меня, например, Linux -- это только консоль.
Wolfen113
07.11.2024 13:26Ну я стабильно консоль использую лишь для установки, удаления, обновления прог и системы. Чистки кеша пакетов и сирот, да некоторых мелочей. И мне проще это через консоль итпакетный менеджер yay делать, в что бы каждый раз целиком команды не вводить превратить в пару букв алиасами. Тем более я команды плохо запоминаю. А на арч линус решая всякие задачи и проблемы они могут пригодиться чаще чем графика, ибо так проще и быстрее.
Поэтому по разным ситуациям у меня накопилась за 7 лет куча алиасов и просто команд. Раньше это все было в беспорядке где я когда они мне были нужны каждый раз открывала блокнот с шпаргалками куда их записывала, и оттуда капипастила в терминал клманды. А недавно решила это все более удобно для себя оформить. Поэтому вынесла алиасы в отдельный лист текстовый файл. И просто подцепила к башрк. Чуть ниже я показывала другому комментатору как.
Так же массу накопленных за жизнь команд тоже оформила в лист с пояснениями через решетку. Подцепила fzf для удобного быстрого поиска. И так же как и алиасы подцепила к башрк. Даже баш-историю файл через скрипт изменила, что бы тот работал не как история с повторяющимися командами а как лист запоминающий некогда введенные команды. И при этом удаляющий дубликаты, ибо я его тоже через fzf поиск серфю когда надо быстро команду что на изучать не помню ввести, а повторы как визуальный шум напрягают. Как говорится дело было вечером, делать было нечего. )
Innvisible
07.11.2024 13:26.bash_aliases - работает в убунтуподобных ос. (может еще в каких?)
На моей EndeavourOS (arch based) - оно не работает.
Все прописываем именно в .bashrcWolfen113
07.11.2024 13:26Можно сделать так что прописать алиасы в в текстовый файл и под любым именем. И подцепить его к .bashrc, прописав там в виде мини скрипта путь к тому файлу.
Однажды мне стрельнуло в голову что в .bashrc накопилась куча алиасов от чего он слишком засоренным выглядит. Поэтому я обратилась за помощью к чат гпт что бы он мне помог порядок навести. И не только по этому поводу. В итоге получилось так.Пример
Подключение Alias
if [ -f /mnt/Lisa/Dropbox/Lin/Scripts/Bashrc/ALias/aliases.txt ]; then
source /mnt/Lisa/Dropbox/Lin/Scripts/Bashrc/ALias/aliases.txt
fi
Vitaly83vvp
07.11.2024 13:26А чем работа в командной строке Astra отличается от работы с командной строкой в других дистрибутивах семейства Linux?
Заголовок как бы намекает, что тут должно быть что-то новое. Хотя, что может быть нового в командной строке? Это просто экран, где вызываются команды (если упрощённо).
AdrianoVisoccini
07.11.2024 13:26в других дистрибутивах линукс вы работаете с небольшим отвращением ко всему инородному
в астре работаете с гордостью за отчизну
знать нужно такие вещи, пока на карандаш вас берем, дальше посмотрим
OneMaxBeatz
07.11.2024 13:26А причем тут отечественное? Это написано на иностранных яп, и еще ядро и все остальное
sdramare
07.11.2024 13:26Нужно ли при работе в терминале астры переодически произносить "гойда" в микрофон?
r2d
07.11.2024 13:26В Astra Linux наши "умельцы" все перепилили на fly и если ты умеешь в линукс то в астре ты ничего не умеешь, еще и справка платная
geher
07.11.2024 13:26Не люблю я Астру, но там все не настолько страшно.
Fly - это у него только морда лица. Принципиальных отличий от большинства таких морд в разных ОС и дистрибутивах линукса нет - то же самое меню "Пуск" с панелью задач и треем, только вид немного сбоку. В остальном - обычный Дебиан с прикрученной мандатной системой доступа собственного разлива (с некоторыми существенными особенностями в реализации).
Testman2023
07.11.2024 13:26Здесь как и в любом другом дистрибутиве при желании внешний вид приглашения можно поменять в файле $HOME/.bashrc, указав новое значение для переменной окружения PS1.
После внесения изменений необходимо заново открыть терминал.Шедеврально для курсов.
source ~/.bashrc . ~/.bashrc
How to reload .bashrc settings without logging out and back in again?
nochkin
07.11.2024 13:26Это тоже не совсем чисто, так как есть варианты типа "export PATH=$PATH:/opt" и такого плана (кстати, об этом даже написано если кликнуть на линк в комменте). Уж лучше запустить новую сессию командой "bash".
lrdprdx
07.11.2024 13:26В контексте задачи изменения промпта ---
source
кажется более удобным. Посмотреть на результат сразу. Не говоря уже о том, что$PATH
не в.bashrc
определяется.nochkin
07.11.2024 13:26Если посмотреть на результат сразу, то вариант. Пусть можно и просто "export" сделать. Но для меня всё же "bash" быстрее всего остального. Может, это просто у меня так. Принимаю такой вариант.
Про PATH был как вариант. Мало ли чего там ещё будет прописано таким образом. Особенно когда там что-то появляется исторически и живёт как тень от старого проекта. Хмм.. пойти что ли свой .bashrc почистить. А это -- мысль.
lrdprdx
07.11.2024 13:26А, не так понял предложенную альтернативу --- подумал, что имеется в виду новый терминал. Пардон, оступился.
UPD. Но так каждый раз множить инстансы после каждого изменения --- тоже не совсем чисто ИМХО.
skonik2m
07.11.2024 13:26Я бы попробовал, но эти жлобы не дают свои дистрибутивы. Только устаревший CE. Тестировали свою инфраструктуру на РедОС, т.к. она есть в наличии. На неё наверное и переходить будем.
anonymous
НЛО прилетело и опубликовало эту надпись здесь