• Добро пожаловать на сайт - wlux.net!

    FAQ по форуму

    1. Все сообщения до группы местный проходят модерацию от 1 минуты до 24 часа

    2. Сообщения учитываються в следующих разделах: Читать

    3.Что-бы скачать вложение нужно 2 сообщения.

    4.Личные переписки работают только с Администрацией форума

    5. Запрещено: Просить скрытый текст , спам, реклама, скам, ддос, кардинг и другая чернуха, нарушать любые законы РФ/СНГ = бан аккаунта

    6. Внимание! Мы не удаляем аккаунты с форума! Будьте внимательны ДО регистрации! Как удалить аккаунт на форуме?!

    5.Не понимаю, как и что тут работает у вас?!Как создавать темы, писать сообщения, как получать реакции. Почему не засчитывает сообщения. Все ответы здесь

This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Гайд Основные команды BASH в Linux

Оффлайн

daddjdjdcdsa

Местный
Участник
LV
4
 
13.02.2023
56
5
28
Награды
6
Пол
Муж.

Репутация:

  • Автор темы
  • #1
Bash (от англ. Bourne again shell, каламбур «Born again» shell — «возрождённый» shell) — усовершенствованная и модернизированная вариация командной оболочки Bourne shell. Это стандартная командная оболочка в большинстве дистрибутивов Linux и macOS, а также язык для этой оболочки. Тип языка - командная оболочка UNIX, Автор Брайан Фокс (Brian Fox), Разработчик - Чет Рамей (Chet Ramey), Написана на - Си, Операционная система - UNIX-подобные, Языки интерфейса - Английский, многоязычный (gettext), Первый выпуск - 8 июня 1989, Аппаратная платформа x86_64 и i686.
Язык Bash поддерживает переменные, массивы, циклы, функции, условные и арифметические операторы, операции ввода-вывода и другие средства. Но главная его фишка — возможность создавать скрипты для ускорения работы на компьютере и автоматизации рутины. Например, с их помощью можно:
  • быстро переименовывать все файлы в папке;
  • генерировать случайные пароли;
  • создавать и отправлять отчёты по электронной почте;
  • проверять и обновлять систему и приложения;
  • одной командой очищать кэш браузера.
Основы Bash: синтаксис, переменные и команды
Переменные в Bash объявляются просто:

message="Hello, World!"

Теперь переменная message хранит значение — текстовое сообщение «Hello, World!». Давайте выведем его — сделать это можно с помощью команды echo:

echo $message # Будет выведено «Hello, World!»

Обратите внимание на отсутствие пробелов. В Bash пробелы являются разделителями. Если пробелы есть, то Bash будет считать их отдельными токенами и выдавать ошибки.

Следующий код приведёт к ошибке:

message = "Hello, World!"
bash: message: command not found


Также обратите внимание на символ $ — в Bash он называется символом расширения (expansion character). Поставленный перед именем переменной, он указывает на то, что нужно использовать именно значение переменной, а не одноимённую строку.

Следующий код выведет сообщение «message»:

message="Hello, World!"
echo message

Чтобы сохранить в переменной введённое пользователем значение, используйте команду read:

read name

# Например пользователь вводит, «banan»
echo $name # Будет выведено «banan»

Если вы хотите добавить сообщение перед пользовательским вводом, добавьте флаг -p и сообщение после команды read:

read -p "Enter name of fruit: " name # Будет выведено «Enter name of fruit: »
# Например пользователь вводит, «banan»
echo $name # Будет выведено «banan»

В Bash есть несколько правил именования переменных:

  • Имя переменной должно начинаться с буквы латинского алфавита (нижнего или верхнего регистра) или символа подчёркивания _.
  • Оно может включать буквы, цифры и символ подчёркивания, но не может содержать пробелы или специальные символы.
  • Регистр букв в именах переменных имеет значение. Например, переменные var1 и Var1 будут рассматриваться как разные.
  • Не рекомендуется использовать зарезервированные слова Bash в качестве имён переменных.

Типы данных
Ну что же, вот мы и создали нашу первую переменную. Поздравляем! Пока эта переменная содержит всего один тип данных — строковый (string). Но в Bash он далеко не единственный. Так же в Bash нет строгой системы типов, как в некоторых других языках. Тип данных зависит от содержимого переменной и контекста её использования. Поэтому термин «типы данных» в этой статье используется условно, для облегчения понимания. Простите нам это упрощение.

Строки (strings) — это набор символов, заключённый в кавычки. В Bash можно писать строки в одинарных '…' или двойных "…" кавычках. Например, 'Мир' и "Труд" — это строки.

Числа (numbers) — это целочисленные значения. Bash поддерживает арифметические операции с целыми числами, включая сложение, вычитание, умножение и деление. Арифметические выражения нужно предварять знаком $ и обрамлять двойными круглыми скобками:

a=7 b=6
echo $(($b + $a)) # [/COLOR][B][I][COLOR=rgb(65, 168, 95)]Будет выведено 13[/I][/B]

Также можно использовать команду expr:

echo $(expr $a + $b) [/COLOR][B][I][COLOR=rgb(65, 168, 95)]# [/COLOR][B][I][COLOR=rgb(65, 168, 95)]Будет выведено 13[/I][/B][/I][/B]

Стандартные библиотеки Bash поддерживают следующие арифметические операции:
  • Сложение — +.
  • Вычитание — -.
  • Умножение — *.
  • Целочисленное деление — /.
  • Остаток от деления — %.
  • Возведение в степень — **.
Арифметические операторы в Bash не работают с числами с плавающей точкой.

Массивы (arrays) — тип переменных, который может хранить несколько значений. Элементы массива перечисляются в круглых скобках через пробел:

my_array=(apple banana cherry)

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

echo ${my_array[0]} # Выведет «apple»
echo ${my_array[1]} # Выведет «banana»
echo ${my_array[2]} # Выведет «cherry»

А если нам нужно получить сразу все элементы массива, вместо индекса в квадратных скобках нужно поставить символ * или @:

echo ${my_array[*]} # Выведет «apple banana cherry»
echo ${my_array[@]} # Выведет «apple banana cherry»

Логические значения (boolean)
— нужны для того, чтобы проверить, выполняется ли какое-то условие или нет. Они могут быть либо true (истина), либо false (ложь). Например, в операторах if и while мы пишем условие, и если оно true, то выполняем какое-то действие.

В Bash логические значения представлены целыми числами. Число 0 означает false, а любое другое число означает true. Когда мы выводим логическое значение на экран, то вместо true мы видим 1.

Также в Bash есть операторы сравнения. Например, эти нужны для строк:

  • = проверяет, одинаковы ли две строки.
  • != проверяет, различаются ли две строки.
А эти — для чисел:
  • -eq проверяет, равны ли два числа.
  • -ne проверяет, различаются ли два числа.
  • -gt проверяет, больше ли первое число, чем второе.
  • -lt проверяет, меньше ли первое число, чем второе.
  • -ge выводит true, если первое число больше или равно второму.
  • -le выводит true, если первое число меньше или равно второму.
Использовать операторы сравнения можно с помощью команды test или квадратных скобок [ ]. Команда test принимает два значения и оператор сравнения и возвращает 1 или 0 в зависимости от результата:

test "hello" = "hello"
echo $?
# Выведет 1 (true), так как строки одинаковые
test "hello" != "world"
echo $?

# Выведет 1 (true), так как строки различаются

Квадратные скобки делают то же самое, но выглядят более наглядно:

echo $[ 3 -lt 5 ]
# true (будет выведено 1), так как первое число меньше второго
echo $[ 3 -gt 5 ]

# false (будет выведено 0), так как первое число НЕ больше второго

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

Ветвления

Ветвления if-then-else позволяют проверить условие и выполнить один набор команд, если условие истинно, и другой набор команд, если условие ложно. Это выглядит так:

if [ условие ];
then
# Команды, которые нужно выполнить, если условие истинно
else
# Команды, которые нужно выполнить, если условие ложно

fi

А если в паре с основным условием нужно проверить дополнительное, используют конструкцию elif:

if [ условие_1 ];
then
# Команды, которые нужно выполнить, если условие_1 истинно
elif [ условие_2 ];
then
# Команды, которые нужно выполнить, если условие_2 истинно
else
# Команды, которые нужно выполнить, если все условия ложны

fi

Существует и более короткая форма записи условной конструкции — if-then. Её используют, когда нужно проверить только одно условие:

if [ условие ];
then
# Команды, которые нужно выполнить

fi

В этом случае команды будут выполнены, только если условие истинно.

Для наглядности давайте напишем скрипт, который проверяет правильность введённого пароля:

#!/bin/bash
# Задаём значение переменной password
password="1fggdtRU12"

# Запрашиваем ввод пароля у пользователя и сохраняем полученное значение в переменную user_input
read -p "Enter the password: " user_input

# Сравниваем значение переменной password с введённым пользователем значением user_input
if [ "$password" = "$user_input" ]; then
# Если пароли совпадают, выводим сообщение о том, что пароль введён правильно
echo "Password accepted"
else
# Если пароли не совпадают, выводим сообщение о том, что пароль введён неправильно
echo "Wrong password"

fi

Кроме того, в Bash есть логические операторы & & (логическое И) и || (логическое ИЛИ), которые позволяют комбинировать несколько условий и возвращать соответствующее булево значение.

#!/bin/bash

username="bananopower23" # Устанавливаем переменную с именем пользователя
password="[I][B]1fggdtRU12[/B][/I]"

read -p "Enter your username: " user_input_username # Запрашиваем имя пользователя
read -p "Enter the password: " user_input_username # Запрашиваем пароль

echo "Enter the password: "
read user_input_password # Запрашиваем пароль

if [ "$username" == "$user_input_username" ] && [ "$password" == "$user_input_password" ]; then
echo "Password accepted"
else
echo "Wrong username or password" # Уточняем, что именно было неверно

fi

Здесь мы получим значение true и сообщение «Password accepted», только если будут выполнены оба условия.

Циклы
Как и в большинстве языков программирования, в Bash есть циклы. Они бывают двух видов:
  • for — когда количество итераций заранее известно.
  • while — когда количество итераций заранее не известно.
Вот как выглядит сигнатура цикла for:

for переменная цикла in элемент1 элемент2 ... элементN
do
# Команды, которые будут выполняться в цикле

done

Количество итераций (часть между in и do) можно указать простым перечислением элементов:

for fruit in apple banana cherry
do
echo "I like $fruit"
done

# Будет выведено:
# I like apple
# I like banana

# I like cherry

Можно перебрать элементы массива:

my_array=("apple" "banana" "orange")

for fruit in "${my_array[@]}"
do
echo "I like $fruit"
done

# Будет выведено:
# I like apple
# I like banana

# I like cherry

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

for ((i=0; i<5; i++))
do
echo "Iteration number $i"
done
# Будет выведено:
# Iteration number 0
# Iteration number 1
# Iteration number 2
# Iteration number 3

# Iteration number 4

А вот так выглядит сигнатура цикла while:

while [ условие ]
do
# Команды, которые будут выполняться в цикле

done

Условие (condition) — это выражение, результат которого является логическим значением true или false. Команды внутри цикла будут выполняться до тех пор, пока condition возвращает true.

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

#!/bin/bash

password="[I][B][I][B]1fggdtRU12[/B][/I][/B][/I]"
user_input=""

while [ "$user_input" != "$password" ]
do
read -p "Enter the password: " user_input
echo "Wrong password, login denied"
done

echo "Password accepted, login allowed"

Что здесь происходит.
В этом примере цикл while запрашивает пароль у пользователя, а потом проверяет его на совпадение с правильным с помощью оператора ["$user_input" != "$password"]. А дальше происходит следующее:

  • Если пароль неверный, программа выводит соответствующее сообщение, а цикл продолжается.
  • Если пароль верный, программа выводит сообщение о принятии пароля и завершает выполнение.
Функции
Функции на языке Bash имеют такой вид:

имя_функции (аргументы) {
# Тело функции
}

Например, вот как выглядит простая функция без аргументов:

say_hello () { # Создаём функцию

echo hello
}

say_hello # Вызываем функцию, будет выведено «hello»

А вот как выглядит функция, которая принимает аргументы:

repeat_text () {
local text=$1
local reps=$2

for (( i=0; i<$reps; i++ )); do
echo "$text"
done
}

repeat_text "hello" 3

Что здесь происходит:
  • С помощью ключевого слова local мы создали две локальные переменные — то есть переменные, существующие только внутри функции.
  • В одну из них поместили текст, а во вторую — количество повторов.
  • Затем создали цикл, который берёт текст из первой переменной и повторяет его столько раз, сколько раз указано во второй.
  • Вызвали функцию, передав ей значения hello и 3 — то есть приказали повторить слово «hello» три раза.

Аргументы:

$$pid текущего shell (самого процесса-сценария)
$!pid последнего процесса в фоновом режиме
$?код возврата последнего процесса (функции или скрипта)
$xгде x — номер параметра, переданного скрипту ($1, $2 и т. д., $0 — последний запущенный скрипт)
$#количество аргументов командной строки
$*все аргументы в виде одной строки (слова)
$@то же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово)
$-список флагов, переданных сценарию
$_содержит последний аргумент предыдущей команды

Встроенные переменные:
$BASHпуть к исполняемому файлу bash
$BASHPIDPID текущего bash * (см. Примечание)
$BASH_VERSINFO[n]массив, состоящий из 6 элементов, содержащий информацию о версии bash
$BASH_VERSIONверсия Bash, установленного в системе
$DIRSTACKсодержимое вершины стека каталогов
$EDITORзаданный по умолчанию редактор
$EUID«эффективный» идентификационный номер пользователя (Effective User ID)
$FUNCNAMEимя текущей функции
$GLOBIGNOREперечень шаблонных символов, которые будут проигнорированы при выполнении подстановки имён файлов (globbing)
$GROUPSгруппы, к которым принадлежит текущий пользователь
$HOMEдомашний каталог пользователя
$HOSTNAMEсетевое имя хоста
$HOSTTYPEтип машины (идентифицирует аппаратную архитектуру)
$IFSразделитель полей во вводимой строке
$LC_COLLATEзадаёт порядок сортировки символов, в операциях подстановки имён файлов и в поиске по шаблону
$LC_CTYPEопределяет кодировку символов
$LINENOНомер строки исполняемого сценария
$MACHTYPEаппаратная архитектура
$OLDPWDпрежний рабочий каталог
$OSTYPEтип операционной системы
$PATHпуть поиска (включает в себя каталоги /usr/bin/, /usr/X11R6/bin/, /usr/local/bin и т. д.)
$PIPESTATUSКод возврата канала (конвейера)
$PPIDPID (идентификатор) родительского процесса
$PS1приглашение командной строки
$PS2вторичное приглашение командной строки, выводится тогда, когда от пользователя ожидается дополнительный ввод. Обычно отображается как «>»
$PS3третичное приглашение, выводится, когда пользователь должен сделать выбор в операторе select
$PS4приглашение четвёртого уровня, выводится (в изменённом виде) в начале каждой строки отладочного вывода тогда, когда сценарий вызывается с ключом -x. Обычно отображается как «+», «++» и т. д.
$PWDрабочий (текущий) каталог
$REPLYпеременная по умолчанию, куда записывается ввод пользователя, выполненный с помощью команды read
$SECONDSвремя работы сценария (в секундах)
$SHELLOPTSсписок допустимых опций интерпретатора (доступна только для чтения)
$SHLVLуровень вложенности shell


Список горячих клавиш:

  • Tab ↹: Автодополнение строки за курсором.
  • Ctrl+! Ctrl+!: Повторить последнюю команду.
  • Ctrl+a: Перемещает курсор в начало строки (эквивалентно клавише Home).
  • Ctrl+b: Перемещает курсор на один символ назад (эквивалентно клавише ←).
  • Ctrl+r: Поиск по набранным ранее командам.
  • Ctrl+c: Посылает сигнал SIGINT текущему заданию, который обычно (но не всегда) прекращает и закрывает его.
  • Ctrl+d: Посылает маркер EOF, который (если не отключено опцией и текущая строка не содержит текста) закрывает текущую оболочку (эквивалентно команде exit), при вводе в исполняющуюся программу завершает ввод, если в строке нет текста, иначе завершает строку без символа завершения строки.
  • Ctrl+d: Удаляет текущий символ (только если есть текст на текущей строке) (эквивалентно клавише Delete).
  • Ctrl+e: Перемещает курсор в конец строки (эквивалентно клавише End).
  • Ctrl+f: Перемещает курсор на один символ вперёд (эквивалентно клавише →).
  • Ctrl+h: Удаляет предыдущий символ (то же самое, что и клавиша ← Backspace).
  • Ctrl+i: Эквивалентно клавише Tab ↹.
  • Ctrl+j: Эквивалентно клавише ↵ Enter.
  • Ctrl+k: Очищает содержимое строки после курсора и копирует это в буфер обмена экземпляра bash (kill ring).
  • Ctrl+l: Очищает содержимое экрана (эквивалентно команде clear).
  • Ctrl+m: Эквивалентно клавише ↵ Enter.
  • Ctrl+n: (следующее) перелистывает к следующей команде (эквивалентно клавише ↓).
  • Ctrl+o: Выполняет найденную команду в истории, и выбирает следующую строку относительно текущей строки в истории для того, чтобы отредактировать.
  • Ctrl+p: (предыдущее) перелистывает к предшествующей команде (эквивалентно клавише ↑).
  • Ctrl+q: Возобновить вывод процесса.
  • Ctrl+s: Приостановить вывод процесса (stop).
  • Ctrl+t: Обмен местами соседних символов.
  • Ctrl+u: Очищает содержание строки до курсора и копирует его в буфер обмена экземпляра bash (kill ring).
  • Ctrl+w: Убирает слово до курсора и копирует его в буфер обмена экземпляра bash (kill ring).
  • Ctrl+y: добавляет содержимое буфера обмена экземпляра bash от позиции курсора.
  • Ctrl+z: Посылает сигнал SIGTSTP текущему заданию, который приостанавливает его выполнение, и возобновляет приём команд. Для возобновления его выполнения в фоновом режиме можно ввести команду bg. Для того, чтобы вернуть его из фонового режима или приостановки, можно выполнить fg.
  • Ctrl+/: Прервать текущий процесс с дампом памяти (core dump), послав ему сигнал.
  • Ctrl+_ (Ctrl+⇧ Shift+-): Откат редактирования.
  • Alt+>: переход к последней команде в истории.
  • Alt+b: (назад) перемещает курсор назад на одно слово (эквивалентно клавише Ctrl+←).
  • Alt+d: Сокращает слово после курсора.
  • Alt+f: (вперёд) перемещает курсор вперёд на одно слово (эквивалентно клавише Ctrl+→).
  • Alt+t: Меняет два слова перед курсором местами.
  • Alt+.: Добавляет последний аргумент предыдущей команды.
  • Alt+c: Заменить букву под курсором на заглавную.
  • Alt+l: Заменить букву под курсором на строчную.
  • Ctrl+x Ctrl+x: Переносит курсор к началу строки от текущей позиции, и обратно.
  • Ctrl+x Ctrl+e: Редактирует текущую строку в программе $EDITOR, или vi, если не предопределено.
  • Ctrl+x Ctrl+v: Вывод на экран информации о версии текущего экземпляра bash.
На этом ознакомительная статься про Bash закончена, дальше пробуйте писать скрипты под задачи которые вам нужно автоматизировать.
Спасибо за прочтение и удачи)
 
Оффлайн

daddjdjdcdsa

Местный
Участник
LV
4
 
13.02.2023
56
5
28
Награды
6
Пол
Муж.

Репутация:

Внутренние команды bash

Интерпретатор bash имеет множество встроенных команд, часть из которых имеет аналогичные исполняемые файлы в операционной системе. Однако следует обратить внимание, что чаще всего для встроенных команд отсутствуют man-страницы, а при попытке просмотра справки по встроенной команде на самом деле будет выдаваться справка по исполняемому файлу. Исполняемый файл и встроенная команда могут различаться параметрами. Информация по встроенным командам расписана в справочной странице bash: man bash

Ввод-вывод

echoвыводит выражение или содержимое переменной (stdout), но имеет ограничения в использовании

Пожалуйста, войдите или зерегистрируйтесь, чтобы увидеть скрытый текст.

printfкоманда форматированного вывода, расширенный вариант команды echo
read«читает» значение переменной со стандартного ввода (stdin), в интерактивном режиме это клавиатура

Файловая система

cdизменяет текущий каталог
pwdвыводит название текущего рабочего каталога (от англ. print working directory)
pushdизменяет текущий каталог с возможностью возврата в обратном порядке
popdвозвращает текущий каталог после pushd
dirsвыводит или очищает содержимое стека каталогов, сохранённых через pushd

Действия над переменными

letпроизводит арифметические операции над переменными
evalтранслирует список аргументов из списка в команды
setизменяет значения внутренних переменных скрипта
unsetудаляет переменную
exportэкспортирует переменную, делая её доступной дочерним процессам
declare, typesetзадают и/или накладывают ограничения на переменные
getoptsиспользуется для разбора аргументов, передаваемых скрипту из командной строки

Управление сценарием

source, . (точка)запуск указанного сценария
exitбезусловное завершение работы сценария
execзаменяет текущий процесс новым, запускаемым командой exec
shoptпозволяет изменять ключи (опции) оболочки «на лету»


Команды
trueвозвращает код завершения ноль (успешное завершение)
falseвозвращает код завершения, который свидетельствует о неудаче
type progвыводит полный путь к prog
hash progзапоминает путь к prog
help COMMANDвыводит краткую справку по использованию внутренней команды COMMAND

Управление запущенными в командной оболочке задачами

jobsпоказывает список запущенных в командной оболочке задач либо информацию о конкретной задаче по её номеру
fgпереключает поток ввода на текущую задачу (или на определённую задачу, если указан её номер) и продолжает её исполнение
bgпродолжает исполнение текущей приостановленной задачи (или определённых задач, если указаны их номера) в фоновом режиме
waitожидает завершения указанных задач
 
S Оффлайн

Slash

Участник
LV
0
 
26.05.2023
2
0
0
24

Репутация:

Обширная тема. Спасибо за инфу.
 
L Оффлайн

LightKnight

Участник
LV
3
 
28.05.2023
10
0
25
Награды
3
27

Репутация:

Пригодится для написания скриптов, но не для работы с файловой системой
 
Q Оффлайн

qergh

Участник
LV
0
 
30.05.2023
10
0
2
23

Репутация:

Достаточно всеобъемлющая статейка.. понравилась
 
L Оффлайн

LaKeRoK

Участник
LV
0
 
05.06.2023
5
0
0
19

Репутация:

Великолепный и ы меру полный гайд, объясняющий базовые действия в командной строке
 
D Оффлайн

Dark Rays

Местный
Участник
LV
2
 
01.11.2023
36
0
30
Награды
3

Репутация:

Кое что узнал новое, что уже полезно
 
A Оффлайн

akihabara

Участник
LV
3
 
23.10.2023
26
0
25
Награды
4
21

Репутация:

Огромное спасибо, очень помогло!
 
D Оффлайн

dant13

Участник
LV
3
 
02.12.2023
7
0
24
Награды
3
34

Репутация:

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

gggggperr

Участник
LV
2
 
12.12.2023
7
0
25
Награды
2
36

Репутация:

Никогда не думал,что идя за сливами, найду гайд для вуза. Спасибо, помогли с лабой
 
Оффлайн

Web

Freedom
Местный
Участник
LV
4
 
11.06.2023
63
0
36
Награды
6

Репутация:

Очень насыщенная статья, сам сейчас изучаю unix машины.
 
D Оффлайн

dudevitelo

Местный
Участник
LV
2
 
18.01.2024
55
0
35
Награды
4
34

Репутация:

Для чего-то слодного лучше питон использовать, проще разобраться, чем ковыряться в башевской лапше
 
A Оффлайн

andymyles

Участник
LV
2
 
21.01.2024
1
0
24
Награды
2
25

Репутация:

А у скриптов zsh есть отличия в синтаксисе?
 
D Оффлайн

dvp

Местный
Участник
LV
3
 
01.02.2024
75
0
33
Награды
5

Репутация:

Хороший гайд. Будет полезно для тех, кто только начинает изучать Linux.
 
N Оффлайн

Nikolai751

Участник
LV
0
 
08.05.2024
1
0
6
41

Репутация:

Согласен.
Бэш -- это просто запускалка программ + возможность сцепить ряд программ в конвейер.
Что-то посложнее он уже не тянет.
 
Оффлайн

windows888882

Местный
Участник
LV
2
 
10.05.2024
53
0
23
Награды
3
32

Репутация:

спасибо за гайд, все пригодилось
 
G Оффлайн

gagaga1313

Участник
LV
2
 
27.04.2024
15
0
25
Награды
2
24

Репутация:

это база, спасибо за структурированность
 

Поиск по форуму

Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше....