Поскольку многие команды как разработки, так и тестирования работают в операционных системах Unix/Linux, вам как тестировщику определенно пригодится знание самых используемых команд. А если приложите усилия и изучите команды Unix более тщательно, то сможете выполнять многие задачи без специализированных инструментов, просто в командной строке.
Содержание
- Различные команды Unix
- Права доступа к файлам в Unix
- Команды фильтрации в Unix
- Команды сравнения файлов в Unix
- FAQ’s
Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.
Различные команды Unix
Давайте рассмотрим отдельные команды, которые вам как тестировщику скорее всего пригодятся.
- ls
- pwd
- ln
- head
- tail
- cal
- ps
- kill
- who
- whoami
- uptime
Команда ls
Эта команда выводит список файлов и каталогов. Формат вывода зависит от добавляемых опций.
Примеры:
$ ls
– вывод списка файлов в указанном каталоге$ ls -S
– вывод файлов, упорядоченных по размеру (обратите внимание, что S в верхнем регистре)$ ls -l
– вывод списка файлов с дополнительной информацией (права доступа, владелец и группа, размер, дата создания и т.р.)$ ls -a
– вывод в том числе и скрытых файлов$ ls -i
– отображение инодов для каждого файла$ ls -R
– вывод всех каталогов вместе с подкаталогами (т.е. рекурсивный вывод содержимого)
С командой ls
можно использовать символы подстановки:
?
представляет собой одиночный символ*
представляет группу символов[ ]
представляет шаблон поиска
Примеры:
$ ls ?
– вывод всех файлов, название которых состоит из одной буквы$ ls x*
– вывод всех файлов, имена которых начинаются с буквы “x”$ ls ???
– вывод файлов, имена которых состоят из трех букв$ ls *.out
– вывод файлов с расширением “out”$ ls [a-z]
– вывод файлов, имена которых состоят из одного буквенного символа в диапазоне a-z$ ls [a-z]
* – вывод файлов, имена которых начинаются с буквы в диапазоне a-z
Команда pwd
Команда $ pwd
показывает текущий рабочий каталог, т.е. каталог, в котором вы находитесь.
Команда head
Используется для отображения первых строк файла. Если не указывать число строк явно, по умолчанию выводится 10.
Также эта команда используется в конвейерах для отображения первых строк вывода предыдущей программы. Например, скомбинировав ls
с head
, можно вывести не все файлы директории, а первые 10.
Синтаксис:
$ head -n filename
Примеры:
$ head paypal.txt
– Вывод первых 10 строк файла paypal.txt.$ head -n15 paypal.txt
– Вывод первых 15 строк файла paypal.txt.$ head -n3 paypal.txt
– Вывод первых 3 строк файла paypal.txt.$ ls | head
– Вывод первых 10 имен файлов в текущей директории.
Команда tail
Эта команда полностью аналогична команде head, только используется для вывода последних строк файла. Суть команд заложена в их названиях: head – голова, tail – хвост.
Команда tail
часто применяется при работе с логами. С ее помощью можно вывести самые свежие записи, которые добавляются в конец файла лога.
Примеры:
$ tail paypal.txt
– Вывод последних 10 строк файла paypal.txt.$ tail -n5 paypal.txt
– Вывод последних 5 строк файла.$ tail -n15 paypal.txt
– Вывод последних 14 строк файла.
Команда cal
Используется для отображения календаря.
Синтаксис:
$ cal $ cal [Месяц №] [Год]
Примеры:
$ cal 2011
– Отображает календарь на 2011 год.$ cal 2 2011
– Выводит числа февраля 2011 года.
Команда ln
Команда ln (от англ. link – ссылка) создает связь между двумя файлами (второй файл должен быть новым).
Если один файл модифицирован, то это влияет на другой.
Пример:
$ ln paypal.txt funpal.txt
Команда ps
Команда ps (от англ. process status) — программа в UNIX и Unix-подобных операционных системах, выводящая отчет о работающих процессах.
Указав идентификатор процесса, можно посмотреть информацию, касающуюся именно этого процесса.
$ ps pid
Команда kill
Эта команда используется для завершения процесса.
Синтаксис:
$ kill pid
Команда who
Команда $ who
используется для отображения тех, кто работает в системе.
Команда whoami
Команда $ whoami
(т.е. who am I – “Кто я?”) выводит имя пользователя, ассоциированное с текущим эффективным идентификатором пользователя. С ее помощью можно посмотреть имя пользователя, под которым вы работаете в данный момент.
Команда uptime
Это утилита в UNIX-подобных системах, показывающая текущее время, время работы после загрузки, количество текущих пользователей в компьютерной системе и нагрузку за последние 1, 5 и 15 минут.
Команда $uptime
используется для измерения надежности и стабильности операционной системы. Она выводит время, которое компьютер работает без сбоев или необходимости перезагрузки в целях администрирования или обслуживания.
Права доступа к файлам в Unix
Существует три класса доступа к файлу:
- Права владельца файла
- Права группы владельцев файла
- Права доступа для всех остальных
Владелец файла – пользователь, который создал файл. Группой владельцев файла обычно становится первичная группа пользователя, создавшего файл, но может быть указана и другая. “Остальные” – пользователи, не являющиеся владельцем файла и не входящие в группу, установленную для этого файла.
В символической нотации пользователь обозначается как “u”, группа – “g”, остальные – “o”.
Все три класса могут иметь разные уровни доступа.
Каждому отдельному классу доступа устанавливаются разрешения на чтение, запись и выполнение файла. Права доступа можно записать в символической нотации:
- Чтение (r)
- Запись (w)
- Выполнение (x)
Допустим, права доступа к файлу записаны как rwx-rw-r--
. Чтобы это прочитать, мы мысленно разбиваем запись на три триады. Первая, rwx
, означает права доступа владельца файла. Он может читать, записывать и выполнять этот файл. Следующая триада – rw-
. Члены группы владельцев файла могут только читать и записывать файл, прав на выполнение у них нет. Остальные имеют права r--
, то есть могут только читать.
Эти триады можно представить в числовом виде. При этом чтению будет соответствовать число 4, записи – 2, выполнению – 1. Для каждого класса доступа разрешения суммируются. Таким образом, права доступа записываются тремя цифрами, по одной для владельца, группы и остальных.
Например, если в символьной нотации права записаны как rwx-rw-r--
, то в числовой это будет 764 (4 + 2 + 1, 4 + 2 и 4)
Изменение прав доступа к файлу
Для изменения прав доступа к файлу или каталогу используется команда chmod. Синтаксис:
$ chmod FAP Filename
Здесь FAP – разрешения на доступ к файлу, Filename – имя файла (или путь к нему).
Примеры:
$ chmod 000 paypal.txt
– нет разрешений ни для кого$ chmod 777 paypal.txt
– все имеют разрешения на всё$ chmod 444 paypal.txt
– все могут только читать файл$ chmod 600 paypal.txt
– только владелец может читать и записывать (но не выполнять файл), члены группы и остальные вообще не имеют доступа к файлу$ chmod 664 paypal.txt
– владелец и члены группы могут читать файл и записывать в него, остальные погут только читать. Выполнять никто не может.$ chmode 111 paypal.txt
– все могут только выполнять файл
Мы можем не задавать разрешения сразу для всех, а менять разрешения для отдельных классов доступа. При этом указывается класс (u, g, o) и +/- разрешение (r, w, x). Плюс используется для предоставления прав, минус – для снятия разрешений.
Примеры:
$ chmod u-w g-w o-r paypal.txt
- разрешение на запись отменено у владельца
- разрешение на запись отменено у членов группы
- разрешение на чтение отменено для остальных
$ chmod u+rwx g+rwx o+r paypal.txt
- разрешения на чтение, запись, выполнение добавлены владельцу файла
- разрешения на чтение, запись, выполнение добавлены для членов группы
- разрешение на чтение добавлено остальным
Команды фильтрации Unix
Unix предоставляет ряд команд для обработки данных, отсеивания и вывода нужных. Например:
- grep
- sort
- more
- cut
- wc
- uniq
Команда grep
Эта команда используется для поиска нужного шаблона в файле.
Синтаксис:
$ grep [- option] “шаблон поиска” filename
Опции:
-i
делает поиск нечувствительным к регистру-n
добавляет номера строк, содержащих совпадение с шаблоном поиска-c
подавляет обычный вывод и выводит количество строк, в которых найдено совпадение с шаблоном-v
Инвертирует поиск и выводит строки, которые не совпадают с шаблоном
Для примера давайте создадим (или перезапишем) текстовый файл. Для этого вызовем команду cat, поставим символ перенаправления вывода >
и укажем желаемое имя файла. Затем введем с клавиатуры нужный текст.
$ cat > paypal.txt добро пожаловать в unix paypal приветствует вас многопользовательская операционная система unix Добро пожаловать в мир unix
А теперь попробуйте выполнить следующие команды и проанализируйте результаты.
$ grep "welcome" paypal.txt
$ grep -i -n "welcome" paypal.txt
$ grep -i -n "welcome" paypal.txt
$ grep -i -c "welcome" paypal.txt
$ grep -i -v "welcome" paypal.txt
$ grep -i -v -n "welcome" paypal.txt > funpal.txt
Команда sort
Используется для упорядочивания чисел/текста по возрастанию/убыванию. По умолчанию сортировка производится по возрастанию.
Синтаксис:
$ sort [-option] filename
Опции:
-r
– обратный порядок сортировки (по убыванию)-n
– сортировка строк по числовому значению. Еслиn
не используется, то числа упорядочиваются по 1-й цифре-k
– указание поля, по которому нужно сортировать
Пример 1
Создадим файл с числами:
$ cat > paypal.txt 6 2 9 1 5 3
$ sort paypal.txt
строки файла сортируются и выводятся на экран в порядке возрастания$ sort -r paypal.txt > funpal.txt
строки файла сортируются в порядке убывания, а вывод перенаправляется в другой файл
Пример 2
$ cat > google.txt 176 2165 8 93 ----- ------ [ctrl+d]
$ sort google.txt
– строки сортируются в порядке возрастания, но по первым цифрам чисел$ sort -n google.txt > yahoo.txt
– сортировка по числам (не по их первым цифрам) и перенаправление результата в файл
Команда more
Эта команда фильтрации используется для отображения информации из нескольких файлов на основе n-страниц. Она позволяет определить конец файла для первого файла и начало следующего файла.
Синтаксис:
$ more [-option] file1,file2,file3, etc…
Опция -p
очищает экран и выводит следующий файл в списке файлов. Клавиша Enter извлекает следующий файл на основе %s. Клавиша
пробела извлекает все данные из следующего файла.
Пример: $ more -p paypal.txt funpal.txt
Команда cut
Используется для вырезания нужного текста из файла. Данные можно вырезать по столбцам (опция -c
) и полям (опция -f
).
Синтаксис:
$ cut [-option] filename [redirection symbol] [new filename]
Пример 1
$ cat > paypal.txt Hyderabad Secunderabad Andhra [ctrl+d]
$ cut -c1 paypal.txt
Результат:
H
S
A
$ cut -c3 paypal.txt
Результат:
d
c
d
$ cut -c1 -3 paypal.txt
Результат:
Hyd
Sec
And
Пример 2
$ cat > funpal.txt India Delhi Andhra Hyderabad Peers Net [ctrl+d]
$ cut -f1 funpal.txt
Результат:
India
Andhra
Peers
$ cut -f2 funpal.txt
Результат:
Delhi Hyderabad Net
Команда wc
Подсчитывает количество строк (опция -l), слов (опция -w), символов (опция -c) в файле.
Синтаксис:
$ wc [-option] filename
Примеры:
$ wc -l paypal.txt
$ wc -w paypal.txt
$ wc -c paypal.txt
Команда uniq
Этот фильтр используется для получения из файла однотипных или дублирующихся строк. Данные должны быть расположены по порядку.
Синтаксис:
$ uniq [-option] filename
Опции:
-d
– отображение дубликатов строк-u
– отображение уникальных строк-c
– подсчет, сколько раз каждое слово встречается в файле.
Пример:
$ cat > city.txt ameerpet ameerpet peers bhel hyderabad ameerpet peers secunderabad [ctrl+d]
$ sort city.txt > city1.txt
– данные сохранены в файл city1.txt в восходящем порядке.
А теперь попробуйте следующие команды:
$ uniq -u city1.txt
$ uniq -d city1.txt
$ uniq -c city1.txt
Команды сравнения файлов в Unix
- cmp
- diff
- comm
Команда cmp
Команда $ cmp file1 file2
сравнивает два файла. Если файлы одинаковые, то возвращается запрос. В противном случае возвращается сообщение, в котором встречается различие.
Пример: $ cmp paypal.txt funpal.txt
Команда diff
Эта команда сравнивает два файла подобно команде cmp
. Если в двух файлах найдены какие-либо различия, она выводит эти строки на экран.
Например: $ diff paypal.txt funpal.txt
Команда comm
Используется для сравнения двух отсортированных файлов и выводит данные в 3 столбца:
- Уникальные строки первого файла
- Уникальные строки второго файла
- Общие строки в двух файлах
Пример
Шаг 1: Создайте два файла с некоторыми данными
$ cat > paypal.txt risk payments ebay uv norkom $ cat > funpal.txt foodball cricket crems ebay payments
Шаг 2: Отсортируйте указанные выше файлы и сохраните данные в два других файла
$ sort paypal.txt > paypal1.txt
$ sort funpal.txt > funpal1.txt
Шаг 3: Используйте команду comm
$ comm paypal1.txt funpal1.txt
** Вывод отображается в 3 разных колонках.
FAQ’s
1. Как найти скрытые файлы в текущем каталоге?
$ ls -a
2. Как найти текущие запущенные процессы на Unix-сервере?
$ ps -ef
А если мы хотим найти конкретный процесс, мы можем использовать grep
в конвейере:
$ ps -ef | grep -i 'application'
3. Как найти процесс, который занимает максимум памяти на сервере?
$ top
Команда top сообщает нам об использовании процессора, идентификаторе процесса и других деталях.
4. Как найти исключения в лог-файле и определить количество их появлений?
$ grep 'Exception' log1.txt | wc -l
5. Как найти все файлы в текущем каталоге и подкаталогах, содержащие имя ‘log’?
$ find . -name 'log'
6. Как получить доступ к аргументам командной строки внутри сценария оболочки?
Доступ к аргументам, переданным из командной строки в shell-скрипт, можно получить внутри shell-скрипта, используя знак $
(доллар), за которым сразу следует числовая позиция аргумента в командной строке.
7. Как вывести последние 200 строк любого файла (например, лога)?
$ tail -200 filename.txt
8. Как найти оставшееся дисковое пространство на сервере unix/linux?
$ df -kl
9. Как сделать файл сценария исполняемым?
$ chmod +x *.sh
10. Как убить процесс на unix-сервере?
$ kill -9 #pid
Идентификатор процесса, pid, можно найти с помощью команды ps -ef
.
11. Как запустить задание, скажем, .job.sh, в фоновом режиме?
$ .job.sh &
12. Как проверить, запущен ли процесс с именем Informatica?
$ ps -ef|grep Informatica
13. Команда для получения текущего каталога, в котором вы работаете, – $ pwd
.
14. Эквивалент Ipconfig
в Unix (команда, предоставляющая все сведения о сети) – $ Ifconfig
.
Перевод статьи «Unix Commands for Testers».