Уроки по Linux - Командная строка и горячие клавиши Версия:
Мы начнем уроки исходя из ОС Kali Linux. Это не отразится на применении команд в Ubuntu, или других ОС данного семейства, поскольку консоль и команды во всех одинаковые. работа в Линукс на 80% основана на командах через терминал ввода команд.
Горячие клавиши:
Для запуска терминала нажмите сочетание клавиш Ctrl+Alt+T
Ctrl+Alt+F1 - 1 виртуальная консоль;
Ctrl+Alt+F2 - 2 виртуальная консоль;
Ctrl+Alt+F3 - 3 виртуальная консоль;
Ctrl+Alt+F4 - 4 виртуальная консоль;
Ctrl+Alt+F5 - 5 виртуальная консоль;
Ctrl+Alt+F6 - 6 виртуальная консоль;
Ctrl+Alt+F7 - 7 виртуальная консоль, возврат в графический режим.
Ctrl+Shift+V - вставить файл или текст, аналог ctrl+v в Виндовс
Экономия набора
↑ или Ctrl+P
прокрутка недавно использованных команд в терминале вверх
↓ или Ctrl+N
прокрутка недавно использованных команд в терминале вниз
Enter
выполнение выбранной команды
Tab
авто-подстановка команд и имён файлов. Если с выбранных символов начинается только одна команда, подставится именно она, а если их несколько ,то по двойному нажатию tab выведется список всех возможных вариантов.
Ctrl+R
поиск по командам, которые вы вводили раньше. Если вам нужно повторно выполнить сложную команду, вы можете ввести её часть, а комбинация клавиш поможет найти команду целиком.
History
Команда history выводит список всех команд, которые вы вводили. Чтобы выполнить команду под номером x, просто введите «!x». Если у вас получилась слишком длинная история, - «history I less», это сделает список прокручиваемым.
Изменение текста
В Линукс мышь не работает, исключение Kali, в ней функционал аналогичен Виндовс. Используйте стрелки влево/вправо, чтобы перемещаться по строке.
Ввод с клавиатуры будет добавлять символы. Существующий текст удаляться не будет.
ctrl+a или Home
перемещает курсор в начало строки
ctrl+e или End
перемещает курсор в конец строки
ctrl+b
перемещает курсор в начало предыдущего или текущего слова
ctrl+k
удаляет текст с текущей позиции курсора до конца строки
ctrl+u
удаляет всю текущую строку
ctrl+w
удаляет слово перед курсором
┌──(kali㉿kali)-[~]
└─$
Именно так нас встречает консоль Kali, разберем, что оно обозначает:
В других ОС этого семейства мы увидим примерно следующее:
user@user-A-V3-371:~$
user - имя пользователя
@ - разделитель между учетной записью и именем компьютера user-A-V3-371 - имя компьютера, может быть любым. : - разделитель ~ - в какой папке выполняется команда, ~ папка пользователя, если выполните команду ls то получите список файлов из этой папки $ - приглашение к выполнению команды с правами простого пользователя (# будет означать приглашение на выполнение команд с правами администратора)
В нашем случае имеется ОС Kali Linux на базе Debian, в которой мы видим дефолтные логин и имя компьютера kali㉿kali
Теперь рассмотрим основные варианты команд в терминале
Файловые команды
cd ../..
перейти в директорию двумя уровнями выше
cd
перейти в домашнюю директорию
cd ~user
перейти в домашнюю директорию пользователя user
cd -
перейти в директорию, в которой находились до перехода в текущую директорию
pwd
показать текущюю директорию
mkdir dir
создать каталог dir
mkdir dir1
создать директорию с именем 'dir1'
mkdir dir1 dir2
создать две директории одновременно
mkdir -p /tmp/dir1/dir2
создать дерево директорий
rm file
удалить file
rm -r dir
удалить каталог dir
rm -f file
удалить форсированно file
rm -rf dir
удалить форсированно каталог dir
rm -f file1
удалить файл с именем 'file1'
rmdir dir1
удалить директорию с именем 'dir1'
rm -rf dir1
удалить директорию с именем 'dir1' и рекурсивно всё её содержимое
rm -rf dir1 dir2
удалить две директории и рекурсивно их содержимое
cp file1 file2
скопировать file1 в file2
cp -r dir1 dir2
скопировать dir1 в dir2; создаст каталог dir2, если он не существует
cp dir/
копировать все файлы директории dir в текущую директорию
cp -a /tmp/dir1
копировать директорию dir1 со всем содержимым в текущую директорию
cp -a dir1 dir2
копировать директорию dir1 в директорию dir2
mv dir1 new_dir
переименовать или переместить файл или директорию
mv file1 file2
переименовать или переместить file1 в file2. если file2 существующий каталог - переместить file1 в каталог file2
ln -s file1 lnk1
создать символическую ссылку на файл или директорию
ln file1 lnk1
создать «жёсткую» (физическую) ссылку на файл или директорию
touch file
создать file
touch -t 0712250000 fileditest
модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)
cat > file
направить стандартный ввод в file
more file
вывести содержимое file
head file
вывести первые 10 строк file
tail file
вывести последние 10 строк file
tail -f file
вывести содержимое file по мере роста, начинает с последних 10 строк
Архивация
tar cf file.tar files
создать tar-архив с именем file.tar содержащий files
tar xf file.tar
распаковать file.tar
tar czf file.tar.gz files
создать архив tar с сжатием Gzip
tar xzf file.tar.gz
распаковать tar с Gzip
tar cjf file.tar.bz2
создать архив tar с сжатием Bzip2
tar xjf file.tar.bz2
распаковать tar с Bzip2
gzip file
сжать file и переименовать в file.gz
gzip -d file.gz
разжать file.gz в file
bunzip2 file1.bz2
разжимает файл 'file1.gz'
gzip -9 file1
сжать файл file1 с максимальным сжатием
rar a file1.rar test_file
создать rar-архив 'file1.rar' и включить в него файл test_file
rar a file1.rar file1 file2 dir1
создать rar-архив 'file1.rar' и включить в него file1, file2 и dir1
rar x file1.rar
распаковать rar-архив
tar -cvf archive.tar file1
создать tar-архив archive.tar, содержащий файл file1
tar -cvf archive.tar file1 file2 dir1
создать tar-архив archive.tar, содержащий файл file1, file2 и dir1
tar -tf archive.tar
показать содержимое архива
tar -xvf archive.tar
распаковать архив
tar -xvf archive.tar -C /tmp
распаковать архив в /tmp
tar -cvfj archive.tar.bz2 dir1
создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -xvfj archive.tar.bz2
разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)
tar -cvfz archive.tar.gz dir1
создать архив и сжать его с помощью gzip
tar -xvfz archive.tar.gz
разжать архив и распаковать его
zip file1.zip file1
создать сжатый zip-архив
zip -r file1.zip file1 file2 dir1
создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий
unzip file1.zip
разжать и распаковать zip-архив
Работа с локальными deb-пакетами (dpkg)
dpkg -i package.deb
установить / обновить пакет
dpkg -r package_name
удалить пакет из системы
dpkg -l
показать все пакеты, установленные в систему
dpkg -l | grep httpd
среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»
dpkg -s package_name
отобразить инфрмацию о конкретном пакете
dpkg -L package_name
вывести список файлов, входящих в пакет, установленный в систему
dpkg –contents package.deb
отобразить список файлов, входящих в пакет, который ешё не установлен в систему
dpkg -S /bin/ping
найти пакет, в который входит указанный файл
Использование пакетного менеджера Apt
apt-get install package_name
установить / обновить пакет
apt-cdrom install package_name
установить / обновить пакет с cdrom'а
apt-get update
получить обновлённые списки пакетов
apt-get upgrade
обновить пакеты, установленные в систему
apt-get remove package_name
удалить пакет, установленный в систему с сохранением файлов конфигурации
apt-get purge package_name
удалить пакет, установленный в систему с удалением файлов конфигурации
apt-get check
проверить целостность зависимостей
apt-get clean
удалить загруженные архивные файлы пакетов
apt-get autoclean
удалить старые загруженные архивные файлы пакетов
Просмотр содержимого файлов
cat file1
вывести содержимое файла file1 на стандартное устройсво вывода
tac file1
вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)
more file1
постраничный вывод содержимого файла file1 на стандартное устройство вывода
less file1
постраничный вывод содержимого файла file1 на стандартное устройство вывода, но с возможностью пролистывания в обе стороны (вверх-вниз), поиска по содержимому и т.п.
head -2 file1
вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -2 file1
вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк
tail -f /var/log/messages
выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста
общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан
grep Aug /var/log/messages из файла '/var/log/messages'
отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»
grep ^Aug /var/log/messages из файла '/var/log/messages'
отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»
grep [0-9] /var/log/messages из файла '/var/log/messages'
отобрать и вывести на стандартное устройство вывода строки, содержащие цифры
grep Aug -R /var/log/*
отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже
sed 's/stringa1/stringa2/g' example.txt
в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода
sed '/^$/d' example.txt
удалить пустые строки из файла example.txt
sed '/ *#/d; /^$/d' example.txt
удалить пустые строки и комментарии из файла example.txt
echo 'esempio' | tr '[:lower:]' '[:upper:]'
преобразовать символы из нижнего регистра в верхний
sed -e '1d' result.txt
удалить первую строку из файла example.txt
sed -n '/string1/p'
отобразить только строки содержашие «string1»
sed -e 's/ *$' example.txt |удалить пустые символы в в конце каждой строки | |sed -e 's/string1g' example.txt
удалить строку «string1» из текста не изменяя всего остального
sed -n '1,8p;5q' example.txt
взять из файла с первой по восьмую строки и из них вывести первые пять
sed -n '5p;5q' example.txt
вывести пятую строку
sed -e 's/0*/0/g' example.txt
заменить последовательность из любого количества нулей одним нулём
cat -n file1
пронумеровать строки при выводе содержимого файла
cat example.txt | awk 'NR%2==1'
при выводе содержимого файла, не выводить чётные строки файла
echo a b c | awk '{print $1}'
вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
echo a b c | awk '{print $1,$3}'
вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции
paste file1 file2
объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
paste -d '+' file1 file2
объединить содержимое file1 и file2 в виде таблицы с разделителем «+»
sort file1 file2
отсортировать содержимое двух файлов
sort file1 file2 | uniq
отсортировать содержимое двух файлов, не отображая повторов
sort file1 file2 | uniq -u
отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)
sort file1 file2 | uniq -d
отсортировать содержимое двух файлов, отображая только повторяющиеся строки
comm -1 file1 file2
сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file1'
comm -2 file1 file2
сравнить содержимое двух файлов, не отображая строки принадлежащие файлу 'file2'
comm -3 file1 file2
сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt
конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата каретки)
unix2dos fileunix.txt filedos.txt
конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)
recode ..HTML < page.txt > page.html
конвертировать содержимое тестового файла page.txt в html-файл page.html
recode -l | more
вывести список доступных форматов
Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home
создать полную резервную копию директории /home в файл /tmp/home0.bak
dump -1aj -f /tmp/home0.bak /home
создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak
создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell'а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome
изменяет первичную группу текущего пользователя. Если указать «-», ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd
Выставление/изменение полномочий на файлы CHMOD
ls -lh
просмотр полномочий на файлы и директории в текущей директории
ls /tmp | pr -T5 -W$COLUMNS
вывести содержимое директории /tmp и разделить вывод на пять колонок
chmod ugo+rwx directory1
добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) - всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1
chmod go-rwx directory1
отобрать у группы и всех остальных все полномочия на директорию directory1
Изменение размеров всех изображений в папке, передача утилите «convert» из ImageMagick для создания уменьшенных копий изображений (предварительный просмотр)
swapon /dev/hda3
активировать swap-пространство, расположенное на разделе hda3
swapon /dev/hda2 /dev/hdb3
активировать swap-пространства, расположенные на разделах hda2 и hdb3
Другие полезные команды
Названия программ используемых в командах, которые могут пригодиться, нужно выучить или распечатать, а как ими пользоваться можно узнать в любой момент вызвав справку или руководство (man) в консоли
Для получения краткого руководства по программе, нужно выполнить:
man
Перемещаться можно клавишами со стрелками, а выйти из него, нажав клавишу Q. Подробнее в смотрите в man man
Для получения справки, в которой указаны ключи, нужно выполнить:
-h
--help
Поиск по man'ам
Если вы не уверены, какая команда вам нужна, попробуйте поискать по текстам мануалов.
man -k something-you-need
будет искать то, что вам нужно во всех мануалах. Попробуйте:
man -k nautilus
чтобы увидеть, как это работает. Кстати, это то же самое, что выполнить команду apropos.
man -f something-you-need
будет искать только по названиям системных мануалов. Попробуйте:
man -f gnome
. Для примера выполнение команды whatis приведёт к такому же результату.
Более привлекательные man'ы
Пользователи рабочего стола Gnome/Unity могут воспользоваться утилитой yelp предоставляющей простой GUI, выполнив команду в консоли
yelp man:<команда> или в отдельных случаяхman:/<команда>
Выполнение команд с неограниченными привилегиями
Перед большинством команд, ниже, необходимо писать команду:
sudo
Это временно даёт права супер-админа, для работы с файлами, которые не принадлежат вашему аккаунту.
Команды для работы с файлами и папками
тильда (~) выводит домашнюю папку. Если вы user, тильда (~) - /home/user.
pwd узнать, в какой директории вы находитесь в данный момент
ls покажет все файлы в директории, ls ~ покажет всё в домашней папке.
cdменяет рабочую директорию. попасть в корневой каталог: cd / попасть в домашнюю папку: cd ~
переместиться на один каталог вверх: cd .. возврат в предыдущую директорию: cd -
перемещение через несколько директорий за раз, написать полный путь папки, Например: cd /var/www
переместит вас в подкаталог /www каталога /var/. А команда: cd ~/Рабочий\ стол переместит вас на рабочий стол.
cpкопирует файл. Например, команда: cp text new создаст точную копию файла «text» и назовёт её «new», при этом «file» никуда не исчезнет.
Для копирования директории: cp -r directory new где опция -r обозначает рекурсивное копирование.
mv перемещает файл в другое место или просто переименовывает файл.
mv file textпереименует «file» в «text».
mv text ~/Рабочий\ столпереместит «text» на рабочий стол, но не переименуют его.
rm удаляет файл.
rmdir удаляет пустую папку.
rm -r удалить папку вместе со всеми вложениями
mkdir Эта команда создаёт директорию.
man прочитать встроенное описание другой команды. Например:
man man покажет описание самой этой команды.
Добавление нового пользователя
Команда создаёт нового пользователя в вашей системе с именем «newuser»:
adduser newuser
Чтобы назначить ему пароль, используйте:
passwd newuser
Построение дерева каталогов (tree)
Утилита выводит дерево каталогов в красиво отформатированном виде. Пакет tree находится в репозиториях Ubuntu, поэтому установка выполняется одной строкой:
sudo apt-get install tree
Для вывода дерева каталогов команда должна иметь следующий вид:
tree -dA test
Базовые команды, используемые при настройке сервера
После создания нового сервера необходимо предпринять несколько шагов по его базовой настройке.
Для того чтобы открыть сервер под учетной записью заведенного пользователя введите команду:
ssh -p №port demo@adress
, где:
№port — номер заданного порта при начальной настройке сервера;
demo — имя пользователя;
adress — ip-адрес сервера.
Для входа на сервер под учетной записью root используйте команду
ssh root@SERVER_IP_ADDRESS
Для создания новой учетной записи пользователя введите команду, заменив имя DEMO на любое другое необходимое имя:
adduser DEMO
Для открытия конфигурационного файла в текстовом редакторе под пользователем root:
nano /etc/ssh/sshd_config
Для замены строчки в открывшемся конфигурационном файле найдите, например, строчку Port 22 и замените число 22 на любое другое число (от 1025 и до 65536).
После внесения изменений сохраните и закройте файл, нажав сочетание клавиш CTRL-X, затем клавишу Y, затем клавишу ENTER.
Для перезапуска сервиса SSH выполните следующую команду:
service ssh restart
Для выполнения команды с привилегиями root-пользователя, перед ней следует поставить слово sudo:
sudo command_to_run
Для завершения сессии выполните команду:
exit
Для того чтобы открыть страницу с подробным описанием команды Linux, например ip address, введите команду man с именем команды:
man ip address
Запуск без аргументов и опций
При запуске команд без аргументов:
cd — возврат в домашнюю директорию текущего пользователя;
ls — вывод списка файлов и директорий в текущем каталоге.
Пример:
Выполнив команду ls без параметров, получаем список файлов в каталоге:
testk@cs49647:~$ ls
linux.jpg template ubuntu.jpg
Запуск с аргументами (параметрами)
Большинство команд рассчитано на запуск с передачей аргументов (параметров).
Наиболее распространенное использование команды cd — вызов с аргументом, который является путем к директории, в которую следует перейти:
cd /usr/bin
Запуск с опциями
Пример:
Выполнив команду ls с опциями -A, -S, -1, получаем список всех файлов, расположенных по одному на каждой строке и отсортированных по размеру:
testk@cs49647:~$ ls -AS1
.gtkrc-2.0
linux.jpg
ubuntu.jpg
template
.filter
Запуск с аргументами и опциями (одновременно)
Структура записи команды с опциями и аргументами:
команда -опции аргументы
Пример:
Команда ls -la /home выведет подробный (-l) листинг директории /home, включая скрытые файлы (-a):
testk@cs49647:~$ ls -la /home
total 12
drwxr-xr-x 3 root root 4096 Oct 14 16:13 .
drwxr-xr-x 22 root root 4096 Oct 20 10:25 ..
drwxr-xr-x 4 testk testk 4096 Oct 19 10:52 testk
Переменные окружения
Окружение/среда (environment) — это набор пар ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ, которые могут использоваться запускаемыми процессами.
Просмотр переменных окружения
Для того чтобы посмотреть свое окружение введите команду без аргументов:
env
В зависимости от конфигурации системы, вывод списка переменных окружения может занять несколько экранов, поэтому лучше использовать команду:
env | more
Просмотр значения переменной
Переменные окружения могут формироваться как из заглавных, так и из строчных символов, однако исторически повелось именовать их в верхнем регистре.
Чтобы вывести на экран значение какой-нибудь переменной окружения, достаточно набрать echo $ИМЯ_ПЕРЕМЕННОЙ, например, просмотр домашней директории пользователя, хранящийся в переменной окружения $HOME:
echo $HOME
Для перехода в домашнюю директорию следует использовать команду:
cd $HOME
Установка переменных окружения
Для установки значений переменной окружения введите команду:
VAR=value
, где
VAR — название переменной;
value — значение переменной.
Пример:
Выполнив команду var=value, после вывода на просмотр получаем результат value:
testk@cs49647:~$ var=value
testk@cs49647:~$ echo $var
value
Уважаемые пользователи! Копирование новостей разрешено только с указанием ссылки на данную новость на другом сайте. При обнаружении нарушения будут приняты меры, связанные с защитой авторских прав по пункту законов о плагиате и нарушении авторских прав.
На сайте используются только оригинальные материалы, без копирования из других источников. Все скрипты и коды здесь - наши авторские работы. Чужие работы мы бережно выносим на отдельные html странички, со ссылками на оригинальный материал. ПРИМЕРУважайте чужой труд!