Перейти к основному содержимому

Список комманд Linux

type

which, whereis

Общие команды для нахождения местоположения файла в системе.

type ls
# ls is aliased to `ls --color=auto'

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

type -P ls
# /usr/bin/ls

Для показа всех возможных путей (если файлов несколько) используем ключ -a

type -a ls
# ls is aliased to `ls --color=auto'
# ls is /usr/bin/ls
# ls is /bin/ls

Мы также можем использовать тип -t для отображения типа исполняемого файла:

type -t which
# file
type -t command
# builtin
type -t type
# builtin
type -t whereis
# file
type -t ls
# alias
type -t docker
# file

иногда вы получаете путь к символической ссылке; если вы хотите отследить эту ссылку до того, где находится фактический исполняемый файл, вы можете использовать readlink и передать ему выходные данные:

which firefox
# /usr/bin/firefox

readlink -f $(which firefox)
# /usr/lib/firefox-3.6.3/firefox.sh

Посмотреть весь список UNIX команд можно тут

du

от англ. disk usage - Unix-программа для оценки занимаемого файлового пространства.

Опции du

Тут только часто используемые опции, остальные можно глянуть в wiki или в man

ОпцииОписание
-a--all выводить размер для всех файлов, не только для директорий
-hhuman-readable человеко-читаемый формат
-s--summarize Просто покажет размер занимаемой папки.
-d --max-depth Максимальная глубина подсчета папок.
--time информации о времени последней модификации любого файла в директории

Пример команды du

Подсчитаем место в текущей папке и всех подпапках на один уровень вниз + выведем в человеко читаемом формате.

alioth:/sdcard/Download $ du -d1 -h

3.5K ./downloaded_apex
6.3M ./downloaded_rom
6.3M .

df

Утилита df - disk free.

Показывает список всех файловых систем, размер, занятое и свободное пространство, точки монтирования.

ОпцииОписание
-hhuman-readable человеко-читаемый формат
-i--inodes Вместо информации о блоках выдаётся информация об использовании inode'ов.
-T --print-type Выдавать тип для каждой файловой системы.
df -Th /home
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/nvme0n1p3 ext4 698G 120G 543G 19% /home

По умолчанию размер отображается в гибибайтах. Для отображения свободного места в гигабайтах (десятичное измерение) нужно использовать ключ -BG

wc

Команда wc выводит количество строк, слов и символов в файле:

wc animals.txt
# 7 51 325 animals.txt

wc сообщает, что в файле animals.txt 7 строк, 51 слово и 325 символов. Если вы посчитаете символы, включая пробелы и табуляции, то найдете только 318 сим- волов, но wc также учитывает скрытые символы новой строки.

ОпцииОписание
-llines печатать только количество строк
-wwords печатать только количество слов
-ccharacters печатать только количество символов

wc примеры

Отобразить количество файлов в текущем каталоге:

ls -p | grep -v / | wc -l

Команда head выводит первые строки файла. Если вы опустите параметр -n, заголовок по умолчанию будет состоять из 10 строк (-n10). Выведем первые три строки файла animals.txt, используя head с параметром -n:

head -n3 animals.txt
# python Programming Python 2010 Lutz, Mark
# snail SSH, The Secure Shell 2005 Barrett, Daniel
# alpaca Intermediate Perl 2012 Schwartz, Randal

cut

Команда cut выводит одну или несколько колонок из файла.

ОпцииОписание
-ffields разделение по полям
-c'characters' определить поле по символам
-ddelimiter определить разделитель, по умолчанию TAB

Команда cut поддерживает два способа определения, что считать колонкой.

Первый — разделение по полям (-f), когда входные данные состоят из строк (полей), каждая из которых разделена одним символом табуляции. Именно такой формат используется в файле animals.txt. Команда cut из предыдущего примера печатает второе поле каждой строки благодаря опции -f2. Чтобы сократить вывод, передадим его в head. Выведем на экран только первые три строки:

Выведем на экран только первые три строки файла animals.txt:

cut -f2 animals.txt | head -n3
# Programming Python
# SSH, The Secure Shell
# Intermediate Perl

Вы также можете вырезать несколько полей, разделив их номера запятыми:

cut -f1,3 animals.txt | head -n3
# python 2010
# snail 2005
# alpaca 2012

или указав диапазон значений:

cut -f2-4 animals.txt | head -n3
# Programming Python 2010 Lutz, Mark
# SSH, The Secure Shell 2005 Barrett, Daniel
# Intermediate Perl 2012 Schwartz, Randal

Также можно определить колонку для команды cut по положению символа в строке с использованием параметра -c. Выведем первые три символа из каж- дой строки файла, которые можно указать либо через запятую (1, 2, 3), либо в формате диапазона (1–3)

Допустим, что файл animals.txt состоит из нескольких тысяч строк и вам нужно извлечь только фамилии авторов. Сначала выделим четвертое поле — имя и фамилия автора.

Затем передадим выходные данные снова в команду cut, используя параметр -d (delimiter — разделитель), чтобы изменить символ-разделитель на запятую вместо табуляции. Это позволит выделить только фамилии авторов:

cut -f4 animals.txt | cut -d, -f1
# Lutz
# Barrett
# Schwartz

sort

Команда sort сортирует строки файла в порядке возрастания (по умолчанию):

sort
ОпцииОписание
-rсортировать в порядке убывания
-nсортировать в числовом порядке

Пример:

cut -f3 animals.txt | sort -n | head -n3
# 1999
# 2005
# 2005

pushd, popd, dirs

Воспользуемся функцией оболочки, называемой стеком каталогов. Он позволяет легко перемещаться между несколькими каталогами, используя встроенные команды оболочки pushd, popd и dirs. На изучение этой функции вы потратите, может быть, 15 минут, а пользу от увеличения скорости работы будете получать всю жизнь.

pushd Поместить каталог в стек

Команда pushd (сокращение от push directory) выполняет следующие действия:

  • Добавляет заданный каталог в вершину стека.
  • Выполняет cd в этот каталог.
  • Выводит на экран стек сверху вниз для справки.

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

pwd
# /home/smith/Work/Projects/Web/src
pushd /var/www/html
# /var/www/html ~/Work/Projects/Web/src
pushd /etc/apache2
# /etc/apache2 /var/www/html ~/Work/Projects/Web/src
pushd /etc/ssl/certs
# /etc/ssl/certs /etc/apache2 /var/www/html ~/Work/Projects/Web/src
pwd
# /etc/ssl/certs

Оболочка печатает стек после каждой команды pushd. Текущий каталог — левый (верхний).

dirs Просмотр стека каталогов

Выведите на экран стек каталогов текущего экземпляра оболочки с помощью команды dirs. Она не изменяет стек:

dirs
# /etc/ssl/certs /etc/apache2 /var/www/html ~/Work/Projects/Web/src

Если вы предпочитаете печатать стек сверху вниз, используйте параметр -p:

dirs -p
# /etc/ssl/certs
# /etc/apache2
# /var/www/html
# ~/Work/Projects/Web/src

Вы можете передать вывод команде nl для нумерации строк с нуля. Выполнив команду dirs -p | nl -v0. Это можно сделать еще проще, запустив dirs -v. Этот параметр выводит на экран стек с пронумерованными строками:

dirs -v
# 0 /etc/ssl/certs
# 1 /etc/apache2
# 2 /var/www/html
# 3 ~/Work/Projects/Web/src

popd Извлечь каталог из стека

Команда popd (pop directory) противоположна команде pushd. Она делает следующее:

  • Удаляет один каталог из вершины стека.
  • Выполняет команду cd в новый верхний каталог.
  • Выводит на экран стек сверху вниз для справки.

Углубиться в стек

Что делать, если вы хотите перейти в другие каталоги в стеке, помимо двух верхних? pushd и popd принимают положительный или отрицательный целочисленный аргумент для дальнейшей работы со стеком. Команда

pushd +N

сдвигает N каталогов с вершины стека вниз, а затем переходит к новому верхнему каталогу. Отрицательный аргумент (-N) сдвигает каталоги в противоположном направлении, снизу вверх, перед выполнением cd:

dirs
# /etc/ssl/certs ~/Work/Projects/Web/src /var/www/html /etc/apache2
pushd +1
# ~/Work/Projects/Web/src /var/www/html /etc/apache2 /etc/ssl/certs
pushd +2
# /etc/apache2 /etc/ssl/certs ~/Work/Projects/Web/src /var/www/html

Таким образом, вы можете перейти к любому другому каталогу в стеке с помощью простой команды. Однако если ваш стек длинный, трудно определить числовую позицию нужного каталога. Поэтому выведите числовую позицию каждого каталога с помощью dirs -v, как вы делали в разделе «Просмотр стека каталогов» на с. 82:

dirs -v
# 0 /etc/apache2
# 1 /etc/ssl/certs
# 2 ~/Work/Projects/Web/src
# 3 /var/www/html

Чтобы переместить /var/www/html на вершину стека (и сделать его текущим каталогом), запустите pushd +3.

Чтобы перейти к каталогу в нижней части стека, запустите pushd -0:

dirs
# /etc/apache2 /etc/ssl/certs ~/Work/Projects/Web/src /var/www/html
pushd -0
# /var/www/html /etc/apache2 /etc/ssl/certs ~/Work/Projects/Web/src

Вы также можете удалить каталоги из стека, используя popd с числовым аргументом. Команда

popd +N

удаляет каталог, расположенный на позиции N, из стека, считая сверху вниз. Отрицательный аргумент (-N) означает отсчет снизу стека. Подсчет начинается с нуля, поэтому popd +1 удаляет второй каталог сверху:

env Переменные окружения

Для вывода на экран значений переменных HOME и USER запустите команду printenv:

printenv

printenv HOME
# /home/smith
printenv USER
# smith

env

команда env выведет на экран все Переменные окружения

alias

Отобразить список всех алиасов:

alias

Создать алиас

alias ll="ls -l"

zip unzip

Сжатие файлов в zip формат.

ОпцииОписание
-rсжимать рекурсивно (директории)
-mудалить изначальные файлы после сжатия
-ssplit разбиение архива на блоки определенного размера
-Fсобрать архив из разбитых ключем split архивов
-0-9плотность сжатия архива
zip -r myfiles.zip example-dir/

Создаем архив из нескольких блоков

Предположим мы хотим сжать папку example-dir которая весит 100GB Чтобы не создавать один огромный архив, часто имеет смысл разбить его на несколько, более мелких.

За это отвечает ключ -s. Например -s 5m - создаст акрихв из частей по 5 мегабайт

zip -r -s 5m myfiles.zip example-dir/
$ ls myfiles*
myfiles.z01 myfiles.z02 myfiles.z03 myfiles.z04 myfiles.z05 myfiles.zip

Если необоходимо разбить уже существующий архив existing.zip, то используется команда:

zip existing.zip --out new.zip -s 5m

Сборка из нескольких блоков один архив

Выполняется ключем -F и опцией --out

zip -F myfiles.zip --out single-archive.zip

Ну и после сборки можно распаковывать утилитой unzip

unzip single-archive.zip

Файл animals.txt

Пример файла:

animals.txt
python  Programming Python  2010    Lutz, Mark
snail SSH, The Secure Shell 2005 Barrett, Daniel
alpaca Intermediate Perl 2012 Schwartz, Randal
robin MySQL High Availability 2014 Bell, Charles
horse Linux in a Nutshell 2009 Siever, Ellen
donkey Cisco IOS in a Nutshell 2005 Boney, James
oryx Writing Word Macros 1999 Roman, Steven