Команды Unix для тестировщиков

Поскольку многие команды как разработки, так и тестирования работают в операционных системах Unix/Linux, вам как тестировщику определенно пригодится знание самых используемых команд. А если приложите усилия и изучите команды Unix более тщательно, то сможете выполнять многие задачи без специализированных инструментов, просто в командной строке.

Содержание

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

Существует три класса доступа к файлу:

  1. Права владельца файла
  2. Права группы владельцев файла
  3. Права доступа для всех остальных

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

В символической нотации пользователь обозначается как “u”, группа – “g”, остальные – “o”.

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

Каждому отдельному классу доступа устанавливаются разрешения на чтение, запись и выполнение файла. Права доступа можно записать в символической нотации:

  1. Чтение (r)
  2. Запись (w)
  3. Выполнение (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. Уникальные строки первого файла
  2. Уникальные строки второго файла
  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».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *