Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Время на прочтение

Время на прочтение

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

Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта,  закоммитить новый код на Github
 или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под OS Windows.

Для начала нужно  установить терминал
 или запустить командную строку, встроенную в Windows — для этого нажмите Win+R
и введите cmd
. Терминал часто встречается и прямо в редакторах кода, например, в  Visual Studio Code
.

Чтобы ввести команду в консоль, нужно напечатать её и нажать клавишу  Enter
.

Чтобы запустить командную строку на винде, есть 2 основных способа:

  1. Пуск → cmd.exe
  2. 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?

— система перебирает все файлы / папки в текущей директории.

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

Подняться наверх

Подняться на уровень выше:

Если нужно поднять на два уровня выше, то



И так до бесконечности  Smile :)

Можно использовать файл, лежащий на уровне выше или перейти оттуда в другую папку. Посмотрим на примере. В C:\photo\city\
у нас 2 папки: msk
и long-long-long-long-name-folder

Изменить диск. Как перейти из C:\ в D:\

Чтобы изменить диск, напишите его название и двоеточие, без «cd»

Система перейдет на диск D:\. А как перемещаться дальше, вы уже знаете!

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Ну и пока это все, что вам надо знать  Smile :)

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


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

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

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

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

 nano test_env.json 

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

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

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

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

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

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

Двоеточие запускает командный режим, а там уже вводим команду «q» (quit)
.

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Если не печатается, не паникуем! Тогда попробуйте нажать 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 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

На этой виртуалке стоит CentOs 7.

Если нужна версия ядра:

 uname -a 

См также:

Как узнать версию Linux

Как создать архив

Стандартная утилита, которая будет работать даже на «голой» системе — tar. Правда, для ее использования надо запомнить флаги. Для создания архива стандартная комбинация cvzf
:

 tar -cvzf archive.tar.gz /home/test 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

В данном примере мы упаковали директорию /home/test
, внутри которой было две картинки — 502.jpg
и 504.jpg
.

Для распаковки меняем флаг «c» на «x» и убираем «z»:

 tar -xvf archive.tar.gz 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Хотя система пишет, что распаковала «/home/test»
, на самом деле папка «test»
появляется там, где мы сейчас находимся.

Давайте разберемся, что все эти флаги означают:

  • c
    — создать архив в linux
  • x
    — извлечь файлы из архива
  • v
    — показать подробную информацию о процессе работы (без него мы бы не увидели, какие файлики запаковались / распаковались)
  • f
    — файл для записи архива
  • z
    — сжатие

Для упаковки используется опция c
C
reate, а для распаковки x
— e X
tract.

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Если очень хочется использовать 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 * — удалит все файлы в текущей директории 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Если нужно удалить папку, надо добавить флаг -r (recursive)
:

 rm -r test_folder 

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

 rm -rf test_folder --- просто все удалит без разговоров 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Опция -v
показывает имена удаляемых файлов:

 rm -rfv test_folder --- удалит папку со всем содержимым, но выведет имена удаляемых файлов 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Тут вы хотя бы можете осознать, что натворили )))

См также:

Как удалить каталог 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
.

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

По относительному пути

Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в /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
, так как я уже там.

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

 cd ~/log 

Вот пример, где я вошла под пользователем students. Исходно была в директории /var, а попала в /home/students/log
:

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

С автодополнением

Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:

(cd tab)
Может, ты имел в виду папку 1?

(tab)
Нет? Может, папку 2?

(tab)
Снова нет? Может, папку 3?

(tab)
Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?

(tab)
У меня кончились варианты, поехали сначала. Папка 1?

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

cd (Tab)(Tab)(Tab)
— система перебирает все файлы / папки в текущей директории.

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

Подняться наверх

Подняться на уровень выше:

 cd .. 

Если нужно поднять на два уровня выше, то

 cd ../.. 

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

Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd .\.», а в линуксе именно «cd ./.».

См также:

Путь к файлу в linux

И это все?

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

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

База, которая всегда нужна — pwd, cp, mv, mkdir, touch
. Остальное можно легко гуглить, как только возникает необходимость.

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

Для понимания структуры папок рекомендую статью « Структура папок ОС Linux. Какая папка для чего нужна. Что и где лежит в линуксе
»

Как изменить владельца файла

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

 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  — подробнее о скриптах


Если же приложение запускается как сервис, то все еще проще: rmdir
 d:\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 Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Чтобы удалить конкретную папку в текущей, введите команду 

:

 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»
, который там уже есть:

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Никаких ошибок, система просто выполнила команду.

См также:

Копирование файлов в 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} 

Вот и все, дальше можно играться с ними!

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

  • 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 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

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

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

Если man у программы нет, используйте флаг -h (--help)
:

 ls -h 

Как создать директорию

Используйте команду mkdir
:

 mkdir test --- создает папку с названием «test» там, где вы находитесь 

Можно и в другом месте создать папку:

 mkdir /home/test --- создает папку «test» в директории /home, даже если вы
сейчас не там 

Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.

См также:

Как создать каталог в Linux с помощью команды mkdir

Как протестировать IOPS на Linux

Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.

Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.

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

Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Используем утилиту 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 позволяет просмотреть содержимое каталога:

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Хотя лучше использовать команду сразу с флагом «l»:

 ls -l 

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».

См также:

Команда ls Linux
— подробнее о команде и всех ее флагах

Команда ls – просмотр каталога
— о команде для новичков (без перечисления всех флагов)

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

Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!

Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:

 ↑ (стрелочка «наверх») — показать последнюю команду
history — показать последние 1000 команд 

Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «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 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

 yum install mc 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

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

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

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

См также:

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

Yum, шпаргалка
— всякие опции и плагины

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

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

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

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

Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?

Чтобы узнать, куда приложение установилось, используйте whereis
(без пробела):

 whereis newman 

Откройте каталог основателя Gentoo и Linux Basics. Часть 1 (1

Об авторах

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
. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

:/>  Два коротких и один короткий и 1(один) длинный 2 (два) коротких звуковых сигнала BIOS