Как понять, что находится в папке
Команда ls позволяет просмотреть содержимое каталога:
Хотя лучше использовать команду сразу с флагом «l»:
ls -l
Такая команда выведет более читабельный список, где можно будет сразу увидеть дату создания файла, его размер, автора и выданные файлу права.
У команды есть и другие флаги, но чаще всего вы будете использовать именно «ls – l».
См также:Команда ls Linux — подробнее о команде и всех ее флагахКоманда ls – просмотр каталога — о команде для новичков (без перечисления всех флагов)
Команда mkdir в Linux системе.
Вы можете ввести mkdir в консоли.
$ mkdir
По умолчанию запуск mkdir без каких-либо параметров приведет к созданию каталога в текущем каталоге. Вот пример:
На снимке экрана мы создали каталог под названием «office«. Когда мы запустили команду mkdir, мы находились в каталоге ‘/home/pungki‘. Таким образом, новый каталог, которым является office, создается в каталоге /home/pungki.
Если вдруг мы опять попытаемся создать каталог с таким же именем. Тогда Linux обнаружит, что каталог, который предполагается создать, уже существует, инструмент сообщит нам, что он не может его создать.
Еще одним предварительным условием для создания каталога является то, что у вас должен быть доступ к местоположению, в котором он должен быть создан. Если доступа или прав нет, mkdir сообщит об ошибке.
Создание нескольких каталогов с помощью mkdir
Мы также можем создавать несколько каталогов одновременно. Допустим, мы хотим создать каталоги с именами «ubuntu«, «redhat» и «slackware«. Тогда синтаксис будет таким :
$ mkdir ubuntu redhat slackware
Установка привилегии доступа
Используя параметр -m, мы можем установить привилегию доступа для нового каталога. Вот пример:
$ mkdir -m=r-- letter
Показанная выше команда создаст каталог с именем letter и предоставит права доступа только для чтения владельцу каталога, владельцу группы каталогов и любому другому лицу.
Показ сообщения для каждого созданного каталога
Этот параметр -v будет выводить сообщение на консоль для каждого созданного каталога.
$ mkdir -v ubuntu redhat slackware
Создание каталога с датой с помощью команды mkdir
Так же вы можете создать имя каталога с датой. Это в основном полезно в сценариях командной консоли, когда требуется создать папки резервного копирования с датой. Делается это следующим образом:
$ mkdir "$(date "%d-%m-%Y")"
Output
$ mkdir «$(date »%d-%m-%Y»)»
$ ls
03-01-2022
$
Mkdir – создать директорию
mkdir [-pv] [-m режим] имя_директории ...
Программа
mkdir
создаёт директории, заданные списком операндов, в указанном порядке, используя режим прав доступа “rwxrwxrwx” (0777), модифицированный текущим значением маски прав доступа
umask(2)
Можно использовать следующие опции:
- -m права доступа
- Установить права доступа конечного создаваемой директории в соответствии с указанными в опции. Аргумент права доступа может быть задан в любом из форматов, определённых для команды chmod(1).
Если используется символьный режим, то символы “ ” и “–” интерпретируются относительно начального режима “a=rwx”.
- -p
- Создавать промежуточные каталоги по мере необходимости. Если эта опция не указана, то префикс полного пути каждого из операндов должен уже существовать. С другой стороны, если эта опция указана, то существование каталога, заданного операндом, не вызывают ошибку. Промежуточные каталоги создаются с битами прав доступа “rwxrwxrwx“‘ (0777), модифицированными маской прав доступа umask, с добавлением прав на запись и поиск для владельца.
- -v
- Выводить подробную информацию при создании каталогов, показывая их по мере создания.
Пользователь должен иметь право на запись в родительский каталог.
Утилита
mkdir
возвращает
0
в случае успешного завершения и
>0
в случае возникновения ошибки.
Смотри также:
rmdir(1)
Где тренироваться
Можно поднять виртуалку. Правда, тут сначала придется разбираться, как поднимать виртуалку )))
А можно купить облачную машину. Когда мне надо было поиграться с линуксом, я пошла на SimpleCloud (он мне в гугле одним из первых выпал и у него дружелюбный интерфейс. Но можно выбрать любой аналог) и купила самую дешманскую машину — за 150 руб в месяц. Месяца вам за глаза, чтобы «пощупать-потыркать», и этой машины с минимумом памяти тоже.
У меня был когда-то план самой платить эти 150р за то, чтобы дать машину в общий доступ. Но увы. Как я не пыталась ее огородить (закрывала команды типа ssh, ping и прочая), у меня не получилось. Всегда есть люди, которых хлебом не корми, дай испортить чужое.
Чтобы подключиться к машине, используйте инструменты:
См также:
WinSCP — что это и как использовать
Где я? как понять, где находишься
Команда pwd:
pwd --- мы ввели команду
/home/test --- ответ системы, мы находимся в домашней директории пользователя test
Очень полезная команда, когда у вас нет ничего, кроме командной строки под рукой. Расшифровывается как
P
rint
W
orking
D
irectory. Запомните ее, пригодится.
И это все?
Разумеется, нет =))
Еще полезно изучить команду find и регулярные выражения. Тестировщику как минимум надо уметь «грепать логи» — использовать grep. Но это уже остается на самостоятельный гуглеж. База, которая всегда нужна — pwd, cp, mv, mkdir, touch. Остальное можно легко гуглить, как только возникает необходимость.
Вот вам еще пара ссылочек от меня:
Для понимания структуры папок рекомендую статью «
Как запустить приложение
Некоторые приложения запускаются через скрипты. Например, чтобы запустить сервер приложения WildFly, нужно перейти в папку bin и запустить там
standalone.sh
. Файл с расширением .sh — это скрипт.
Чтобы запустить скрипт, нужно указать полный путь к нему:
/opt/cdi/jboss/bin/standalone.sh — запустили скрипт standalone.sh
Это важно! Даже если вы находитесь в той папке, где и скрипт, он не будет найден, если просто указать название sh-скрипта. Надо написать так:
./standalone.sh — запустили скрипт, если мы в той же директории
Поиск идет только в каталогах, записанных в переменную PATH. Так что если скрипт используется часто, добавляйте путь туда и вызывайте просто по названию:
standalone.sh --- запустили скрипт standalone.sh, путь к которому прописан в PATH
См также:
— подробнее о скриптах
Если же приложение запускается как сервис, то все еще проще:
service test start — запустить сервис под названием «test»
service test stop — остановить сервис
Чтобы сервис test запускался автоматически при рестарте системы, используйте команду:
chkconfig test on
Она добавит службу в автозапуск.
Как отредактировать файл
Вот честное слово, лучше делать это через графический интерфейс!
Но если такой возможности нет, чтож… Если использовать программы, которые есть везде, то у вас два варианта:
- nano — более простая программа, рассчитана на новичков
- vim — более сложная, но позволяет сделать кучу всего
Начнем с nano. Указываете имя команды и путь в файлу:
nano test_env.json
Для перемещения по файлу используйте кнопки со стрелками. После того, как закончите редактировать файл, нажмите:
Самое приятное в nano — это подсказки внизу экрана, что нажать, чтобы выйти.
А вот с vim с этим сложнее. В него легко зайти:
vim test_env.json
vi test_env.json (предшественник vim)
Войти вошли, а как выйти то, аааа? Тут начинается легкая паника, потому что ни одна из стандартных комбинаций не срабатывает:
Esc, ctrl x, ctrl q
… Если под рукой есть второй ноутбук или хотя бы телефон / планшет с интернетом, можно прогуглить «как выйти из vim», а если у вас только одно окно с терминалом, которое вы заблокировали редактором?
Делюсь секретом, для выхода надо набрать:
Двоеточие запускает командный режим, а там уже вводим команду
«q» (quit)
Исходно, когда мы открываем файл через vim, то видим его содержимое, а внизу информацию о файле:
Когда нажимаем двоеточие, оно печатается внизу:
Если не печатается, не паникуем! Тогда попробуйте нажать Esc (вернуться в нормальный режим), потом Enter (подтвердить команду), а потом снова печатайте. Фух, помогло, мы вышли оттуда!!!
Как перейти в другую директорию
С помощью команды cd:
cd <путь к директории>
Путь может быть абсолютным или относительным.
Как перенести / скопировать файл
Допустим, у нас в директории
/opt/app/log
находится
app.log
, который мы хотим сохранить в другом месте. Как перенести лог в нужное место, если нет графического интерфейса, только командная строка?
Как понять, где установлено приложение
Вот, например, для интеграции Jenkins и newman в Jenkins надо прописать полный путь к ньюману в параметре PATH. Но как это сделать, если newman ставился автоматически через команду install? И вы уже забыли, какой путь установки он вывел? Или вообще не вы ставили?
Чтобы узнать, куда приложение установилось, используйте whereis (без пробела):
whereis newman
Как посмотреть использованные ранее команды
Вот, допустим, вы выполняли какие-то сложные действия. Или даже не вы, а разработчик или админ! У вас что-то сломалось, пришел коллега, вжух-вжух ручками, magic — работает. А что он делал? Интересно же!
Или, может, вы писали длинную команду, а теперь ее надо повторить. Снова набирать ручками? Неохота! Тем более что есть помощники:
↑ (стрелочка «наверх») — показать последнюю команду
history — показать последние 1000 команд
Если надо «отмотать» недалеко, проще через стрелочку пролистать команды. Один раз нажали — система показала последнюю команду. Еще раз нажали — предпоследнюю. И так до 1000 раз (потому что именно столько хранится в истории).
Большой бонус в том, что линукс хранит историю даже при перезапуске консоли. Это вам не как в винде — скопировал текст, скопировал другой, а первый уже потерялся. А при перезагрузке системы вообще все потерялось.
Если тыкать в стрелочку не хочется, или команды была давно, можно напечатать «history» и внимательно изучить команды.
См также:История команд Linux — больше о возможностях history
Как посмотреть свободное место
Сколько места свободно на дисках
df -h
Сколько весит директория
du -sh
du -sh * --- с разбиением
Как протестировать iops на linux
Это очень полезно делать, если машину вам дает заказчик. Там точно SSD-диски? И они дают хороший iops? Если вы разрабатываете серверное приложение, и от вас требуют выдерживать нагрузку, нужно быть уверенными в том, что диски вам выдали по ТЗ.
Наше приложение активно использует диск. Поэтому, если заказчик хочет видеть хорошие результаты по нагрузке, мы хотим видеть хорошие результаты по производительности самих дисков.
Но верить админам другой стороны на слово нельзя. Если приложение работает медленно, они, разумеется, будут говорить, что у них то все хорошо, это «они» виноваты. Поэтому надо тестировать диски самим.
Я расскажу о том, как мы тестировали диски. Как проверили, сколько IOPS они выдают.
Как создать архив
Стандартная утилита, которая будет работать даже на «голой» системе — 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» появляется там, где мы сейчас находимся.
Давайте разберемся, что все эти флаги означают:
Для упаковки используется опция
cC
reate, а для распаковки
x
— e
X
tract.
Если очень хочется использовать rar, то придется изгаляться. Через yum установка не прокатит:
yum install rar
yum install unrar
Говорит, нет такого пакета:
No package rar available.
Error: Nothing to do
Придется выполнить целую пачку команд! Сначала скачиваем, разархивируем и компилируем:
Как создать директорию
Используйте команду
mkdir
mkdir test --- создает папку с названием «test» там, где вы находитесь
Можно и в другом месте создать папку:
mkdir /home/test --- создает папку «test» в директории /home, даже если вы
сейчас не там
Когда это нужно? Например, если вам надо сделать бекап логов. Создаете папку и сохраняете туда нужные логи. Или если вы читаете инструкцию по установке ПО и видите там «создать папку». Через командную строку это делается именно так.
См также:Как создать каталог в Linux с помощью команды mkdir
Как создать много тестовых папок и файлов
Допустим, у нас есть некая папка test. Создадим в ней сотню директорий и кучу файликов в каждой:
mkdir -p test/dir--{000..100}
touch test/dir--{000..100}/file-{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 строчки, а сколько боли бы принесло сделать похожую структуру через графический интерфейс!
И, главное, тестировщику полезно — может пригодиться для тестов.
Как создать файл
Командой
touch
touch app.log
Такая команда создаст пустой файл с названием «app.log». А потом уже можно открыть файл в редакторе и редактировать.
Как удалить файл
С помощью команды
rm (remove)
rm test.txt — удалит файл test.txt
Если нужно удалить все файлы в текущей директории (скажем, вычищаем старые логи перед переустановкой приложения), используйте «*»:
rm * — удалит все файлы в текущей директории
Если нужно удалить папку, надо добавить флаг -r (recursive):
rm -r test_folder
Если вы пытаетесь удалить файлы, которые уже используются в программе или доступны только для чтения, система будет переспрашивать:
А теперь представьте, что вы чистите много файлов. И на каждый система переспрашивает, и надо постоянно отвечать «да, да, да…» (y – enter, y – enter, y – enter)… Чтобы удалить все без вопросов, используйте флаг -f (force):
rm -rf test_folder --- просто все удалит без разговоров
Но учтите, что это довольно опасная команда! Вот так надоест подстверждать удаление и введешь «-rf», а директорию неправильно укажешь… Ну и все, прости-прощай нужные файлы. Аккуратнее с этой командой, особенно если у вас есть root-полномочия!
Опция -v показывает имена удаляемых файлов:
rm -rfv test_folder --- удалит папку со всем содержимым, но выведет имена удаляемых файлов
Тут вы хотя бы можете осознать, что натворили )))
См также:Как удалить каталог Linux
Как узнать ip компьютера
Если у вас настроены DNS-имена, вы подключаетесь к linux-машине именно по ним. Ведь так проще запомнить — это testbase, это bugred… Но иногда нужен именно IP. Например, если подключение по DNS работает только внутри рабочей сети, а коллега хочет подключиться из дома, вот и уточняет айпишник.
Чтобы узнать IP машины, используйте команду:
hostname -I
Также можно использовать
ifconfig
ifconfig — выведет кучу инфы, в том числе ваш внешний IP
ip a — аналог, просто иногда Ifconfig дает очень много результата, тут поменьше будет
См также:
Как узнать версию os
Сидите вы у Заказчика на линуксовой машине. Пытаетесь что-то установить — не работает. Лезете гуглить, а способы установки разные для разных операционных систем. Но как понять, какая установлена на данной машине?
Используйте команду:
cat /etc/*-release
На этой виртуалке стоит CentOs 7.
Если нужна версия ядра:
uname -a
См также:
Как узнать, как работает команда
Если вы не знаете, как работает команда, всегда можно спросить о ней саму систему, используя встроенную команду man:
man ls
Закрыть мануал можно с помощью клавиши q. Для того, кто первый раз в линуксовой консоли, это совсем не очевидно, а подсказки есть не везде.
Команда удобна тем, что не надо даже уходить из командной строки, сразу получаешь всю информацию. К тому же это всегда актуальная информация. А что вы там нагуглите — неизвестно =))
Хотя лично мне проще какую-то команду прогуглить, ведь так я получу русское описание сначала самые главные флаги (а их может быть много). Но я сама новичок в линуксе, это подход новичка. А лучше сразу учиться прокачивать навык поиска по man-у. Он вам очень пригодится для более сложных задач!
Если man у программы нет, используйте флаг -h (–help):
ls -h
Переместить директорию
Аналогично перемещению файла, команда mv
mv /opt/app/log/ /home/olga/bakup/
Переместить файл
Если надо переместить файл, а не скопировать его, то вместо
cp (copy)
используем
mv (move)
cp app.log /home/olga
↓
mv app.log /home/olga
Можно использовать относительные и абсолютные пути:
mv /opt/app/logs/app.log /home/olga — абсолютные пути указаны, команда сработает из любого места
Можно сразу переименовать файл:
mv app.log /home/olga/app_2020_03_08.log — перенесли лог в /home/olga и переименовали
Перемещение файла или каталога: mv linux
Для перемещения файла мы используем команду mv, которая является сокращением для перемещения. Одним небольшим преимуществом является то, что мы можем перемещать каталоги без необходимости указывать опцию -r.
mv [options] <source> <destination>
Создание нового каталога под названием jax.
Перемещение каталога frst2 в каталог jax и переименовали его в frst3
Перемещение файла barney в jax. Поскольку мы не указали имя пункта назначения, оно осталось прежним.
Обратите внимание, что источник и пункт назначения опять-таки являются путями и могут называться абсолютными или относительными путями.
По абсолютному пути
Либо у вас где-то записан путь, «куда идти», либо вы подсмотрели его в графическом интерфейсе (например, в
Вставляем путь в командную строку после «cd»
cd /home/student/log
Ну вот, мы переместились из домашней директории (обозначается как ~) в
/home/student/log
По относительному пути
Относительный путь — относительно вашей текущей директории, где вы сейчас находитесь. Если я уже нахожусь в
/home/student
, а мне надо в
/home/student/log
, команда будет такой:
cd log --- перейди в папку log из той директории, где ты сейчас находишься
Если мне надо из
/home/student/photo/home/student/photo/city/msk/2022/cat_1
, команда будет такой:
cd city/msk/2022/cat_1
Я не пишу
/home/student/photo
, так как я уже там.
В линуксе можно задавать путь относительно домашней папки текущего пользователя. Домашняя директория обозначается ~/. Заметьте, не ~, а именно ~/. Дальше вы уже можете указывать подпапки:
cd ~/log
Эта команда будет работать отовсюду. И переместит нас в
Подняться наверх
Подняться на уровень выше:
cd ..
Если нужно поднять на два уровня выше, то
cd ../..
И так до бесконечности =) Можно использовать файл, лежащий на уровне выше или просто сменить директорию.
Обратите внимание, что команда для линукса отличается от команды для винды — слеш другой. В винде это «cd ….», а в линуксе именно «cd ../..».
См также:Путь к файлу в linux
Примеры использования
Чтобы понять как работает утилита mkdir рассмотрим примеры.
Создание каталогов
Создадим новую папку под названием “newpapka”. Для этого напишем команду без аргументов.
mkdir newpapka
Новая папка будет принадлежать фактическому владельцу произведенного процесса. При попытке создать уже существующую результат получится ошибочным.
Создадим несколько папок newpapka2, newpapka3, newpapka4.
mkdir newpapka2 newpapka3 newpapka4
Создадим папку “papka” в “/root/katalog”.
mkdir /root/katalog/papka
Создание родительских каталогов
Родительский каталог – это каталог, в котором находится текущий подкаталог.
Зайдем в папку “primercatalog” с помощью команды “cd”.
cd /root/primercatalog
Создадим папку papka1, в papka1 – papaka2, в papka2 – papka3. Для этого будем использовать аргумент “-p” (игнорировать ошибки).
mkdir -p papka1/papka2/papka3
Предоставление доступа
Для примера воспользуемся аргументом “-m” и предоставим доступ на чтение, запись и выполнение содержимого каталогов.
mkdir -m a=rwx primer
Или так:
mkdir -m 777 primer
Более подробно о назначении прав можно посмотреть в другой статье chmod.
С автодополнением
Если вы начнете набирать название папки и нажмете Tab, система сама его подставит. Если просто нажмете Tab, ничего не вводя, система начнет перебирать возможные варианты:
— (cd tab) Может, ты имел в виду папку 1?— (tab) Нет? Может, папку 2?— (tab) Снова нет? Может, папку 3?— (tab) Снова нет? Может, файл 1 (она перебирает имена всех файлов и директорий, которые есть в той, где вы сейчас находитесь)?— (tab) У меня кончились варианты, поехали сначала. Папка 1?
cd lon(Tab) → cd long-long-long-long-name-folder — начали вводить название папки и система сама подставила имя (из тех, что есть в директории, где мы находимся).
cd (Tab)(Tab)(Tab) — система перебирает все файлы / папки в текущей директории.
Это очень удобно, когда перемещаешься в командной строке. Не надо вспоминать точное название папки, но можно вспомнить первую букву-две, это сократит количество вариантов.
Синтаксис команды linux mkdir
Синтаксис mkdir команды следующий:
Команда принимает одно или несколько имен каталогов в качестве аргументов
Скопировать директорию
Команда остается та же, «cp», только используется ключ R — «копировать папку рекурсивно»:
cp -r путь_к_папке путь_к_новому_месту
Например:
cp /opt/app/log /home/olga
Так в директории /home/olga появится папка
«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
Создание пустого файла touch linux
Многие команды, которые включают манипулирование данными в файле, имеют приятную особенность. Она заключается в том, что они будут создавать файл автоматически, если мы на него ссылаемся. Фактически мы можем использовать эту особенность для создания пустых файлов с помощью команды touch.
touch [options] <filename>
На самом деле touch — это команда, которую мы можем использовать для изменения времени доступа и изменения файла. Как правило это не требуется, но иногда, когда вы тестируете систему, которая использует время доступа к файлу или время изменения, это может быть полезно. Если мы коснемся файла, а он не существует, команда окажет нам услугу и автоматически создаст его для нас.
Удаление каталога: rmdir linux
Создать каталог довольно легко. Удалить каталог тоже легко. Однако следует отметить, что отмена командной строки в Linux невозможна. Стоит отметить что, в среде рабочего стола Linux с графическим интерфейсом обычно есть функция отмены, а в командной строке — нет. Просто будьте осторожны с тем, что вы делаете. Команда для удаления каталога — это rmdir.
rmdir [options] <Directory>
Во-первых, rmdir поддерживает опции -v и -p, аналогичные mkdir. Во-вторых, каталог должен быть пустым, прежде чем он может быть удален. Стоит отметить, есть способ обойти это правило, но об этом ниже.
Удаление файла (и непустых каталогов): rm linux
Как и в случае с rmdir, удаление файла — это действие, которое нельзя отменить, поэтому будьте осторожны. Команда для удаления файла — это rm, что означает удаление.
rm [options] <file>
Как и некоторые другие команды, представленные в этом разделе, rm имеет несколько опций, которые изменяют его поведение. Как и в случае cp, он обозначает рекурсивный. Когда rm запускается с опцией -r, это позволяет нам удалять к все файлы и каталоги, содержащиеся в них.
Хороший вариант для использования в комбинации с р является я , который выступает за интерактивным. Эта опция предложит вам перед удалением каждого файла и каталога и даст вам возможность отменить команду.
Заключение
В данной статье мы познакомились со следующими основными командами. Кратко перечислим их.
- MkDir «Make Directory» — Создать каталог.
- RmDir «Remove Directory» — Удалить каталог.
- touch — Создайте пустой файл.
- ср «Copy» — Скопируйте файл или каталог.
- mv «Move» — Переместить файл или каталог (также можно использовать для переименования).
- rm «Remove» — Удалить файл.