pwd
- вывести текущую директорию (print working directory)
ls
- вывести содержимое директории (list directory content)
ls --all --human-readable -l _путь_
ls -a -h -l _путь_
ls -ahl _путь_
ls -lah _путь_
man
- команда справка о команде (для выхода использовать: Q
)
clear
- очистить экран терминала
exit
- закрыть терминал
↑, ↓
- перемещение по введенным ранее командам
←, →
- перемещение по команде
<Ctrl + A>
- перейти в начало
Ctrl + E>
- перейти в конец
<Ctrl + Shif> + C
- скопировать выделенный текст
<Ctrl + Shift> + V
- вставить
Correct 'ваша команда' to 'предложение терминала' [nyae]?
, где [n–no; y–yes; a–abort; e–edit]
Tab
- показать возможные варианты
Tab + Tab
- выбрать первый вариант
Абсолютный путь путь от главной (корневой) директории: /home/bi/Documents/Linux_course/ /usr/bin/gedit
Относительный путь путь от текущей директории: Documents/Linux_course/file.txt
Специальные символы:
.
- текущая директория
..
- директория на уровень выше
~
- домашняя директория
*
- любое количество любых символов
?
- ровно один любой символ
mkdir путь_до_директории
- создать директорию
mkdir -p путь_до_директории
- создать директорию и ее “родителей”
touch путь_до_файла
- создать файл
cd путь_до_директории
- войти в директорию
rm путь_до_файла
- удалить файл
rm -r путь_до_директории
- удалить директорию
rm -rf путь_до_директории
- удалить директорию (без вопросов)
сp путь_до_файла1 путь_до_файла2
- скопировать файл1 в файл2
cp -r путь_до_дир1 путь_до_дир2
- скопировать дир1 в дир2
mv путь1 путь2
- переместить директорию или файл
<Ctrl+C>
- прервать выполнение
<Ctrl+Z>
- приостановить выполнение
fg
- продолжить (foreground)
bg
- продолжить в фоновом режиме (background)
program &
- запустить выполнение программы сразу в фоновом режиме
./имя-программы /полный/путь/имя-программы
- запустить выполнение программы из текущей директории
chmod +x имя_программы
- сделать программу исполняемой
users
- узнать кто сейчас находится в системе
less /etc/passwd
- узнать какие вообще есть пользователи
syslog:x:100:103::... bi:x:1000:1000:bi,,,...(UID >= 1000)
groups <имя_пользователя>
- узнать группы пользователя
ls -l <путь>
- узнать права доступа
drwxrwxr-x 2 user group ... dir
-rw-rw-r-- 1 user group ... file
Права у файлов:
r – просмотр содержимого
w – редактирование
x – запуск
Права у директорий:
r – просмотр содержимого
w – создание/удаление файлов/поддиректорий
x -
- вход в директорию
- просмотр inode файлов/поддиректорий
r (100, 4) – Read
w (010, 2) – Write
x (001, 1) – eXecute
Пример:
rw-rw-r--
owner 110, group 110, other 100
4+2+0 4+2+0 4+0+0 = 664
Изменить права доступа:
chmod [ugoa][+-][rwx] <путь>
или
chmod [octal code] <путь>
Примеры:
chmod ug+rw file.txt
chmod 777 file.txt
Изменить обладателя:
chown new_user:new_group <путь> chown zoidberg file.txt
or
chown :futurama file.txt
Cуперпользователь: root (группа root)
Сделать от имени root: sudo <действие> sudo mkdir dir sudo chmod -r dir
cat файл
- вывести содержимое файла на экран
less файл
- открыть файл на чтение q
– выход; /
– поиск; g
– в начало; G
– в конец
nano файл
- редактировать файл (<Ctrl + X>
– выход)
Программа < файл
- брать stdin из файла
Программа > файл
- выводить stdout в файл
Программа >> файл
- аналогично, но с дозаписью в файл
Программа 2> файл
- выводить stderr в файл
Программа 2>> файл
- аналогично, но с дозаписью в файл
Прогр1 | Прогр2 | ... | ПрогрN
- передать stdout Прогр1 в качестве stdin для Прогр2, далее stdout Прогр2 в качестве stdin для Прогр3 и т.д.
wget ссылка
- скачать файл по ссылке и сохранить в текущей директории
wget -P путь_до_директории ссылка
- скачать файл по ссылке и сохранить в директории заданной путем
wget -O путь_до_файла ссылка
- скачать файл по ссылке и сохранить под указанным именем
wget -c ссылка
- докачать файл по ссылке в случае обрыва связи
wget --spider ссылка
- проверить доступность файла по ссылке
wget -i текстовый_файл
- скачать несколько файлов по ссылкам из текстового файла
wget -r -l глубина ссылка
- рекурсивное скачивание файлов по ссылке на указанную глубину (по умолчанию глубина 5)
wget -r -A тип,тип,...,тип ссылка
- рекурсивное скачивание файлов только определенного типа (типов)
unzip архив.zip
- распаковать содержимое архива.zip
gunzip архив.gz
- распаковать содержимое архива.gz, файл архив.gz удалить
tar -xvf архив.tar
- распаковать архив.tar
tar -xzvf архив.tar.gz
- распаковать архив.tar.gz (с использованием gunzip)
zip архив.zip файл1 файл2 ...
- запаковать перечисленные файлы и/или папки в архив.zip
gzip файл
- запаковать файл в файл.gz, исходный файл удалить
tar -cvf архив.tar файл1 файл2 ...
- запаковать перечисленные файлы и/или папки в архив.tar (без сжатия)
gzip архив.tar
- запаковать архив.tar в архив.tar.gz, исходный архив.tar удалить
tar -zcvf архив.tar.gz файл1 файл2 ...
- запаковать перечисленные файлы и/или папки в архив.tar.gz (c сжатием при помощи gzip)
bzip2 файл
bunzip2 файл.bz2
tar -cjvf архив.tar.bz2 файл1 файл2 ...
tar -xjvf архив.tar.bz2
gzip -c файл > файл.gz
gunzip -c файл.gz > файл
bzip2 -c файл > файл.bz2
bunzip2 -c файл.bz2 > файл
find <папка> -name “<имя файла>”
- найти указанный файл в папке
find ~/ -name “file.txt”
- найти file.txt в домашней директории
find ~/ -name “*.txt”
- найти все текстовые файлы в домашней директории
grep “<строка>” <файл>
- найти строку в файле
grep -с “<строка>” <файл>
- посчитать количество вхождений строки
grep -r “<строка>” <папка>
- найти строку во всех файлах в папке
grep “hello” file.txt
- найти “hello” в файле file.txt
grep -с “123” file.txt
- вывести количество раз, которое “123” встречается в file.txt
grep -r “world” ~/
- найти “world” во всех файлах в домашней директории
Поиск:
find -iname “<имя файла>”
- не учитывать регистр
find -path “<путь>”
- найти указанный путь
find -size <размер>
- выводить файлы указанного размера
find -maxdepth <число>
- искать не больше чем на заданное число уровней вниз
find -mindepth <число>
- искать начиная с заданного числа уровней вниз
grep -l “<строка>” <файл>
- список файлов с этой строкой
grep -L “<строка>” <файл>
- список файлов, где этой строки нет
grep -n “<строка>” <файл>
- выводить номер строки в файле
grep -m <число> “<строка>” <файл>
- не искать дальше после заданного числа вхождений
grep -A <число> “<строка>” <файл>
- выводить это число строк после вхождения
grep -B <число> “<строка>” <файл>
- выводить это число строк до вхождения
grep -C <число> “<строка>” <файл>
- выводить это число строк вокруг вхождения
grep -E “<шаблон>” <файл>
- найти указанный шаблон в файле
grep -E “^go” <файл>
- найти строки, начинающиеся с “go”
grep -E “go$” <файл>
- найти строки, оканчивающиеся на “go”
grep -E “c[au]t” <файл>
- найти все слова, содержащие cut и cat
grep -E “ [a-z]ight ” <файл>
- слова из 5 букв, кончающиеся на “ight”
grep -E “ [a-z]*ight ” <файл>
- слова из 4 и более букв, кончающиеся на “ight”
grep -E “ [a-z]+ight ” <файл>
- слова из 5 и более букв, заканчивающиеся на “ight”
grep -E “ [a-z]?ight ” <файл>
- слова из 4-5 букв, заканчивающиеся на “ight”
grep -E “ [a-zA-Z]*ight ” <файл>
- слова, заканчивающиеся на “ight” (разрешены большие буквы)
cat <файл> | sed ‘инструкция’ sed ‘инструкция’ <файл>
- потоковый редактор: читает строчки из stdin (или из файла), обрабатывает их по инструкции и пишет в stdout
Если хотим писать в файл:
> <файл>
- обычное перенаправление
-i, --in-place
- перезаписать входной файл
Замена:
sed ‘s/John/Nick/g’ old.txt > new.txt
- заменить все John на Nick
sed -r ‘s/J[a-z]*n/Nick/g’ old.txt > new.txt
- заменить все слова, которые начинаются на J и заканчиваются на n на Nick
sed -n ‘2,4p’ file.txt
- вывести строки с 2 по 4
sed ‘2,4d’ file.txt
- вывести все строки кроме 2-4
sed -n ‘/[0-9]\{2\}/p’ file.txt
- вывести строки с 2 цифрами подряд
sed '2,/[Rr]ight/d' file.txt
- вывести все строки кроме со 2 до строки содержащей “right” (с большой или маленькой буквы)
Посчитать что-то в файле:
wc [что-считаем] <путь> wc -l file.txt
wc -w file.txt
wc -c file.txt
Сравнить файлы/директории:
diff [-q -r] <путь1> <путь2> diff file1.txt file2.txt | less diff -qr dir1/ dir2/
Узнать сколько места занимаем на диске:
du [--max-depth <глубина> -h] <путь> du -h ~/
du –-max-depth 1 -h .
df [-h]
- узнать сколько места занято/свободно во всей системе
Вывести часть файла:
head [-n <количество строк>] <путь> tail [-n <количество строк>] <путь>
head -n 10 file.txt
tail -n 50 file.txt | less
Работа с файлами/директориями:
можно использовать: {имя1,имя2,...}
mkdir ./{dir1,dir2,dir3}
touch ~/{file1,file2}.txt
Вывод с сортировкой:
ls --sort=[вид сортировки] -l <путь> ls –-sort=size -l ~/
ls –-sort=time -l .
Перенаправление в один файл:
&>
или &>>
program &>> both.txt
Перенаправление одного потока в другой:
2>&1
- stderr в stdout
1>&2
- stdout в stderr
Перенаправление в никуда и из ниоткуда:
/dev/null
program 2>/dev/null
cat /dev/null > file.txt
Команда входа: ssh логин@адрес_сервера -p порт
Создание ключа: ssh-keygen
Сообщить системе о ключе: ssh-add
Просмотр публичного ключа: cat ~/.ssh/id_rsa.pub
Редактирование авторизованных ключей (на сервере): nano ~/.ssh/authorised_keys
Копирование файлов:
scp -P порт логин@адрес_сервера:путь1 путь2
- с сервера (путь1) на клиента (путь2)
scp -P порт путь1 логин@адрес_сервера:путь2
- с клиента (путь1) на сервер (путь2)
Установка программ через терминал: sudo apt-get install программа
Удаление программ через терминал: sudo apt-get remove программа
Обновление ссылок на пакеты: sudo apt-get update
Обновление установленных пакетов: sudo apt-get upgrade
Обновление отдельной программы: sudo apt-get install --only-upgrade программа
Ctrl + C
- прервать выполнение
<Ctrl + Z>
- приостановить выполнение:
fg
- продолжить (foreground)
bg
- продолжить в фоновом режиме (background)
jobs
- посмотреть запущенные программы
fg %<номер>
- продолжить программу с этим номером
bg %<номер>
- продолжить программу с этим номером в фоновом режиме
ps
- посмотреть ваши процессы
top
- отслеживать процессы в реальном времени
top -u <имя пользователя>
- отслеживать процессы этого пользователя
kill <номер процесса>
- завершить процесс с этим номером
kill -9 <номер процесса>
- “убить” процесс с этим номером
free -g
- информация об оперативной памяти
nproc
- количество ядер процессора
lscpu
- детальная информация о процессоре
<Ctrl + Shift + T>
- открыть новую вкладку в терминале
Alt + <цифра>
- перейти в указанную вкладку
<Ctrl + Shift + W>
- закрыть текущую вкладку
tmux
- запустить tmux
<Ctrl + B>
- перейти в режим команд
<Ctrl + B> и C (зажать <Ctrl+B>, отпустить, затем нажать С)
- создать новую вкладку
<Ctrl + B> и <цифра>
- перейти в указанную вкладку
<Ctrl + B> и N / <Ctrl + B> и P
- перейти в следующую / предыдущую вкладку
<Ctrl + B> и X (или exit)
- закрыть вкладку
<Ctrl + B> и D
- временно выйти из tmux
tmux attach / tmux a
- вернуться в tmux
tmux list-sessions
- посмотреть список запущенных tmux’ов
Ctrl + B и PgUp (<[>на Mac)
- перейти в режим просмотра истории
PgUp, PgDown, стрелки
- перемещать курсор по истории
Esc, <Ctrl + C>
- выйти из режима просмотра истории
vim
vim файл
vim файл1 файл2 файл3 ...
:q
- выход
:help
- справка
vimtutor
- автотуториал!
1. normal
-
Режим по умолчанию
-
Любая клавиша воспринимается как команда - «Сложные» команды начинаются с
‘:’
2. insert
-
Режим ввода текста — все, что вы нажимаете, вставляется (заменяется).
-
Выход через
<Esc>
,<Ctrl+c>
3. visual
- Режим выделения
По символам:
Стрелочки или h,j,k,l
По словам:
w, W
— в начало следующего слова
e, E
— в конец следующего слова
b, B
— в начало предыдущего слова
Еще крупнее:
0,^,$
— начало строки, первый непробельный символ, конец строки
Совсем крупно:
gg
— начало файла
G
— конец
:21Enter
— перейти к строке 21
<Ctrl+D>, <Ctrl+U>
— вниз/вверх на N строчек, где N обычно пол-экрана
По символам:
x
— символ под курсором
X
— символ до курсора
**Сразу много: **
d [<кол-во>] <ход>
dе
— удалить до конца текущего слова
d$
— удалить до конца строки
d5w
— удалить пять слов
Специальная команда:
dd
— удалить строку (или, например, d10d)
i
— войти в insertion mode
a
— сдвинуть курсор вправо и войти в insertion mode
I = ^i
A = $a
o
— вставить пустую строку снизу и редактировать ее
O
— то же, но строка сверху
Скопировать:
y <кол-во> <ход>
— скопировать
yy
— скопировать строку
Вставить:
p
— вставить после
P
— вставить перед
Поиск:
/<текст>
— искать <текст> вперед
?<текст>
— назад
n
— следующее вхождение, N
— предыдущее
Замена:
:%s/<что ищем>/<на что меняем>/<флаги>
флаги: g
– много замен в строке, с
– подтверждение
Отмена/возврат:
u
— отменить последнее действие
<Ctrl+r>
— вернуть отмененное действие
Сохранение работы:
:w
— сохранить изменения
:wq
— сохранить и выйти
:q!
— выйти без сохранения
:w <файл>
— сохранить изменения в <файл>
shell
(оболочка) - интерпретатор команд
sh (Bourne shell)
– стандарт и доступна почти в любом дистрибутиве (1977)
bash (Bourne again shell)
– усовершенствованная и модернизированная вариация sh (1989)
csh, tcsh, zsh, ...
- другие известные оболочки
Создаем программу:
vim my_first_script.sh
#!/bin/bash
echo "Hello, world!"
Запускаем программу:
chmod +x my_first_script.sh ./my_first_script.sh
Переменная (variable) - именованная область памяти
**имя (name): **
-
буквы, цифры, _;
-
не может начинаться с цифры.
значение (value):
-
числа;
-
строки (если есть пробелы, то в кавычках);
-
отдельные символы.
имя=значение
path=~/Docs
$<имя> или ${<имя>}
path2=$path/file1.txt # path2=~/Docs/file1.txt
echo “Path is $path2” # Path is ~/Docs/file1.txt
echo “Path is ${path}2” # Path is ~/Docs2
Передача аргументов скрипту:
./script.sh arg1 arg2 arg3 ...
Обработка внутри скрипта:
$1
первый аргумент
$2
второй аргумент
....
$0
имя скрипта
$#
количество аргументов
var=”Первый аргумент равен $1”
echo ”Всего было передано $# аргументов”
Синтаксис:
if [[ условие ]] then
# действия, если условие истинно
fi
Условия (строки):
-z <строка> # строка пуста
-n <строка> # строка не пуста
<стр1> == <стр2> # строки равны
<стр1> != <стр2> # строки не равны
Пример:
if [[ -z $1 ]]
then
echo “Первый аргумент пустой!”
fi
if [[ $var1 == $var2 ]]
then
echo “Переменные равны!”
fi
Условия [числа (строки)]:
<число/строка> операция <число/строка>
-eq
, ==
# равно
-ne
, !=
# не равно
-lt
, <
# меньше
-le
# меньше или равно
-gt
, >
# больше
-ge
# больше или равно
операции вида “-хх” – только для чисел! операции-знаки – только для строк!
Условия (файлы):
-e <путь>
# путь существует
-f <путь>
# это файл
-d <путь>
# это директория
-s <путь>
# размер файла больше 0
-x <путь>
# файл исполняемый
Условия (логические):
!
# отрицание логического выражения
&&
# логическое «И»
||
# логическое «ИЛИ»
if [[ условие1 ]] then
# действия, если условие1 истинно elif [[ условие2 ]]
then
# действия, если условие1 ложно,
# но условие2 истинно
еlse
# действия, если оба условия ложны
fi
case переменная in знач1)
# действия, если переменная==знач1
;; знач2)
# действия, если переменная==знач2 ;;
*)
# действия, если переменная
# не равна ни одному из вариантов
esac
for переменная in список_значений do
# действия, каждый раз переменная
# принимает следующее значение
# из списка
done
break
- прервать выполнение
сontinue
- перейти на след. значение
while [[ условие ]] do
# действия, пока условие истинно
done
read переменная
- записать введенное пользователем значение в переменную
Синтаксис:
let “переменная = выражение”
Пример:
let “c = 1 + 1”
let “c = a + b”
Операции:
+, -, /, *
- стандартные
%
- остаток от деления
**
- возведение в степень
Cокращение:
let “a=a+b”
эквивалентно let “a+=b”
Синтаксис:
переменная=`программа`
Пример:
a=`echo “test”`
files=`ls ~`
0
- корректное завершение
не 0
- в процессе работы были ошибки
**Узнать код: **
$?
**Выйти с кодом: **
exit код
Пример:
touch file.txt
echo $?
Проверка кода возврата:
if `программа` then
# действия, если код 0
еlse
# действия, если код не 0
fi
Задаём функцию:
имя_функции ()
{
# действия
}
Используем функцию:
...
имя_функции
...
Функция с параметрами:
имя_функции ()
{
# действия с $1, $2, ... , $#
}
Использование функции с параметрами:
...
имя_функции аргумент1 аргумент2 ...
...
Задаём функцию с переменными:
имя_функции ()
{
var_global=1 local var_local=1
}
Используем:
имя_функции
echo $var_global # выведет 1
echo $var_local # ничего не выведет
Компактная запись функции с переменными:
имя_функции () { действ1; действ2; }
Актуально и в других конструкциях:
if [[ $var==”test ”]]; then
...
for i in 1 2 3 4 5; do
...
http://rus-linux.net/ - виртуальная энциклопедия Linux
http://www.f-notes.info/linux:linux_command - довольно обширный список полезных команд терминала
http://ru.najomi.org/_nix - полезные примеры использования команд терминала
http://forum.ubuntu.ru/ - форум русскоязычного сообщества Ubuntu
http://ru.najomi.org/vim - команды vim
http://lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt - книга создателя Linux Линуса Торвальдса "Just for fun"
Made in Siberia with <3