Все ленты — последние статьи

Cправочник команд Unix / Linux / PuTTY / SSH. Шпаргалка


 

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

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

Файлы и директории

cd /home перейти в директорию /home
cd .. перейти в директорию уровнем выше
cd ../.. перейти в директорию двумя уровнями выше
cd перейти в домашнюю директорию
cd ~user перейти в домашнюю директорию пользователя user
cd - перейти в директорию, в которой находились до перехода в текущую директорию
pwd показать текущую директорию
ls отобразить список файлов и директорий текущей директории
ls -f отобразить содержимое текущей директории с добавлением к именам символов, характеризующих тип
ls -l показать детализированное представление файлов и директорий в текущей директории
ls -a показать скрытые файлы и директории в текущей директории
ls -al форматированный список со скрытыми директориями и файлами
ls *[0-9]* показать файлы и директории содержащие в имени цифры
tree показать дерево файлов и директорий, начиная от корня (/)
lstree
mkdir dir создать директорию dir
mkdir dir1 dir2 создать две директории одновременно
mkdir -p /tmp/dir1/dir2 создать дерево директорий
rmdir dir удалить директорию с именем dir
rm file удалить file
rm -r dir удалить директорию dir
rm -f file удалить форсированно file
rm -rf dir удалить форсированно каталог dir с содержимым
rm -rf dir1 dir2 удалить форсированно две директории с содержимым
mv file1 file2 переименовать или переместить file1 в file2. Если file2 существующая директория — переместить file1 в директорию file2
cp file1 file2 скопировать файл file1 в файл file2
cp dir/* . копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1 . копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2 копировать директорию dir1 в директорию dir2
cp -r dir1 dir2 скопировать dir1 в dir2; создаст директорию dir2, если он не существует
ln -s file link создать символическую ссылку link на файл или директорию file
ln file link создать «жёсткую» (физическую) ссылку link на файл или директорию file
touch file создать файл
touch -t 1509080000 file модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Просмотр содержимого файлов

cat file вывести содержимое файла 'file' на стандартное устройство вывода
cat > file направить стандартный ввод в 'file'
tac file вывести содержимое файла 'file' в обратном порядке (последняя строка становиться первой и т.д.)
more file постраничный вывод содержимого файла 'file'
less file постраничный вывод содержимого файла 'file' с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -5 file вывести первые пять строк файла 'file'. По умолчанию выводится десять строк
tail -5 file вывести последние 5 строк файла 'file'. По умолчанию выводится десять строк
tail -f file вывести содержимое файла 'file' по мере появления в нём текста, начинает с последних десяти строк

Поиск файлов

find / -name file найти файлы и директории с именем 'file'. Поиск начать с корня (/)
find / -user user найти файл и директорию принадлежащие пользователю 'user'. Поиск начать с корня (/)
find /home/user -name "*.bin" найти все файлы и директории, имена которых заканчиваются на '.bin'. Поиск начать с '/home/user'
find /home/backups -type f -atime +30 найти все файлы в /home/backups, время последнего обращения к которым более 30 дней
find /home/backups/ -type f -mtime -90 найти все файлы в /home/backups/, созданные или изменённые в течении последних 90 дней
find /home/backups/ -type f -mtime +90 -exec rm -rfv {} \; найти и удалить старые файлы (старше 90 дней) в директории /home/backups
find /home/backups/ -type f -mmin +120 -exec rm -rfv {} \; найти и удалить старые файлы (старше 240 минут) в директории /home/backups
find /www/html -type f -exec chmod 640 {} \; установить права для всех файлов в директории /www/html
find /www/html -type d -exec chmod 750 {} \; установить права для всех поддиректорий в директории /www/html:
find /www/html -name *.rpm -exec chmod 755 {} \; найти все файлы и директории в каталоге /www/html, имена которых оканчиваются на '.rpm', и изменить права доступа к ним
find / -xdev -name "*.rpm" найти все фалы и директории, имена которых оканчиваются на '.rpm', игнорируя съёмные носители, такие как cdrom, floppy и т.п.
find file -perm -u+s найти в директории file все файлы с выставленным SUID
find /dir -type d -empty найти пустые каталоги в директории 'dir'
find /dir -type d -empty -delete найти и удалить пустые каталоги в директории 'dir'
find /dir -type d -empty -print0 | xargs -0 rmdir -p
find /dir -type d -print0 | xargs -0 rmdir -p —ignore-fail-on-non-empty
whereis file показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу 'file'
which file отображает полный путь к файлу 'file'
locate "*.ps" найти все файлы, содержащие в имени '.ps'. Предварительно рекомендуется выполнить команду 'updatedb'

Дисковое пространство

df -h отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства. Ключ -h работает не во всех *nix системах
ls -lSr |more выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр
du -sh dir подсчитывает и выводит размер, занимаемый директорией 'dir'. Ключ -h работает не во всех *nix системах
du -sk * | sort -rn отображает размер и имена файлов и директорий, с соритровкой по размеру
rpm -q -a --qf '{SIZE}t%{NAME}n' | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)
dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Остановка системы

shutdown -h now остановить систему
init 0
telinit 0
shutdown -h hours:minutes & запланировать остановку системы на указанное время
shutdown -c отменить запланированную по расписанию остановку системы
shutdown -r now перегрузить систему
reboot
logout выйти из системы

Выставление/изменение полномочий на файлы

ls -lh просмотр полномочий на файлы и директории в текущей директории
ls dir | pr -T2 -w$COLUMNS вывести содержимое директории dir и разделить вывод на три колонки
chmod ugo+rwx dir добавить полномочия на директорию dir ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права.
chmod 777 dir
chmod go-rwx dir отобрать у группы и всех остальных все полномочия на директорию dir.
chown user file назначить владельцем файла file пользователя user
chown -R user dir назначить рекурсивно владельцем директории dir пользователя user
chgrp group file для файла file сменить групу на group
chown user:group file для файла file сменить владельца на user и групу на group
find file -perm -u+s найти в директории file все файлы с выставленным SUID
chmod u+s file назначить SUID-бит файлу file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.
chmod u-s file снять SUID-бит с файла file.
chmod g+s dir назначить SGID-бит директории dir.
chmod g-s dir снять SGID-бит с директории dir.
chmod o+t dir назначить STIKY-бит директории dir. Позволяет удалять файлы только владельцам
chmod o-t dir снять STIKY-бит с директории dir

Пользователи и группы

groupadd name создать новую группу с именем name
groupdel name удалить группу name
groupmod -n new_name old_name переименовать группу old_name в new_name
useradd user создать пользователя user
useradd -c "Comments for user" -g moderator -d /home/moderator -s /bin/bash moderator создать пользователя moderator, назначить ему домашний каталог /home/moderator, в качестве shell'а /bin/bash, включить его в группу moderator и добавить комментарий Comments for user
userdel -r user удалить пользователя user вместе с его домашним каталогом
usermod -c "New comments" -g ftp -d /ftp/user -s /bin/nologin user изменить атрибуты пользователя user
passwd сменить пароль для текущего пользователя
passwd user сменить пароль пользователя user (это доступно только для root)
chage -E 2015-12-31 user установить дату окончания действия учётной записи пользователя user
pwck проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow
grpck проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group
newgrp [-] name изменяет первичную группу текущего пользователя. Если указать «-», ситуация будет идентичной той, в которой пользователь вышол из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Архивирование и сжатие файлов

bunzip2 file.bz2 разжимает файл file.gz
gunzip file.gz
gzip file сжимает файл file
bzip2 file
gzip -9 file сжать файл file с максимальным сжатием
rar a file.rar file_name создать rar-архив file.rar и включить в него файл file_name
rar a file.rar file1 file2 dir создать rar-архив file.rar и включить в него файлы file1, file2 и директорию dir
unrar x file.rar распаковать rar-архив file.rar
tar -cvf archive.tar file создать tar-архив archive.tar, содержащий файл file
tar -cvf archive.tar file1 file2 dir создать tar-архив archive.tar, содержащий файлы file1, file2 и директорию dir
tar -tf archive.tar показать содержимое архива archive.tar
tar -xvf archive.tar распаковать архив archive.tar
tar -xvf archive.tar -C /tmp распаковать архив archive.tar в /tmp
tar -cvfj archive.tar.bz2 dir создать архив и сжать его с помощью bzip2 (ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2 разжать архив и распаковать его (ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz разжать архив и распаковать его
zip file.zip file создать сжатый zip-архив file.zip и включить в него файл file
zip -r file.zip file1 file2 dir создать сжатый zip-архив file.zip и включить в него нескольких файлов и/или директорий
unzip file.zip разжать и распаковать zip-архив file.zip

Создание резервных копий (backup)

dump -0aj -f /backup/home.bak /home создать полную резервную копию директории /home в файл /backup/home.bak
dump -1aj -f /backup/home0.bak /home создать инкрементальную резервную копию директории /home в файл /backup/home0.bak
restore -if /backup/home0.bak восстановить из резервной копии /backup/home0.bak
rsync -rogpav --delete /home /backup синхронизировать /backup с /home
rsync -rogpav -e ssh --delete /home ip_address:/tmp синхронизировать через SSH-туннель
rsync -az -e ssh --delete ip_address:/home/public /home/local синхронизировать локальную директорию с удалённой директорией через SSH-туннель со сжатием
rsync -az -e ssh --delete /home/local ip_address:/home/public синхронизировать удалённую директорию с локальной директорией через SSH-туннель со сжатием
dd bs=1M if=/dev/hda | gzip | ssh user@ip_address 'dd of=hda.gz' сделать "слепок" локального диска в файл на удалённом компьютере через SSH-туннель
tar -Puf backup.tar /home/user создать инкрементальную резервную копию директории /home/user в файл backup.tar с сохранением полномочий
( cd /tmp/local/ && tar c . ) | ssh -C user@ip_address 'cd /home/share/ && tar x -p' копирование содержимого /tmp/local на удалённый компьютер через SSH-туннель в /home/share/
( tar c /home ) | ssh -C user@ip_address 'cd /home/backup && tar x -p' копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup
tar -c /tmp/source | (cd /tmp/backup ; tar -x ) копирование одной директории /tmp/source  в другую /tmp/backup с сохранением полномочий и линков
ind /home/user -name '*.txt' | \
xargs cp -av --target-directory=/home/backup/ --parents
поиск в /home/user всех файлов, имена которых оканчиваются на '.txt', и копирование их в другую директорию
find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 поиск в /var/log всех файлов, имена которых оканчиваются на '.log', и создание bzip-архива из них
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 восстановить MBR с флоппи-диска на /dev/hda