Linux — это операционная система. Как винда (windows), только более защищенная. В винде легко подхватить вирус, в линуксе это практически невозможно. А еще линукс бесплатный, и ты сам себе хозяин: никаких тебе неотключаемых автообновлений системы!
Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта, закоммитить новый код на Github
или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под OS Windows.
Для начала нужно установить терминал
или запустить командную строку, встроенную в Windows — для этого нажмите Win+R
и введите cmd
. Терминал часто встречается и прямо в редакторах кода, например, в Visual Studio Code
.
Чтобы ввести команду в консоль, нужно напечатать её и нажать клавишу Enter
.
Чтобы запустить командную строку на винде, есть 2 основных способа:
- Пуск → cmd.exe
- Run (кнопка с картинкой винды + R) → cmd
Как перейти в другую директорию
cd <путь к директории>
По абсолютному пути
Можно перейти в директорию в привычных папках и скопировать полный путь. Например, нам нужно в папку C:\photo\city
. Копируем путь к ней:
Вставляем в командную строку
По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в C:\photo\city
, а мне надо в C:\photo\city\msk
, команда будут такой:
Если мне из надо из C:\photo\city
в C:\photo\city\msk\2017\cat_1
, команда будет такой:
Я не пишу C:\photo\city
, так как я уже там.
С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd <tab>)
Может, ты имел в виду папку 1?
— (<tab>)
Нет? Может, папку 2?
— (<tab>)
Снова нет? Может, папку 3?
— (<tab>)
Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
— (<tab>)
У меня кончились варианты, поехали сначала. Папка 1?
— система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
Если нужно поднять на два уровня выше, то
И так до бесконечности ![]()
Можно использовать файл, лежащий на уровне выше или перейти оттуда в другую папку. Посмотрим на примере. В C:\photo\city\
у нас 2 папки: msk
и long-long-long-long-name-folder
Изменить диск. Как перейти из C:\ в D:\
Чтобы изменить диск, напишите его название и двоеточие, без «cd»
Система перейдет на диск D:\. А как перемещаться дальше, вы уже знаете!

Если вы сначала сделали cd, то после изменения диска вы попадете туда, куда собирались исходно:

Ну и пока это все, что вам надо знать ![]()
PS — это выдержка из моей книги для начинающих тестировщиков
, написана в помощь студентам моих курсов:
Особенно актуальна, конечно, новичкам. Они ведь часто с командной строкой вообще не сталкивались, а мы в школе изучаем PICT, allpairs и даже будем выкачивать код из Mercurial, ну как тут без командной строки обойтись?
Введение в bash
Оболочка
Если вы уже использовали Linux ранее, то наверняка знаете, что после входа в систему вас приветствует приглашение, которое выглядит примерно так:
На практике приглашение, которое вы видите, может немного отличаться. Например, оно может содержать имя хоста, имя текущей рабочей директории, или все вместе. Не зависимо от того, как выглядит ваше приглашение, есть одна несомненная вещь: программа, которая выводит это приглашение, называется оболочка интерпретатора команд (от англ. shell — оболочка, он же командная строка или терминал — прим. пер.), и, вероятнее всего, вашей командной оболочкой будет ‘bash’.
А у вас запущен bash?
Вы можете убедиться, что используете bash, набрав:
Если строчка выше выдает ошибку, или ответ не соответствует, возможно, что вы запустили другую оболочку. В этом случае большая часть этого руководства все еще будет полезна, но было бы значительно лучше для вас переключиться на bash, ради подготовки к экзамену 101.
О bash
Bash — это акроним от Bourne-again-shell, от англ. «ещё-одна-командная-оболочка-Борна» или «рождённая-вновь-командная оболочка» (тут игра слов Bourne/born — прим. пер.), и является оболочкой по умолчанию для большинства Linux-систем. Задача оболочки получать от вас команды, через которые вы взаимодействуете с Linux-системой. После того, как вы закончили ввод команд, вы можете выйти из оболочки (exit) или закончить сеанс (logout), в этом случае вы увидите приглашение входа в систему.
Кстати, вы также можете выйти из оболочки bash нажав control-D в приглашении.
Использование «cd»
Вы, возможно, уже обнаружили, что пялиться на приглашение bash — не самое впечатляющее занятие в мире. Ну что ж, давайте узнаем как путешествовать по нашей файловой системе. В приглашении введите пожалуйста следующую команду (без $):
$ cd /
Вы только что сообщили bash, что хотите работать в директории /, также известной, как корневая; все директории в системе имеют форму дерева, и / является его вершиной, т.е. корнем (в информатике деревья растут наоборот, корень вверху, а ветки спускаются вниз — прим. пер.). cd устанавливает директорию, в которой вы в данный момент работаете, также известную как «текущая рабочая директория».
Пути
Чтобы узнать текущую рабочую директорию в bash нужно набрать:
В примере с cd, аргумент / называется путь. Он сообщает cd куда мы хотим отправиться. В частности, аргумент / это абсолютный путь, что значит, что он задает расположение относительно корня дерева файловой системы.
Абсолютные пути
Ниже несколько из них:
Как можно заметить, у всех абсолютных путей есть одна общая черта, они начинаются с /. Указывая, допустим, /usr/local/bin
в качестве аргумента для cd, мы сообщаем, что хотим попасть в / директорию, затем в usr
директорию внутри нее, и так далее в local
и bin
, вниз по дереву. Абсолютные пути всегда отсчитываются начиная от / сперва.
Относительные пути
Другой тип пути называется «относительный путь». bash, cd, и другие команды всегда интерпретируют их относительно текущей директории. Относительные пути НИКОГДА не начинаются с /. Так, если мы сначала переместимся в /usr
:
$ cd /usr
То, затем мы можем использовать относительный путь local/bin
, чтобы попасть в директорию /usr/local/bin
:
$ cd local/bin
$ pwd
/usr/local/bin
Использование .
Относительные пути могут также содержать одну или более “.” директории. Директория “.” специальная; она указывает на родительскую директорию. Так, продолжая с примера выше:
$ pwd
/usr/local/bin
$ cd .
$ pwd
/usr/local
Как видно, наша текущая директория теперь /usr/local
. Мы смогли переместиться «назад» на одну директорию относительно текущей, где были до того.
Кроме того, мы также можем использовать “.” в существующем относительном пути, позволяющем нам переместиться в директорию «рядом» с той, в которой находимся:
Примеры относительных путей
Относительные пути могут быть чуточку более сложными. Ниже несколько примеров, попробуйте самостоятельно догадаться, где вы окажетесь после набора каждой из этих команд.
$ cd /usr/X11R6/bin
$ cd ./lib/X11
$ cd /usr/bin
$ cd ./bin/./bin
А теперь наберите их и проверьте свои предположения. 😉
Понимание .
Перед тем как мы закончим изучение cd, есть несколько моментов, которые необходимо прояснить. Во-первых, есть еще одна специальная директория “.”, которая означает «текущая директория». Хотя она и не используется с командой cd, но часто используется для выполнения программы из текущей директории, как в следующем примере:
В данном случае будет запущена исполняемая программа myprog
, находящаяся в текущей рабочей директории.
cd и домашняя директория
Если бы мы хотели переместиться в нашу домашнюю директорию, то могли бы набрать:
$ ./myprog /home/drobbins/myfile.txt
Однако, использования абсолютного пути вроде этого, не всегда удобно. К счастью, мы можем использовать символ ~ (тильда), чтобы проделать то же самое:
$ ./myprog ~/myfile.txt
Другие домашние директории пользователей
Bash воспримет одиночную ~ как указатель на вашу домашнюю директорию, но вы также можете использовать её для указания на домашние директории других пользователей. Например, если мы хотели сослаться на файл под названием fredsfile.txt
в домашней директории пользователя fred
, то могли бы набрать:
$ ./myprog ~fred/fredsfile.txt
Как отредактировать файл
Вот честное слово, лучше делать это через графический интерфейс!
- nano
— более простая программа, рассчитана на новичков - vim
— более сложная, но позволяет сделать кучу всего
Начнем с nano. Указываете имя команды и путь в файлу:
nano test_env.json Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
- Ctrl+O — чтобы сохранить
- Ctrl+X — для выхода
Самое приятное в nano — это подсказки внизу экрана, что нажать, чтобы выйти.

А вот с vim с этим сложнее. В него легко зайти:
vim test_env.json
vi test_env.json (предшественник vim) Делюсь секретом, для выхода надо набрать:
- :q
— закрыть редактор - :q!
— закрыть редактор без сохранения (если что-то меняли, то просто «:q» не проканает)
Двоеточие запускает командный режим, а там уже вводим команду «q» (quit)
.
Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:

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

Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда!!!
Если нужно выйти, сохранив изменения, используйте команду
:w — сохранить файл;
:q — закрыть редактор; Ну а про возможности редактирования см статьи ниже =)
См также:
Как редактировать файлы в Ubuntu
— подробнее о разных способах
Как пользоваться текстовым редактором vim
— подробнее о vim и всех его опциях
Как выйти из редактора Vi или Vim?
— зачем нажимать Esc
Команды одной строкой
d:\html>systeminfo
Имя узла: DESKTOP-6MHURG5
Название ОС: Майкрософт Windows 10 Pro
Версия ОС: 10.0.20246 Н/Д построение 20246
Изготовитель ОС: Microsoft Corporation
Параметры ОС: Изолированная рабочая станция
Сборка ОС: Multiprocessor Free Информация о сетевых настройках — ipconfig
.
d:\html>ipconfig
Настройка протокола IP для Windows
Адаптер Ethernet Ethernet 2: Состояние среды. . . . . . . . : Среда передачи недоступна. DNS-суффикс подключения . . . . . : Список запущенных процессов — tasklist
.
c:\>tasklist
Имя образа PID Имя сессии № сеанса Память
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 КБ
System 4 Services 0 2 688 КБ
Secure System 72 Services 0 23 332 КБ
… Как узнать версию OS
Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?
cat /etc/*-release 
На этой виртуалке стоит CentOs 7.
Если нужна версия ядра:
uname -a См также:
Как узнать версию Linux
Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf
:
tar -cvzf archive.tar.gz /home/test 
В данном примере мы упаковали директорию /home/test
, внутри которой было две картинки — 502.jpg
и 504.jpg
.
Для распаковки меняем флаг «c» на «x» и убираем «z»:
tar -xvf archive.tar.gz 
Хотя система пишет, что распаковала «/home/test»
, на самом деле папка «test»
появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
- c
— создать архив в linux - x
— извлечь файлы из архива - v
— показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались) - f
— файл для записи архива - z
— сжатие
Для упаковки используется опция c
— C
reate, а для распаковки x
— e X
tract.

Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:
yum install rar
yum install unrar Говорит, нет такого пакета:
No package rar available.
Error: Nothing to do Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:
wget http://rarlabs.com/rar/rarlinux-x64-5.4.0.tar.gz
tar xzf rarlinux-x64-5.4.0.tar.gz
cd rar
make install mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib unrar x test.rar См также:
Установка RAR на Linux
Переименование файла — ren или rename
Последовательно вводим ren
, старое и новое имя файла.
d:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:59 0 blag.txt
d:\html>ren blag.txt blog.txt
d:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:59 0 blog.txt Как удалить файл
С помощью команды rm (remove)
:
rm test.txt — удалит файл test.txt Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:
rm * — удалит все файлы в текущей директории 
Если нужно удалить папку, надо добавить флаг -r (recursive)
:
rm -r test_folder Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:

rm -rf test_folder --- просто все удалит без разговоров 
Опция -v
показывает имена удаляемых файлов:
rm -rfv test_folder --- удалит папку со всем содержимым, но выведет имена удаляемых файлов 
Тут вы хотя бы можете осознать, что натворили )))
См также:
Как удалить каталог Linux
Где тренироваться
Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))
А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.
У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое. Выложил в общий доступ пароли? На тебе ддос-атаку с твоего сервера. Ну и сервер блокируют. После N-ой блокировки я плюнула на это дело. Кто хочет научиться, найдет 150р.
Чтобы подключиться к машине, используйте инструменты:
- Putty
— командная строка - WinSCP
— графический интерфейс
WinSCP — что это и как использовать
Удаление файла — del или erase
Команда для удаления одного или нескольких файлов.
d:\html>del blog.txt Создать папку — mkdir или md
Создаём пустую папку code
внутри папки html
:
d:\html>mkdir coded:\html>dir Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:25 <DIR> code 0 файлов 0 байт 3 папок 253 389 438 976 байт свободно Создаём несколько пустых вложенных папок — для этого записываем их через косую черту:
d:\html>mkdir css\js
d:\html>dir Том в устройстве D имеет метку DATA Серийный номер тома: 0000-0000 Содержимое папки d:\html
03.11.2020 19:23 <DIR> .
03.11.2020 19:23 <DIR> ..
03.11.2020 19:25 <DIR> code
03.11.2020 19:29 <DIR> css Создаётся папка css
, внутри которой находится папка js
. Чтобы проверить это, используем команду tree
. Она показывает дерево папок.
Как перейти в другую директорию
С помощью команды cd:
cd <путь к директории> Путь может быть абсолютным или относительным.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в WinSCP
).
Вставляем путь в командную строку после «cd»
cd /home/student/log Ну вот, мы переместились из домашней директории (обозначается как ~) в /home/student/log
.

По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /home/student
, а мне надо в /home/student/log
, команда будет такой:
cd log --- перейди в папку log из той директории, где ты сейчас находишься Если мне надо из /home/student/photo
в /home/student/photo/city/msk/2017/cat_1
, команда будет такой:
cd city/msk/2017/cat_1 Я не пишу /home/student/photo
, так как я уже там.

В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки:
cd ~/log Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log
:

С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd tab)
Может, ты имел в виду папку 1?
— (tab)
Нет? Может, папку 2?
— (tab)
Снова нет? Может, папку 3?
— (tab)
Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?
— (tab)
У меня кончились варианты, поехали сначала. Папка 1?

cd (Tab)(Tab)(Tab)
— система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Подняться наверх
Подняться на уровень выше:
cd .. Если нужно поднять на два уровня выше, то
cd ../.. И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.
Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd .\.», а в линуксе именно «cd ./.».
См также:
Путь к файлу в linux
И это все?
Разумеется, нет =))
Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж.
База, которая всегда нужна — pwd, cp, mv, mkdir, touch
. Остальное можно легко гуглить, как только возникает необходимость.
Вот вам еще пара ссылочек от меня:
Для понимания структуры папок рекомендую статью « Структура папок ОС Linux. Какая папка для чего нужна. Что и где лежит в линуксе
»
Как изменить владельца файла
Это плохо, потому что никто другой с ними работать уже не сможет. Но можно создать файл под root-ом, а потом изменить его владельца с помощью команды chown.

chown testbase:testbase test.txt — сменить владельца файла
chown -R testbase:testbase user — сменить владельца папки В итоге был владелец root
, а стал testbase
. То, что надо!
См также:
Команда chown Linux
Как запустить приложение
Некоторые приложения запускаются через скрипты. Например, чтобы запустить сервер приложения WildFly, нужно перейти в папку bin и запустить там standalone.sh
. Файл с расширением .sh — это скрипт.
Чтобы запустить скрипт, нужно указать полный путь к нему:
/opt/cdi/jboss/bin/standalone.sh — запустили скрипт standalone.sh Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:
./standalone.sh — запустили скрипт, если мы в той же директории Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:
chkconfig test on
См также:
Запуск скрипта sh в Linux — подробнее о скриптахЕсли же приложение запускается как сервис, то все еще проще:
rmdird:\html\css>rmdir jsЧтобы сервис test запускался автоматически при рестарте системы, используйте команду:
standalone.sh --- запустили скрипт standalone.sh, путь к которому прописан в PATHОна добавит службу в автозапуск.Содержимое текущей папки — dir Выводит список файлов и папок в текущей папке.
C:\content-server>dir Том в устройстве C имеет метку SYSTEM Серийный номер тома: 2C89-ED9D Содержимое папки C:\content-server 06.10.2020 00:41 <DIR> . 06.10.2020 00:37 <DIR> .circleci 16.07.2020 16:04 268 .editorconfig 16.07.2020 16:04 10 .eslintignore 16.07.2020 16:04 482 .eslintrc 06.10.2020 00:37 <DIR> .github 16.07.2020 16:04 77 .gitignore 06.10.2020 00:41 <DIR> assets 06.10.2020 00:41 <DIR> gulp 16.07.2020 16:10 379 gulpfile.js 16.07.2020 16:10 296 320 package-lock.json 16.07.2020 16:10 751 package.json 16.07.2020 16:04 509 README.mdУдалить папку — rmdir или rd
![]()
Чтобы удалить конкретную папку в текущей, введите команду
:
service test start — запустить сервис под названием «test» service test stop — остановить сервисПри этом удалить можно только пустую папку. Если попытаться удалить папку, в которой что-то есть, увидим ошибку:
d:\html\css>d:\html>rmdir css Папка не пуста.Чтобы удалить дерево папок, используйте ключ
/s
. Тогда командная строка запросит подтверждение перед тем, как удалить всё.d:\html>rmdir css /s css, вы уверены [Y(да)/N(нет)]? yПоказать дерево папок — tree
В любом момент мы можем увидеть структуру папок. Для этого используется команда
tree
.d:\html>tree Структура папок тома DATA Серийный номер тома: 0000-0000 D:. ├───code └───css └───jsЕсли вы хотите посмотреть содержимое всего диска, введите
tree
в корне нужного диска. Получится красивая анимация, а если файлов много, то ещё и немного медитативная.Как посмотреть свободное место
Сколько места свободно на дисках
df -hСколько весит директория
du -sh du -sh * --- с разбиениемКак перенести / скопировать файл
Допустим, у нас в директории /opt/app/log
находится app.log
, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?Скопировать файл
cp что_копировать куда_копироватьЕсли мы находимся в директории /opt/app/log
:cp app.log /home/olgaВ данном примере мы использовали относительный путь для «что копировать» — мы уже находимся рядом с логом, поэтому просто берем его. А для «куда копировать» используем абсолютный путь — копируем в /home/olga
.Можно сразу переименовать файл:
cp app.log /home/olga/app_test_2020_03_08.logВ этом случае мы взяли app.log
и поместили его в папку /home/olga
, переименовав при этом в app_test_2020_03_08.log
. А то мало ли, сколько логов у вас в этом папке уже лежит, чтобы различать их, можно давать файлу более говорящее имя.Если в «куда копировать» файл с таким именем уже есть, система не будет ничего спрашивать, просто перезапишет его. Для примера положим в папку log
внутри домашней директории файл «app.log»
, который там уже есть:
Никаких ошибок, система просто выполнила команду.
См также:
Копирование файлов в linux
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
cp -r путь_к_папке путь_к_новому_местуcp /opt/app/log /home/olgaТак в директории /home/olga появится папка «log»
.Переместить файл
Если надо переместить файл, а не скопировать его, то вместо cp (copy)
используем mv (move)
.cp app.log /home/olga ↓ mv app.log /home/olgaМожно использовать относительные и абсолютные пути:
/opt/cdi/jboss/bin/standalone.sh — запустили скрипт standalone.shМожно сразу переименовать файл:
./standalone.sh — запустили скрипт, если мы в той же директорииПереместить директорию
Аналогично перемещению файла, команда mvПредисловие
Об этом руководстве
Добро пожаловать в первую из четырех частей обучающего руководства по основам Linux, разработанного чтобы подготовить вас к сдаче экзамена Linux Professional Institute 101. В нем вы познакомитесь с bash (стандартной оболочкой командного интерпретатора в Linux), узнаете о большинстве возможностей таких стандартных команд Linux, как ls, cp и mv, разберетесь в инодах, жестких и символьных ссылках, и многом другом. К концу этого руководства у вас сформируется некий фундамент знаний, и вы будете готовы к изучению основ администрирования Linux. К концу всего курса (8 частей), у вас будет достаточно навыков, чтобы стать системным администратором Linux и пройти сертификацию LPIC Level 1 от Linux Professional Institute, если конечно захотите.Данная первая часть руководства отлично подходит для новичков в Linux, а также для тех пользователей, кто хочет освежить или улучшить свое понимание фундаментальных концепций Linux, таких, как копирование и перемещение файлов, создание символических и жестких ссылок, а также стандартных команд обработки текста, включая конвейеры и перенаправления. По ходу мы также дадим множество советов, подсказок и трюков, что делает это руководство насыщенным и практичным, даже для тех, кто уже имеет солидный опыт работы с Linux. Для начинающих большая часть этого материала будет новой, но более продвинутые пользователи Linux найдут это руководство отличным средством, чтобы разложить свои фундаментальные навыки по полочкам у себя в голове.
Тем, кто изучал первую версию этого руководства с целью, отличной от подготовки к экзамену LPI, возможно, что вам не нужно его перечитывать. Однако, тем же, кто планирует сдавать экзамены, стоит обязательно просмотреть данную исправленную версию.
Как создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:
mkdir -p test/dir--{000..100} touch test/dir--{000..100}/file-{A..Z}Вот и все, дальше можно играться с ними!
- mkdir
— создать директорию - touch
— создать файл (или изменить существующий, но если файла с таким именем нет, то команда создаст новый, пустой)
А выражения в скобках играют роль функции, которая выполняется в цикле и делает ручную работу за вас:
- {000.100} — пробежится по всем числам от 0 до 100
- {A. Z} — пробежится по всем буквам английского алфавита от A до Z
Как я пробовала эту команду. Сначала посмотрела, где нахожусь:
$ pwd
/home/test Символ $ при описании команд означает начало строки, куда мы пишем команду. Так мы отделяем то, что ввели сами (pwd) от ответа системы (/home/test).
Ага, в домашней директории. Создам себе песочницу:
mkdir olga Вот в ней и буду творить!
mkdir -p olga/dir--{000..100}
touch olga/dir--{000..100}/file-{A..Z} А потом можно проверить, что получилось:
cd olga
ls -l Как-то так! Имхо, полезные команды.
Я нашла их в книге « Командная строка Linux. Полное руководство
», они используются для того, чтобы создать песочницу для прощупывания команды find
. Я, как и автор, восхищаюсь мощью командной строки в данном случае. Всего 2 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!
И, главное, тестировщику полезно — может пригодиться для тестов.
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:
man ls 
Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.
Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная
информация. А что вы там нагуглите — неизвестно =))
Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание + сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!
Если man у программы нет, используйте флаг -h (--help)
:
ls -h Как создать директорию
Используйте команду mkdir
:
mkdir test --- создает папку с названием «test» там, где вы находитесь Можно и в другом месте создать папку:
mkdir /home/test --- создает папку «test» в директории /home, даже если вы
сейчас не там Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
См также:
Как создать каталог в Linux с помощью команды mkdir
Как протестировать IOPS на Linux
Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.
Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.
Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.
Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.

Используем утилиту fio — https://github.com/axboe/fio/releases
.
1) Скачиваем последнюю версию, распаковываем, переходим в каталог. В командах ниже нужно заменить «fio-3.19» на актуальную версию из списка
cd /tmp
wget https://github.com/axboe/fio/archive/fio-3.19.tar.gz
tar xvzf fio-3.19.tar.gz
rm fio-3.19.tar.gz
cd fio-fio-3.19 2) Должны стоять пакеты для сборки
apt-get install -y gcc make libaio-dev | yum install -y make gcc libaio-devel make ./fio -readonly -name iops -rw=randread -bs=512 -runtime=20 -iodepth 32 -filename /dev/sda -ioengine libaio -direct=1 Какие должны быть результаты:
- Средний SSD, выпущенный 2-3 года назад — 50 тысяч IOPS.
- Свежий Samsung 960 Pro, который стоит на одной из железок у нас в офисе — 350 тысяч IOPS.
Свежесть определяется на момент написания статьи
в 2017 году.
Если должно быть 50 тысяч, а диск выдает сильно меньше, то:
— он не SSD;
— есть сетевые задержки;
— неправильно примонтирован;
— с ними что-то еще плохое случилось и стоит поднять алярм.
Книги и видео по теме
Книги:
Командная строка Linux. Уильям Шоттс
Скотт Граннеман. Linux. карманный справочник
Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:

Хотя лучше использовать команду сразу с флагом «l»:
ls -l Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.

У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
См также:
Команда ls Linux
— подробнее о команде и всех ее флагах
Команда ls – просмотр каталога
— о команде для новичков (без перечисления всех флагов)
Как посмотреть использованные ранее команды
Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!
Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:
↑ (стрелочка «наверх») — показать последнюю команду
history — показать последние 1000 команд Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).

Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.
Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.
См также:
История команд Linux
— больше о возможностях history
Как создать файл
touch app.log Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Перейти в другую папку — cd
Команда cd
без аргументов выводит название текущей папки.
Перейти в папку внутри текущего каталога:
C:\content-server>cd assets
C:\content-server\assets> Перейти на одну папку вверх:
C:\content-server\assets>cd ..
C:\content-server> Перейти в папку на другом диске:
c:\content-server>cd /d d:/
d:\> Чтобы просто изменить диск, введите c:
или d:
.
Материалы по теме
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Справка по командам — help
Команда help
без аргументов выводит список всех возможных команд. help
вместе с именем команды выведет справку по этой команде.
d:\html>help tree
Графическое представление структуры папок или пути.
TREE [диск:][путь] [/F] [/A] /F Вывод имён файлов в каждой папке. /A Использовать символы ASCII вместо символов национальных алфавитов. В этой статье приведены не все команды и не все их возможности, но вы всегда можете воспользоваться командой help
и узнать о том, что ещё может командная строка.
👉🏻 Больше статей о фронтенде и работе в айти в телеграм-канале.
Как узнать IP компьютера
Чтобы узнать IP машины, используйте команду:
hostname -I Также можно использовать ifconfig
:
ifconfig — выведет кучу инфы, в том числе ваш внешний IP
ip a — аналог, просто иногда Ifconfig дает очень много результата, тут поменьше будет См также:
Displaying private IP addresses
Открыть файл
Чтобы открыть файл в текущей папке, введите его полное имя с расширением. Например, blog.txt или setup.exe.
Как установить приложение
- 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 
Ничего страшного, установите это приложение через yum:
yum install mc 
Он там будет что-то делать, качать, а потом уточнит, согласны ли вы поставить программу с учетом ее размеров. Если да, печатаем «y»:

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

См также:
Как устанавливать программы для Linux
Yum, шпаргалка
— всякие опции и плагины
Где я? Как понять, где находишься
pwd --- мы ввели команду
/home/test --- ответ системы, мы находимся в домашней директории пользователя test Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как P
rint W
orking D
irectory. Запомните ее, пригодится.
Как понять, где установлено приложение
Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?
Чтобы узнать, куда приложение установилось, используйте whereis
(без пробела):
whereis newman 
Об авторах
Daniel Robbins
Chris Houser
Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure
.
Aron Griffis
Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа d:\html\css>rmdir js HP ePrint
. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».





