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
# действия, если оба условия ложны
ficase переменная in знач1)
# действия, если переменная==знач1
;; знач2)
# действия, если переменная==знач2 ;;
*)
# действия, если переменная
# не равна ни одному из вариантов
esacfor переменная in список_значений do
# действия, каждый раз переменная
# принимает следующее значение
# из списка
donebreak - прервать выполнение
сontinue - перейти на след. значение
while [[ условие ]] do
# действия, пока условие истинно
doneread переменная - записать введенное пользователем значение в переменную
Синтаксис:
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