pwd - вывести текущую директорию (print working directory)
ls - вывести содержимое директории (list directory content)
-a, --all — выдавать все файлы в каталогах, включая скрытые файлы, начинающиеся с точки.
-h, --human-readable — добавлять к каждому размеру файла букву размера, например, M для двоичных мегабайт (`мебибайт').
-l, --format=long, --format=verbose — в дополнении к имени каждого файла, выводятся тип файла, права доступа к файлу, количество ссылок на файл, имя владельца, имя группы, размер файла в байтах и временной штамп (время последней модификации файла, если не задано другое). Для файлов с временем больше чем 6 месяцев назад или больше, чем 1 час в будущее, временной штамп содержит год вместо времени дня.
Ctrl + C - прервать выполнение
Ctrl + Z - приостановить выполнение
program & - запустить выполнение программы сразу в фоновом режиме
./имя_программы - запустить выполнение программы из текущей директории
/полный/путь/имя_программы
chmod +x имя_программы - сделать программу исполняемой
cat файл - вывести содержимое файла на экран
less файл - открыть файл на чтение
nano файл - редактировать файл
Программа < файл - брать 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 тип,тип,...,тип ссылка - рекурсивное скачивание файлов только определенного типа (типов)
Еще один архиватор:
Для входа на сервер, нужно знать: 1) адрес сервера, 2) логин и пароль.
ssh логин@адрес_сервера -p порт
на клиенте хранится закрытый ключ ~/.ssh/id_rsa, ~/.ssh/id_rsa.pub
на сервере открытый ключ ~/.ssh/authorized_keys
vim vim файл vim файл1 файл2 файл3 ...
:q - выход :help - справка vimtutor - очень хороший автотуториал!
<Esc>
, <Ctrl+c>
По символам:
По словам:
Еще крупнее: 0,^,$ — начало строки, первый непробельный символ, конец строки
Совсем крупно:
gg — начало файла
G — конец
:21 <Enter>
— перейти к строке 21
<Ctrl+D>
, <Ctrl+U>
— вниз/вверх на N строчек, где N обычно пол-экрана
i — войти в insertion mode a — сдвинуть курсор вправо и войти в insertion mode I = ^i A = $a o — вставить пустую строку снизу и редактировать ее O — то же, но строка сверху
y <кол-во> <ход> — скопировать yy — скопировать строку
p — вставить после P — вставить перед
<Ctrl+r>
— вернуть отмененное действие<файл>
— сохранить изменения в <файл>
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
Пример:
if [[ -z $1 ]]
then
echo “Первый аргумент пустой!”
fi
if [[ $var1 == $var2 ]]
then
echo “Переменные равны!”
fi
<число/строка> операция <число/строка>
операции вида “-хх” – только для чисел!
операции-знаки – только для строк!
if [[ условие ]]
then
# действия, если условие истинно
еlse
# действия, если условие ложно
fi
if [[ условие1 ]]
then
# действия, если условие1 истинно
elif [[ условие2 ]]
then
# действия, если условие1 ложно,
# но условие2 истинно
еlse
# действия, если оба условия ложны
fi
case переменная in
знач1)
# действия, если переменная==знач1
;;
знач2)
# действия, если переменная==знач2
;;
*)
# действия, если переменная
# не равна ни одному из вариантов
esac
for переменная in список_значений
do
# действия, каждый раз переменная
# принимает следующее значение
# из списка
done
for переменная in список_значений
do
# действия, каждый раз переменная
# принимает следующее значение
# из списка
done
break прервать выполнение
сontinue перейти на след. значение
while [[ условие ]]
do
# действия, пока условие истинно
done
let “переменная = выражение”
Пример:
let “c = 1 + 1”
let “c = a + b”
let “a=a+b” эквивалентно let “a+=b”
переменная=программа
Пример:
a=`echo “test”`
files=`ls ~`
$?
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
...
grep -l “<строка>” <файл> список файлов с этой строкой
grep -L “<строка>” <файл> список файлов, где этой строки нет
grep -n “<строка>” <файл> выводить номер строки в файле
grep -m <число> “<строка>” <файл> не искать дальше после заданного числа вхождений
grep -A <число> “<строка>” <файл> выводить это число строк после вхождения
grep -B <число> “<строка>” <файл> выводить это число строк до вхождения
grep -C <число> “<строка>” <файл> выводить это число строк вокруг вхождения
grep -E “<шаблон>” <файл> найти указанный шаблон в файле
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
users - узнать кто сейчас в системе
less /etc/passwd
syslog:x:100:103::...
bi:x:1000:1000:bi,,,...(UID >= 1000) - узнать какие вообще есть пользователи
groups <имя_пользователя> - узнать группы пользователя
ls -l <путь> - узнать права доступа
ls -l <путь>
drwxrwxr-x 2 user group ... dir
-rw-rw-r-- 1 user group ... file
r – просмотр содержимого
w – редактирование
x – запуск
r – просмотр содержимого
w – создание/удаление файлов/поддиректорий
x – 1) вход в директорию
2) просмотр inode файлов/поддиректорий
chmod ug+rw file.txt
chmod 777 file.txt
chown zoidberg file.txt
chown :futurama file.txt
root (группа root)
sudo mkdir dir
sudo chmod -r dir
wc -l file.txt
wc -w file.txt
wc -c file.txt
diff file1.txt file2.txt | less
diff -qr dir1/ dir2/
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=size -l ~/
ls –-sort=time -l .
program &>> both.txt
program 2>/dev/null
cat /dev/null > file.txt