Основные команды Linux: (почти) полное руководство с примерами

1. Во втором варианте применение пайпа изменяет область видимости переменных. В приведённом примере за пределами цикла while переменная var не будет видна, т.к. она выполняется в новом процессе.

Введение в терминал Linux

Моя бабушка называет любой терминал «терминатором», что добавляет антуража. На самом деле терминал (bash) — это всего лишь командная строка с гораздо более широким набором функций, если сравнивать с Windows. Почти любое действие можно выполнить командой из терминала, но далеко не любое действие можно выполнить через окружения пользователя.

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

Статья рассчитана на новичков и написана таким же новичком, в этом нет ничего зазорного — все когда-то начинали с нуля. Любое сообщество существует только до тех пор, пока есть приток новых участников.

Список команд в данной статье не является полным списком команд Linux. Во-первых, команд слишком много, чтобы перечислять их все, во-вторых, новичкам они не нужны, а профессионалы уже помнят их наизусть. Однако, не стоит расстраиваться, если у вас не получается запомнить команды — запоминание приходит с практикой. Чем чаще вы пользуетесь теми или иными командами, тем скорее вы их запомните.

Команды, синтаксис и примеры

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

Пример передачи аргументов в скрипте Bash

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

Читайте также:  Использование консоли Linux для завершения процессов

sh список песен

Доступ к аргументам осуществляется внутри скрипта с использованием переменных $ 1 , $ 2 , $ 3 и т. Д. Переменная $ 1 ссылается на первый аргумент, $ 2 – на второй аргумент, а $ 3 – на третий аргумент. Это иллюстрируется в следующем примере:

FILE1 = $ 1 wc $ FILE1

Для удобства чтения назначьте переменную с описательным именем значению первого аргумента ( $ 1 ), а затем вызовите утилиту подсчета слов (wc) для переменной $ FILE1 ,

Если у вас есть переменное число аргументов, используйте переменную $ @ , которая является массивом всех входных параметров. Это использует цикл for для итеративной обработки каждого из них, как показано в следующем примере:

для FILE1 в «$ @» do wc $ FILE1 сделано

Вот пример того, как вызвать этот скрипт с аргументами из командной строки:

sh songlist1 songlist2 songlist3

Если аргумент имеет пробелы, заключите его в одинарные кавычки. Например:

sh ‘songlist 1’ ‘songlist 2’ ‘songlist 3’

Флаги Метод

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

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

makereport -u jsmith -p notebooks -d 10-20-2011 -f pdf

Bash включает эту функцию с помощью функции getopts. Для приведенного выше примера используйте getopts следующим образом:

, пока getopts u: d: p: f: option do case «$ {option}» in u) USER = $ {OPTARG} ;; < br /> d) DATE = $ {OPTARG} ;; p) PRODUCT = $ {OPTARG} ;; f) FORMAT = $ OPTARG ;; esac выполнено < br />

Это цикл while, который использует функцию getopts и так называемую строку опций – в данном случае u: d: p: f: – для итерации аргументов. Цикл while проходит по строке optstring, которая содержит флаги, используемые для передачи аргументов, и присваивает значение аргумента, предоставленное для этого флага, переменной option . Затем оператор CASE присваивает значение переменной option глобальной переменной, которая используется после прочтения всех аргументов.

Значения для двоеточий

Двоеточие в строке опций означает, что значения необходимы для соответствующих флагов. В приведенном выше примере u: d: p: f: за всеми флагами следует двоеточие. Это означает, что все флаги нуждаются в значении. Если, например, флаги d и f , как ожидается, не будут иметь значения, строкой опций будет u: dp: f .

Двоеточие в начале строки опций (например, : u: d: p: f: ) имеет совершенно другое значение. Он обрабатывает флаги, которые не представлены в строке optstring. В этом случае значение переменной option установлено в ? и значение OPTARG устанавливается на неожиданный флаг. Это отображает подходящее сообщение об ошибке, информирующее вас об ошибке.

Читайте также:  Déjà Dup — идеальное ПО для резервного копирования Linux

Аргументы, которым не предшествует флаг, игнорируются getopts. Если флаги, указанные в строке опций, не предоставляются при вызове скрипта, то ничего не происходит, если вы специально не обработаете этот случай в своем коде. Любые аргументы, не обрабатываемые getops, могут по-прежнему регистрироваться с помощью обычных переменных $ 1 , $ 2 и $ 3 .

Небольшой пример сценария

Ниже приводится пример скрипта, ищущего все файлы журналов в директории /var/log . Если вызов происходит без указания параметров, имена всех журналов записываются в файл , лежащий в домашней директории пользователя. При указании строкового параметра поиск осуществляется по его вхождению в имена файлов. Данный Bash скрипт должен работать одинаково в любом дистрибутиве Linux.

#!/bin/bash if [ -n «$1» ]; then find /var/log -type f -name «*$1*.log» -print > ~/ echo «Осуществлен поиск по фразе «$1″» else find /var/log -type f -name «*.log» -print > ~/ echo «Поиск всех файлов журналов закончен» fi

Создайте в директории /usr/local/bin файл с именем findlog и скопируйте в него, приведенный выше программный код. Файл нужно сделать исполняемым с помощью команды chmod, или нажмите по нему правой кнопкой мыши и зайдите в пункт «свойства». В открывшемся окне выберите закладку «права» и активируйте переключатель «разрешить выполнение файла как программы». После данных операций вы сможете запускать сценарий в терминале с помощью указания его имени.

Sudo findlog «error» Осуществлен поиск по фразе «error» sudo findlog Поиск всех файлов журналов закончен

Файлы и каталоги

Смена текущего каталога

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

pwd # перейти к текущему каталогу cd # сменить текущий каталог на домашний cd /bin # перейти в каталог /bin cd .. # перейти в родительский каталог

Содержимое каталога

Чтобы вывести в каталоге файлы, папки, а также их свойства, не обойтись без команды ls.

ls # вывести список файлов и каталогов в текущем каталоге ls /bin # вывести список файлов и каталогов в /bin ls -l # вывести подробную информацию (размер, дата…) ls -a # показать скрытые файлы и каталоги ls -ld # вывести информацию о текущем каталоге (не файлов) ls my* # вывести файлы с именем, начинающимся на my… tree # показать дерево текущего каталога

Скачать файл из Интернета

Самый простой способ скачать файл с веб-серверов  —  это команда wget.

wget # скачать файл с указанного URL в текущий каталог

Файлы и каталоги

Скачивание файла с помощью wget

Создать каталог

Если вы хотите создать папку, используйте команду mkdir.

Читайте также:  Как быстро вычислить человека по ID ВКонтакте

mkdir movies # создать папку с названием «movies» в текущем каталоге mkdir -p movies/genres/scifi # создать папку с названием «movies», вложенный в «genres», и «scifi»

Копирование, перемещение и удаление

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

rmdir movies # удалить пустой каталог movies rm -rf movies # удалить каталог movies и его файлы rm # удалить файл mv /home/michael/ /home/john/ # переместить файл из /home/michael в /home/john cp /home/michael/ /home/john/ # скопировать файл из /home/michael в /home/john cp -R letters/ memories/ # скопировать содержимое папки «letters» в папку «memories» cp -R letters ~/Desktop # скопировать папку «letters» вставить на рабочий стол

Права доступа и владельцы

Права доступа и владельца файла или каталога можно изменить с помощью команды chmod и chown.

chmod 777 # изменить права файла chmod +x # сделать файл выполняющим chown guille # сменить владельца файла «» на пользователя «guille» ./ # запустить

Поиск файлов

Забыли где файл Хотите вывести все PDF файлы, находящиеся в папке? С помощью команды find вы можете сделать это и многое другое.

find . -name # найти файл с названием «» в текущем каталоге find /home/joe/Downloads -name *.pdf # найти PDF файлы в папке Downloads find / -executable -atime -10 # найти исполняемые файлы в каталоге root, доступ к котором был 10 минут назад find ~ -newer # найти в домашнем каталоге файл, который редактировался после файла «»

Вычисление контрольной суммы SHA256 файла

При скачивании любой программы из Интернета, рекомендуется проверить контрольную сумму SHA, чтобы убедиться, всё ли верно скачалось. И сделать это гораздо легче через терминал:

# Linux sha256sum # вычисление контрольной суммы SHA 256 файла echo -n “foobar” | sha256sum # вычисление контрольной суммы SHA 256 слова “foobar” # macOS shasum -a 256 # вычисление контрольной суммы SHA 256 файла echo -n “foobar” | shasum -a 256 # вычисление контрольной суммы SHA 256 слова “foobar”

Сжатие и распаковка TAR/ZIP файлов

Файлы и каталоги

Неважно, что у вас TAR или ZIP файл, вы можете распаковать его через терминал или же создать из существующих папок:

# Tar / untar tar -cvzf myfolder # сжатие папки «my_folder» в архив «» tar -xvzf # распаковка файла в текущий каталог tar -C /opt/abc -xvzf # распаковка файла в /opt/abc # Zip / unzip zip -r myfolder # сжатие папки «my_folder» в архив «» unzip # распаковка файла в текущий каталог

Свободное место на диске

Хотите узнать доступное место на жестком диске? Или на внешнем? Или в текущем каталоге? В этих вопросах помогает команда df.

df -k . # свободное место в текущем каталоге

df -k # доступное пространство во смонтированных файловых системахсвободное место на моём компьютере