Список комманд 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 выводить размер для всех файлов, не только для директорий |
-h | human-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.
Показывает список всех файловых систем, размер, занятое и свободное пространство, точки монтирования.
Опции | Описание |
---|---|
-h | human-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 также учитывает скрытые символы новой строки.
Опции | Описание |
---|---|
-l | lines печатать только количество строк |
-w | words печатать только количество слов |
-c | characters печатать только количество символов |
wc примеры
Отобразить количество файлов в текущем каталоге:
ls -p | grep -v / | wc -l
head
Команда 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
выводит одну или несколько колонок из файла.
Опции | Описание |
---|---|
-f | fields разделение по полям |
-c | 'characters' определить поле по символам |
-d | delimiter определить разделитель, по умолчанию 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 | удалить изначальные файлы после сжатия |
-s | split разбиение архива на блоки определенного размера |
-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
Пример файла:
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