Конспект: основные команды в Linux'е

Конспект составлен для лучшего запоминания после прохождения курса по основам Linux.

Сервер

ssh username@host -p port_number # Подключение к серверу
exit # Выход с сервера

# Копирование файлов
scp -P port username@host:path1 path2 # from server to client
scp -P port path1 username@host:path2 # from client to server
scp -r path1 username@host:path2 # all files recursive from client to server

Файлы

touch file.txt # создать файл
touch ~/{file1,file2}.txt # создаст два файла
echo "string" > /home/path/to/file # запись в файл 
nano /path/to/file # редактирование файла

cp -R source destination/ # скопировать 
mv path1 path2 # переместить
rm file.txt # delete file
rm *.txt # удалить все txt файлы

chmod +x file.sh # изменить разрешение файла на выполняемый
chmod -wx file.sh # запретить изменение и выполнение
chmod ur+rwx file.sh # изменить разрешение файла на выполняемый
chmod 777 file.sh # изменить разрешение файла на выполняемый
chown new_user:new_group file|dir # изменить владельца
chown :new_group file|dir # изменить владельца
chown new_user file|dir # изменить владельца

wc -params file # посчитать что-то в файле
# -l - lines count
# -w - words count
# -m - chars count
# -c - размер

cat file # вывести файл в консоль
less file # вывести файл
head [-n lines count ] file # show lines from beginning
tail [-n lines count ] file # show lines from ending

Директории

cd ~ # перейти в домашнюю директорию
pwd # показать текущий путь

ls -a -h -l -A # вывести содержимое директории
ls -ahlA # то же самое

mkdir dir_name # создать
mkdir ./dir_{1,2,three}_ # создать по маске: dir_1_, dir_2_, dir_three_
mkdir -p dir1/dir2/dir3/dir4 # cоздадутся так же все промежуточные папки

rm -r dir1 # удалить директорию с содержимым
rm -rf dir1 # удалить директорию без вопросов
rm -r dir1/* # удалить содержимое директории, оставив саму директорию
rmdir dir1 # удалить

du -hd 0 . # показать размер директории

diff -q -r path1 path2 - сравнить файлы или директории

ln file1 file2 # создать ссылку
ln -s file.txt file.txt # создать символическую ссылку

Выполнение программ

./program.sh & # запустить программу в фоновом режиме
program < file # взять данные из файла
program > file # записать
program >> file # дописать
program 2> file # записать stderr
program 2>> file # дописать stderr
program &> or &>> both.txt # вывод обоих потоков в один файл
program 2>&1
program 1>&2 # перенаправление одного потока в другой
program 2>/dev/null # перенаправление в никуда
cat /dev/null > file.txt # обновление файла, записать в файл ничего

program1 | program2 | ... | programN # pipe programs (конвейер)

Установка программ

sudo apt-get install program_name
sudo apt-get upgrade # refresh sources lists
sudo apt-get update # refresh all programs
which program_name # посмотреть где установлена программа

Выполнение программ

jobs # список выполняемых задач
fg number # продолжить выполнение в консоли
bg number # продолжить программу в фоновом режиме
top # показать текущие процессы с режиме реального времени

Процессы

ps # процессы
top # процессы в реальном времени
top -u username # процессы данного пользователя
kill number # завершить процесс
kill -9 number # убить процесс 

Ресурсы компьютера

df -h # сколько места во всей системе
free -g # оперативная память, в гигабайтах
nproc # кол-во ядер процессора
lscpu # информация о процессоре
lsblk # информация о дисках

Поиск

find ./dir/name -name "file_name"
find ~/ -name "*.txt"
find -iname file_name # без учета регистра
find -path path # найти путь
find -size size # поиск по размеру
find -maxdepth
find -mindepth

grep "string" file
grep -c "string" file # кол-во вхождений
grep -к "string" dir # искать рекурсивно
grep -l "string" file # список файлов с этой строкой
grep -L "string" file # список файлов где нет этой строки
grep -n "string" file # выводить номер строки в файле
grep -m number "string" file # не искать после заданного числа вхождений
grep -A number "string" file # выводить это число строк после вхождения
grep -B number "string" file # выводить это число строк до вхождения
grep -C number "string" file # выводить это число строк вокруг вхождения
grep -E "regexp_pattern" # поиск по регулярному выражению

cat file | sed 'instuction'
# sed 'instruction' file читает строки из stdin или из файла, обрабатывает их по инструкции и пишет в stdout
# > file - записать результат в файл
# -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
sed '2,/[Rr]ight/d' file.txt

Wget

wget link # скачать файл и положить в текущую директорию
-P dir # в какую директорию скачать
-O file_name # куда скачать и как назвать файл
-с # докачать файл
--spider ping
-i links_list.txt # передать список ссылок
-r -l depth_count # скачать файлы рекурсивно
-A type,type,type # скачать файлы только этого типа

Архивы

unzip archive.zip # extract
gunzip archive.gz # extract & delete archive
zip archive.zip file1 file2
gzip file1 # удаляет исходный файл
tar -cvf archive.tar file1 file2 # объединить файлы, для запаковки потом gzip
zip archive.zip dir/* # упаковать все файлы в директории
tar -zcvf archive.tar.gz file1 file2 # объединить файлы, со сжатием gzip
tar -xvf archive.tar # распаковать файлы
tar -xzvf archive.tar.gz # распаковать файлы

bzip2 file
bunzip2 file.bz2
tar -cjvf archive.tar.bz2 file1 file2
tar -xjvf archive.tar.bz2
, теги: linux bash