Основы Linux – командная строка и файловая система – The Codeby

Рассмотрим, какие программные оболочки бывают их виды и основные консольные команды в Linux

Командная строка Linux

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

добавлен в избранные команды,

доступен в контекстном меню при клике правой кнопкой мыши в области рабочего стола.

Либо вы для вызова эмулятора терминала вы можете воспользоваться сочетанием клавиш CTRL + ALT + t.

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

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

В некоторых инструкциях перед командами пишут $ или # и новички, пытаясь выполнить команды копированием-вставкой, получают разнообразные ошибки. Если перед командной вы видите $ или #, то их не нужно печатать – они написаны только для информирования вас о том, нужны ли дополнительные привилегии для выполнения данной команды.

TAB для автодополнения

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

ENTER для запуска выполнения команд

Набрав команду, нажмите ENTER и после этого она запустится.

CTRL + c для прерывания выполнения программы

Если вы хотите оборвать выполнение команды, то используйте для этого сочетание клавиш CTRL + c. Если вы ввели команду, но передумали её запускать, то вместо удаления строки, можете также нажать CTRL + c.

(курсорная клавиша вверх) для просмотра истории команд

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

Где я? Как понять, где находишься

Команда pwd:

pwd — мы ввели команду/home/test — ответ системы, мы находимся в домашней директории пользователя test

Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как

P

rint

W

orking

D

irectory. Запомните ее, пригодится.

Скачать книгу в формате:

  • epub
  • fb2
  • rtf
  • mobi
  • txt

Азы файловой системы Linux

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

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

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

/home/mial/book.txt

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

Команды для управления правами на файлы и директории

Все, что нужно для разрешения проблем, связанных с правами в Linux.

  • sudo — выдает права суперпользователя. Используется перед любой другой командой в терминале, если нужно выполнить ее от имени администратора. Многие программы и операции запускаются исключительно при наличии этих прав, так что sudo используется часто. Например, чтобы обновить список пакетов в Ubuntu, введем: sudo apt-get update. При этом система запросит пароль администратора.
  • sudo su — переводит терминал в режим суперпользователя. В нем каждая введенная команда будет восприниматься системой так, будто перед ней ввели sudo. Помогает запускать несколько скриптов и утилит, требующих права администратора, без необходимости постоянно корректировать их или вводить пароль от учетной записи.
  • sudo gksudo — используется для запуска графических утилит от имени администратора. В Windows для этого есть специальная кнопка в контекстном меню, а в Linux — префикс. Синтаксис такой:

​sudo gksudo название приложения, нуждающееся в запуске от имени администратора

  • sudo !! — запускает предыдущую команду от имени администратора. Используется, если до этого была неудачная попытка запустить программу. Помогает не тратить время на повторный ввод большого количества символов.
  • chmod — корректирует права доступа к выбранному файлу. Применяется исключительно с набором аргументов, обозначающих список прав. Допустим, я хочу выдать права на чтение и запись файла Timeweb.html на рабочем столе. Для этого введу в терминал: chmod 777 ~/Desktop/timeweb.html. Теперь его можно открывать и редактировать. Аналогичным образом пользователи поступают с системными файлами, когда приходит время что-то в них менять. По умолчанию большая их часть защищена от записи.
  • chown — назначает владельца для выбранной директории, документа, картинки или любого другого элемента в файловой системе. Синтаксис следующий:

chown имя учетной записи, которому надо передать права путь до файла, права на который нужно передать

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

Некоторые базовые команды:

Команды Linux для управления процессами

25. kill / xkill / pkill / killall

Служат для завершения процессов. Но они принимают различные параметры для идентификации процессов. Kill нужен PID процесса, xkill — достаточно кликнуть по окну, чтобы закрыть его, killall и pkill принимают имя процесса. Используйте ту, которая удобна в определенной ситуации.

26. ps / pgrep

Как уже говорилось, чтобы уничтожить процесс, нужен его идентификатор. Один из способов получить его, это утилита ps, которая печатает информацию о запущенных процессах. По умолчанию вывод очень длинный, поэтому используйте опцию -e, чтобы увидеть информацию об определённом процессе. Это только снимок состояния на момент вызова, и информация не будет обновляться. Команда ps с ключом aux выводит полную информацию о процессах. Pgrep работает следующим образом: вы задаете имя процесса, а утилита показывает его идентификатор. Подробнее о команде ps описано тут.

27. top / htop

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

28. time

Время выполнения процесса. Это секундомер для выполнения программы. Полезно, если вам интересно, насколько сильно ваша реализация алгоритма отстает от стандартной. Но, несмотря на такое название, она не сообщит вам текущее время, используйте для этого команду date.

Как отредактировать файл

Вот честное слово, лучше делать это через графический интерфейс!

Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:

  1. nano — более простая программа, рассчитана на новичков
  2. vim — более сложная, но позволяет сделать кучу всего

Начнем с nano. Указываете имя команды и путь в файлу:

nano test_env.json

Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:

  • Ctrl+O — чтобы сохранить
  • Ctrl+X — для выхода

Самое приятное в nano — это подсказки внизу экрана, что нажать, чтобы выйти.

ajuxt472gaz0qvmuoq9q7su-ir8.png

А вот с vim с этим сложнее. В него легко зайти:

vim test_env.jsonvi test_env.json (предшественник vim)

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

Esc, ctrl + x, ctrl + q

… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?

Делюсь секретом, для выхода надо набрать:

  • :q — закрыть редактор
  • :q! — закрыть редактор без сохранения (если что-то меняли, то просто «:q» не проканает)

Двоеточие запускает командный режим, а там уже вводим команду

«q» (quit)

.

Исходно, когда мы открываем файл через vim, то видим его содежимое, а внизу информацию о файле:

c1bdpfpapoguyvtr85g3ybsxfcu.png

Когда нажимаем двоеточие, оно печатается внизу:

r9zka8qp7q-ujgmy2ajjbni0req.png

Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда!!!

На самом деле сейчас всё не так страшно. Даже если вас заслали работать в банк, где нет доступа в интернет, а вы вошли в vi и не знаете как выйти, всегда можно погулить выход с телефона. Слава мобильному интернету! Ну а если вы знаете логин-пароль от сервера, то можно просто закрыть терминал и открыть его снова.

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

:w — сохранить файл;:q — закрыть редактор;

Ну а про возможности редактирования см статьи ниже =)

См также:
Как редактировать файлы в Ubuntu

— подробнее о разных способах

Как пользоваться текстовым редактором vim

— подробнее о vim и всех его опциях

Как выйти из редактора Vi или Vim?

— зачем нажимать Esc

Дисковое пространство

df -h отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)
ls -lSr |more выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir1 подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)
du -sk * | sort -rn отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a –qf ‘{SIZE}t%{NAME}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Как копировать текст в командной строке и как вставлять в командную строку Linux

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

Как установить приложение

Если вы привыкли к винде, то для вас установка приложения — это скачать некий setup файлик, запустить и до упора тыкать «далее-далее-далее». В линуксе все немного по-другому. Тут приложения ставятся как пакеты. И для каждой системы есть свой менеджер пакетов:

  • yum — red hat, centos
  • dpkg, apt — debian

См также:
5 Best Linux Package Managers for Linux Newbies

Давайте посмотрим на примере, как это работает. В командной строке очень удобно работать с Midnight Commander (mc) — это как FAR на windows. К сожалению, программа далеко не всегда есть в «чистом» дистрибутиве.

И вот вы подняли виртуалку на centos 7, хотите вызвать Midnight Commander, но облом-с.

mc
fhx2nq9bsz53_kzf8myqf21xu1m.png

Ничего страшного, установите это приложение через yum:

yum install mc
mv1vfg82oipmtbctn1fjdjjhdku.png

Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:

8s4wr7ky284kflypkoss6q6xjwc.png

И система заканчивает установку.

Вот и все! Никаких тебе унылых «далее-далее-далее», сказал «установи», программа установилась! Теперь, если напечатать «mc» в командной строке, запустится Midnight Commander:

iwyy_z8fawpdzy2bvaugi4ln5o0.png

См также:
Как устанавливать программы для Linux
Yum, шпаргалка

— всякие опции и плагины

Ошибка «команда не найдена»

Причиной данной ошибки могут быть:

  • неправильно набрано имя команды
  • программа не установлена
  • данную команду может выполнять только root

Команды

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

Команды делятся на два вида:

Команды для управления программами строятся по такой схеме:

название_программы -ключ значение

Название програмы — это название исполняемого файла из каталогов записанных в переменной $PATH (/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin и др.) или полный путь к исполняемому файлу (/opt/deadbeef/bin/deadbeef)
Ключ — пишется после названия программы, например -h, у каждой программы свой набор ключей, они перечислены в справке к программе, ключи используются для указания какие настройки использовать или какое действие выполнить
Значение — адрес, цифры, текст, спецсимволы (*, ~, , &, « », _ ), переменные ($HOME, $USER, $PATH)

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

Помните, что терминал чувствителен к регистру! Слова User, user и USER в Linux различаются!

Ещё несколько полезных сочетаний клавиш для командной строки Linux

  • Ctrl+l для очистки экрана
  • Ctrl+a для перехода в начало введённой команды
  • Ctrl+e для перехода в конец введённой команды
  • Ctrl+u для удаления всего, что стоит до курсора
  • Ctrl+k для удаления всего, что стоит после курсора
  • Ctrl+d для завершения текущего сеанса, закрытия консоли  

Одна из самых часто используемых:

  • Ctrl+R: Поиск по ранее запущенным командам, начните писать искомую и вам будут предлагаться самые подходящие варианты. Для запуска нажмите ENTER.

Имеется функционал копи-пастинга:

  • Ctrl+W: Вырезать слово перед курсором, добавить его в буфер обмена.
  • Ctrl+K: Вырезать часть строки после курсора, добавить её в буфер обмена.
  • Ctrl+U: Вырезать часть строки перед курсором, добавить её в буфер обмена.
  • Ctrl+Y: Вставить из буфера обмена последнее, что вы вырезали.

Продолжение: «Азы работы в командной строке Linux (часть 2)».

Команды Linux для управления сетью

39. ip

Если список команд Linux для управления сетью вам кажется слишком коротким, скорее всего вы не знакомы с утилитой ip. В пакете net-tools содержится множество других утилит: ipconfig, netstat и прочие устаревшие, вроде iproute2. Всё это заменяет одна утилита — ip. Вы можете рассматривать её как швейцарский армейский нож для работы с сетью или как непонятную массу, но в любом случае за ней будущее. Просто смиритесь с этим.

40. ping

Ping — это ICMP ECHO_REQUEST дейтаграммы, но на самом деле это неважно. Важно то, что утилита ping может быть очень полезным диагностическим инструментом. Она поможет быстро проверить, подключены ли вы к маршрутизатору или к интернету, и дает кое-какое представление о качестве этой связи.

41. nethogs

Если у вас медленный интернет, то вам, наверное, было бы интересно знать, сколько трафика использует какая-либо программа в Linux или какая программа потребляет всю скорость. Теперь это можно сделать с помощью утилиты nethogs. Для того чтобы задать сетевой интерфейс используйте опцию -i.

42. traceroute

Это усовершенствованная версия ping. Мы можем увидеть не только полный маршрут сетевых пакетов, но и доступность узла, а также время доставки этих пакетов на каждый из узлов. Подробнее — тут.

Как посмотреть свободное место

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

df -h

Сколько весит директория

du -shdu -sh * — с разбиением

Как узнать IP компьютера

Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.

Чтобы узнать IP машины, используйте команду:

hostname -I

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

ifconfig

:

ifconfig — выведет кучу инфы, в том числе ваш внешний IPip a — аналог, просто иногда Ifconfig дает очень много результата, тут поменьше будет
См также:
Displaying private IP addresses

Как узнать, как работает команда

Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:

man ls
k7xy_slngbbp7oqon4dqd45mjti.png

Закрыть мануал можно с помощью клавиши q.

Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.

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

актуальная

информация. А что вы там нагуглите — неизвестно =))

Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!

Если man у программы нет, используйте флаг

-h (—help)

:

ls -h

Приглашение ко вводу команд

В терминале слева от курсора выводится приглашение ко вводу или Shell Promt.

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

И это все?

Разумеется, нет =))

Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.

База, которая всегда нужна —

pwd, cp, mv, mkdir, touch

. Остальное можно легко гуглить, как только возникает необходимость.

Вот вам еще пара ссылочек от меня:

  • Что значат символы >> и >& в unix/Linux — а то вроде про «>» знаешь еще по винде, а что значит «>>»? Вот в статье и ответ!
  • Ахтунг, прод! Как настроить приветствие на Linux — очень полезная штука, если у вас есть доступы на продакшен. Обезопасьте себя )))

Для понимания структуры папок рекомендую статью «

Структура папок ОС Linux. Какая папка для чего нужна. Что и где лежит в линуксе

»

Книги и видео по теме

Видео:

ПО GNU/Linux — видео лекции Георгия Курячего

— очень хорошие видео-лекции

Книги:

Командная строка Linux. Уильям Шоттс
Скотт Граннеман. Linux. карманный справочник

Где тренироваться

Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))

А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.

У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.

Чтобы подключиться к машине, используйте инструменты:

  • Putty — командная строка
  • WinSCP — графический интерфейс

См также:

WinSCP — что это и как использовать

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: