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

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

    Группа в телеграме (подпишитесь, что бы не потерять нас) - ForumTeam Chat [Подписатся]
    Связь с администратором - @ftmadmin

Азы работы в командной строке Linux [Часть 1-2]

Redman

<FORUMTEAM>
Команда форума
Регистрация
13.11.17
Надеюсь, абсолютным новичкам, которых пугают консольные команды, она поможет «влиться» в число умеющих использовать командную строку Linux.


Командная строка Linux
В зависимости от вашего Linux, ярлык для открытия консоли может быть вынесен на рабочий стол,

01-3.jpg
добавлен в избранные команды,
03-5.jpg
доступен в контекстном меню при клике правой кнопкой мыши в области рабочего стола.
02-3.jpg
Либо вы для вызова эмулятора терминала вы можете воспользоваться сочетанием клавиш CTRL + ALT + t.

В приглашении командной строки отображается имя пользователя и имя хоста. Перед областью ввода команд может быть символ решётки (#) или символ доллара ($). Символ доллара означает, что вы работаете под обычным пользователем, а символ решётки – что под суперпользователем (root).

На скриншоте видно, что я открыл консоль как обычный пользователь (символ $), а затем вошёл как root (символ сменился на #).
babecf72a290671105877.png

В некоторых инструкциях перед командами пишут $ или # и новички, пытаясь выполнить команды копированием-вставкой, получают разнообразные ошибки. Если перед командной вы видите $ или #, то их не нужно печатать – они написаны только для информирования вас о том, нужны ли дополнительные привилегии для выполнения данной команды.
  • TAB для автодополнения
При вводе команды или имени файла, обязательно используйте клавишу TAB – она автоматически допишет до вас команду или имя файла. Если при нажатии на TAB ничего не происходит, то быстро нажмите TAB два раза, чтобы увидеть все доступные варианты.
  • ENTER для запуска выполнения команд
Набрав команду, нажмите ENTER и после этого она запустится.
  • CTRL + c для прерывания выполнения программы
Если вы хотите оборвать выполнение команды, то используйте для этого сочетание клавиш CTRL + c. Если вы ввели команду, но передумали её запускать, то вместо удаления строки, можете также нажать CTRL + c.
  • ↑ (курсорная клавиша вверх) для просмотра истории команд
Если вы хотите повторить выполнение команды, то клавишами и вы можете пролистать историю ранее введённых команд, выбрать любую из них для повторного выполнения, отредактировать перед запуском.


Азы файловой системы Linux
Если нужно прочитать какие-то данные или сохранить информацию в файл из консоли, нужно уметь указывать путь до файла. В файловой система Linux нет такого понятия как буквы дисков. Там используется понятие «корень». Обозначается корень символом /

После корня указываются папки (в Linux они называются директориями) и файлы. Одни папки могут быть вложены в другие – точно также как в Windows. Вложенные папки и файлы разделяются символом / (точно таким же как корень).

Пример указания пути до файла:

/home/mial/book.txt

Эта запись означает, что файл book.txt находится в папке mial, а папка mial находится в папке home.


Базовые команды Linux

  • pwd для показа текущей рабочей директории
Откройте консоль и введите туда

pwd

У меня вывелось:

/home/mial

Здесь / (первый слеш) – это корень, home – это название папки (директории), далее / (второй слеш) – отделяет название вложенной папки, mial – название второй вложенной папки.

Команда pwd показывает «текущую рабочую директорию». Текущую рабочую директорию нужно знать при указании относительных путей до файлов и папок, также некоторые программы сохраняют результаты своего выполнения в текущую директорию.

  • mkdir для создания новых директорий
После mkdir укажите название папки, которую вы хотите создать. Если вы укажите относительный путь, например, так:

mkdir test1

То будет создана новая папка test1 в текущей рабочей директории, т.е. в моём случае путь до неё будет

/home/mial/test1

Также можно указать абсолютный путь до папки:

mkdir /home/mial/test2

  • ls для просмотра содержимого каталогов
Команда ls используется для вывода списка файлов и папок текущей рабочей директории:

ls

test1 test2 test.sh Видео Документы Загрузки Изображения Музыка Общедоступные Рабочий стол Шаблоны

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

Чтобы список выглядел лучше, можно использовать команду ls с опцией -l

ls -l

После команды и опций можно указать путь до папки, содержимое которой вы хотим посмотреть. Чтобы увидеть содержимое директории /var/log нужно ввести:

ls -l /var/log

Для просмотра содержимого корневой директории:

ls -l /

  • cd для перехода по папкам (смены текущей рабочей директории)
Для перехода по папкам используется команда cd после которой пишется директория, в которую вы хотите перейти. Можно указывать относительный путь или абсолютный:

cd test1

cd /home/mial/test2

Символ . (одна точка) означает текущую директорию, а символ .. (две точки) означаете родительскую директорию. Следовательно, для перехода на один уровень вверх нужно набрать

cd ..

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

cp test.sh test1

Этой командой я скопировал файл test.sh в директорию test1. Проверим

ls -l test1

итого 4

-rw-r--r-- 1 mial mial 84 дек 11 15:48 test.sh

  • mv для переименования и перемещения файлов.
После команды mv указывается имя файла, который вы хотите переименовать или переместить. Затем через пробел пишется директория, куда вы хотите переместить файл (тогда файл будет перемещён в неё с исходным именем), или директория и новое имя файла (тогда файл будет перемещён и переименован), или только новое имя файла (тогда файл будет переименован).

Файл test.sh из каталога test1 я переместил в каталог test2:

mv test1/test.sh test2

Файл test.sh в каталоге test2 я переименовал в test2.sh:

mv test2/test.sh test2/test2.sh

Файл test2.sh в каталоге test2 я переместил в каталог test1 и присвоил ему имя new.txt:

mv test2/test2.sh test1/new.txt

  • rm для удаления файлов и папок
Чтобы удалить наши тестовые директории, воспользуемся командой rm. После этой команды укажите путь до файла или папки, которые нужно удалить. Если вы собираетесь удалить директорию, то используйте также опцию -r, она означает рекурсивно удалять каталоги и их содержимое. Можно указать сразу несколько файлов и (или) каталогов:

rm -r test1 test2

  • Как копировать текст в командной строке и как вставлять в командную строку Linux
Привычные сочетания клавиш Ctrl+c и Ctrl+v в терминале имеют другое действие. Для копирования нужно использовать Ctrl+Insert, а для вставки Shift+Insert.

Ошибка «команда не найдена»
Причиной данной ошибки могут быть:
  • неправильно набрано имя команды
  • программа не установлена
  • данную команду может выполнять только root

Ещё несколько полезных сочетаний клавиш для командной строки Linux
  • Ctrl+l для очистки экрана
  • Ctrl+a для перехода в начало введённой команды
  • Ctrl+e для перехода в конец введённой команды
  • Ctrl+u для удаления всего, что стоит до курсора
  • Ctrl+k для удаления всего, что стоит после курсора
  • Ctrl+d для завершения текущего сеанса, закрытия консоли
Одна из самых часто используемых:
  • Ctrl+R: Поиск по ранее запущенным командам, начните писать искомую и вам будут предлагаться самые подходящие варианты. Для запуска нажмите ENTER.
Имеется функционал копи-пастинга:
  • Ctrl+W: Вырезать слово перед курсором, добавить его в буфер обмена.
  • Ctrl+K: Вырезать часть строки после курсора, добавить её в буфер обмена.
  • Ctrl+U: Вырезать часть строки перед курсором, добавить её в буфер обмена.
  • Ctrl+Y: Вставить из буфера обмена последнее, что вы вырезали.

Ранее мы познакомились с некоторыми командами. В том числе узнали, что у команды ls есть опция -l, которая изменяет поведение команды. На самом деле, практически у всех программ есть опции (их ещё называют флаги, ключи). Схематично типичная команда выглядит так:

команда -опции аргументы

Большинство команд используют короткие опции, состоящие из одного символа, перед которым стоит дефис, например, «-l». У некоторых команд имеются длинные опции, состоящие из одного или нескольких слов, перед ними ставится два дефиса. С одной командой могут использоваться несколько опции, разделённых пробелами. Короткие опции можно группировать вместе, в этом случае перед ними ставится один дефис. Например, у команды ls имеется также опция «-t», которая сортирует результаты по времени модификации. Следующая команда:

ls -l -t

Полностью идентична следующей:

ls -lt

Примером длинной опции для ls является «--reverse», которая выводит результаты в обратном порядке:

ls --reverse

Опции можно сочетать, если они не являются взаимоисключающими.


Справка по программам командной строки Linux

Чтобы узнать опции той или иной программы, наберите:

команда --help

Например:

ls --help
60414a924f507fd885bc0.png

Будет выведена информации об использовании:

ls [КЛЮЧ]… [ФАЙЛ]…


Краткая характеристика функции:

Выдаёт информацию о ФАЙЛАХ (по умолчанию о текущем каталоге).


А также довольно большой список опций. Приведём самые популярные:

-a, --all не скрывать файлы начинающиеся с .

-A, --almost-all не выдавать подразумеваемые . и ..

-d, --directory выдавать имена каталогов, а не их содержимое

-F, --classify добавлять к имени файла индикатор (один из */=>@|)

-h, --human-readable c -l и/или -s печатать размеры в удобном для

человека виде (например, 1K 234M 2G)

-l использовать широкий формат

-r, --reverse обратный порядок сортировки

-S сортировать по размеру файла, большие сначала

-t сортировать по времени изменения,

сначала самые новые

-X сортировать по расширению в алфавитном порядке

-1 перечислять по одному файлу на строке.

Символ «\n» не учитывается, если указан -q или -b

--help показать эту справку и выйти

--version показать информацию о версии и выйти

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

У каждой программы свои опции, и своё значение. Пожалуй, универсальной (одинаковой для всех), является только флаг --help.

Как и имена команд, опции чувствительные к регистру, т.е. -s и -S это две разные опции.

Задание для самостоятельного изучения: познакомьтесь с опциями и других рассмотренных ранее программ, т.е. mkdir, cp, mv и rm.


Зачем сейчас нужна командная строка Linux?

Мы начали знакомиться с командами и их опциями. Может возникнуть резонный вопрос – зачем вообще так мучиться? Посмотреть, какие файлы находятся в директории, скопировать или удалить их можно с лёгкостью в любом файловом менеджере. К чему вообще нужна консоль?

Иногда мне попадались сообщения, что «командная строка это прошлое». Действительно ли работа в консоли является никому ненужным атавизмом? Нет! Очень большое «НЕТ»!

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

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

Рассмотрим вполне себе бытовой пример с командой find. Допустим, мне захотелось посмотреть на фотографии со своего дня рождения, сделанные в 2014 году. Как мне их быстро найти в своём плохо структурированном фотоархиве на несколько сотен гигабайт? Можно попытаться начать просматривать самые вероятные пути, где я их мог бы сохранить, попытаться искать по имени файла и т.д. В командной строке Linux мне достаточно сделать поиск по дате создания файла.

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

К примеру, мне понадобилось разместить на карте точки тех мест, где были сделаны все (!) фотографии из моего фотоархива. Я взял уже знакомую нам программу find для поиска всех файлов изображений, найденные файлы передал программе jhead (умеет извлекать метаданные из файлов), указал ей передавать результат своей работы в команду grep (отфильтровывает все метаданные, кроме GPS координат), полученные геоданные передаются командам cut и sed, которые «раскидывают» дни, минуты и секунды долготы и широты по переменным, эти переменные передаются в программу bc (пересчитывает координаты в десятичные градусы, которые поддерживаются картой), полученные координаты передаются команде echo (которая выводит результат), ну и, наконец, команда cat объединяет HTML структуру (я воспользовался картами Google) с полученными координатами и формирует конечный HTML файл, который можно открыть в любом браузере.

Если бы я взялся решать эту задачу на той же самой Java или любом другом языке программирования, то, наверное, так бы и застрял на анализе структуры файлов .jpg и решения проблемы по извлечению EXIF из бинарного файла. А в командной строке Linux (объединив несколько команд в пакетный файл), мне удалось решить эту проблему в течение часа.

Причём в Linux имеются программы для самых разных сфер: для работы с веб-сайтами (скачивание файлов или получение страницы сайта), обработки текста (мощнейший набор инструментов), работы с файловой системой, работы с железом, сетями, огромное количество специализированных консольных программ, можно получить доступ к базам данных – вообще всё, что можно делать в графическом интерфейсе Linux плюс много другого.

Такие «паровозики» можно составлять из любых команд, вы можете задействовать ваши собственные консольные программы.

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

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

Т.е. просмотр содержимого папки с помощью ls -l это не «пик» возможностей командной строки. Это самое-самое начало знакомства. Изучение командной строки требует и усилий, и времени. Но эти затраты окупятся сторицей, особенно если ваша деятельность связана с администрированием ОС Linux/сети/сервера, пентестингом, программированием.

В следующей части мы продолжим изучить азы командной строки – «кирпичики», из которых можно строить удивительные вещи.
 
Сверху Снизу