java практика: команды linux терминала
java практика сайт
ссылка на github

ОСНОВНЫЕ КОМАНДЫ LINUX ТЕРМИНАЛА

Команды, вводимые пользователем в консоли терминала, выполняются командной оболочкой bash. Пользователь вводит команду, bash ищет программу, соответствующую команде, в нужных каталогах, запускает ее и передает ей введенные параметры. Количество их, потому, огромно. В статье будут описаны лишь те команды linux терминала, которые я использую чаще всего.

Итак, после того как Вы арендовали виртуальный сервер...

...Вы можете пользоваться консолью, предоставляемой сайтом...

Консоль vps сервера

...или SSH-клиентом Вашего компьютера.

В любом случае будет полезно знать несколько команд linux терминала.

Командная строка терминала

user@my-desktop:/root$ ls -la /src
|    |           |   | |   |  |
1    2           3   4 5   6  7
  где:
1 - имя пользователя
2 - имя компьютера
3 - текущая директория
4 - приглашение системы к введению команды
5 - имя команды
6 - ключи команды
7 - содержательный параметр (показать содержимое src)

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

apt update

Эта команда синхронизирует внутреннюю базу данных о пакетах с их источниками, т.е. по сути, ищет их обновления. Может выручить, если что-то вчера еще работало, а сегодня уже нет.

apt upgrade [package]

Обновляет указанный пакет. Без параметров обновляет все установленные пакеты.

apt install [package]

Программа apt ищет указанный пакет, читает служебную информацию о нем, при необходимости решает зависимости (т.е. устанавливает все другие пакеты, необходимые для работы программ, устанавливаемого пакета), а затем устанавливает сам пакет.

Ориентация на linux сервере

mv [file] [path/to/dir/]

Переместить file в директорию dir. Этой же командой можно переименовать файл.

cd [path/to/dir/]

Перейти в директорию dir, без аргументов - в домашнюю директорию.

cd /

Перейти в корневую директорию.

cd ..

Перейти в директорию на один уровень выше.

cd -

Вернуться (в ту директорию, из которой пришел).

mkdir [path/to/dir/]

Создать директорию dir.

rm [file]

Удалить file.

rm -r dir

Удалить директорию и все ее содержимое. Проходит по директории рекурсивно и удаляет все файлы (в linux директории тоже являются файлами).

ls

Показать список файлов и каталогов (содержимое текущей территории).

--all       однословный ключ
-a          однобуквенный ключ

Вывести вывести скрытые файлы.

ls -l
total 28
drwxr-xr-x 5 root root 4096 Mar 25 22:43 images
-rw-r--r-- 1 root root 1372 Mar 25 22:43 index.jsp
-rw-r--r-- 1 root root 2156 Mar 25 22:43 style.css

Отобразить подробно.

ls -a
.  ..  ico  images  index.jsp  style.css  .settings

Вывести скрытые файлы (.settings).

ls -la
total 28
drwxrwxr-x 7 root root 4096 мар 20 22:41 .
drwxrwxr-x 9 root root 4096 мар 23 22:19 ..
drwxr-xr-x 5 root root 4096 Mar 25 22:43 images
-rw-r--r-- 1 root root 1372 Mar 25 22:43 index.jsp
-rw-r--r-- 1 root root 2156 Mar 25 22:43 style.css
drwxrwxr-x 2 root root 4096 фев 28 21:14 .settings

Короткие ключи можно "склеивать" (команда выведет как открытые, так и скрытые файлы).

ls -l             обычный ключ
ls --color=none   параметрический

Ключи могут быть обычные и параметрические. К последним можно передать параметры (--color=none убрать раскраску).

pwd

Возвращает полный путь к тому месту, где мы находимся. Полный путь работает из любого места.

cd /opt   полный путь
cd srs    относительный
cd ./bin  относительный

Если путь начинается с /, то используется полный путь (перейдем в директорию opt, находящуюся в корневом каталоге), иначе ( . ) - относительный.

cp [file] [path/to/dir/]

Скопировать file в директорию dir.

cp file1 file2

file1 будет скопирован в file2. При этом, если file2 существует, программа попросит разрешения на его перезапись.

.

Указывает на текущий каталог.

..

Указывает на каталог уровнем выше.

~

Обозначает домашнюю директорию пользователя.

history

Выводит историю введенных пользователем команд. Как правило, пользуются стрелками вверх и вниз, чтобы не вводить длинную команду заново, а просто вызвать ее из истории.

Просмотр файлов

touch [file]

Создать файл с именем file. Если такой файл уже существует, то изменяет дату его создания.

cat [file]
cat [file1] >> [file2]

Вывести содержимое файла с именем file в стандартный поток вывода (на экран). Прочитать file1 и дописать его содержимое в конец file2.

less [big-file]

Прочитать файл. Используется для постраничного вывода текста.

tail [file]

Вывести последние 10 строк файла.

tail -f /var/log/auth.log

Выведет последние 10 строк файла, при этом файл не закрывается и обновляет информацию, показывая изменения в нем.

head [file1]
head -3 [file2]

Выведет первые 10 строк file1 (по умолчанию) и первые три строки file2.

find

Команда для поиска файлов в linux. Имеет много параметров и столько же возможностей.

find src -name *.java

Найти в директории src все java-файлы.

find . -size 0c

В текущей директории найти все файлы с нулевым размером.

find . -name *.tmp -ok rm {} \;

Удалить все временные файлы в текущей директории.

echo

Команда echo выводит значение переданного ей аргумента на экран.

echo $PATH

В данном случае будет выведено значение переменной PATH: список директорий, в которых будет производиться поиск бинарного файла для его выполнению по умолчанию (все команды, такие как ls, cd, echo являются скомпилированными программами, которые выполняются при их вызове).

echo first second
echo "one parameter"

Параметры, принимаемые командой, разделяются пробелами (first second). С помощью "кавычек" можно передать несколько слов как один параметр ("one parameter").

vim [file]

Открыть файл file в текстовом редакторе vim, либо создать его, если он не существует.

Взаимодействие между командами терминала

> (redirection)

Перенаправление потока вывода.

date > file.txt 
cat file.txt

Записать ( > ) текущую дату (date) в файл vile.txt (создать его при необходимости), прочитать (cat) содержимое файла и вывести на экран (стандартный поток вывода). При перенаправлении с помощью ( > ) предыдущие данные в файле file.txt будут стерты.

Читаем содержимое несуществующего файла file.txt
cat file.txt
нет такого файла                выводится в консоль
cat file.txt 2> note.txt        записывается в файл note.txt

  Номера потоков данных:
0: stdin    ввод
1: stdout   вывод               (по умолчанию
2: stderr   вывод ошибок        в консоль)

Перенаправление ( > ) по умолчанию работает с первым потоком ( > и 1> одно и то же).

>> (appending)

Одинарное перенаправление ( > ) перезаписывает файл, двойное ( >> ) - дописывает в конец.

| (pipe)

С помощью каналов можно перенаправить вывод одной команды в ввод другой команды. Это позволяет комбинировать простые команды для выполнения сложных задач.

alexandr@HONOR:~/jackartaEEWebSite$ find "src" | grep "java"
src/main/ROOT/WEB-INF/classes/HomeServlet.java
src/main/ROOT/WEB-INF/classes/ProjectsServlet.java
src/main/ROOT/WEB-INF/classes/BlogServlet.java
src/main/ROOT/WEB-INF/classes/DevopsServlet.java

Например, с помощью команды find ищем все файлы в директории src и не выводим их на экран, а передаем в программу grep. Уже с ее помощью выводим на экран только java файлы.

Разрешения файлов и папок linux

Первая буква означает тип файла:

-rw-r--r-- 1 root root 1150 Mar 25 22:43 file.java  (файл)
drwxr-xr-x 5 root root 4096 Mar 25 22:43 dir        (директория)
lrwxrwxrwx 2 root root 1096 Mar 25 22:43 link       (ссылка)

Последующие буквы разделены на три части по три символа и означают права доступа:

drwxrwxrwx root root 4096 Mar 25 22:43 dir
 |  |  |   |    |
 1  2  3   4    5
  права:
1 - владельца (тот кто создал файл)
2 - группы владельца
3 - всех остальных

4 - имя владельца
5 - название группы владельца

где:

drwxr-xr--
 ||   | |
 12   3 4
  права:
1 - на чтение (r)
2 - на запись (w)
3 - на исполнение (x - открыть директорию, запустить файл)
4 - нет прав (-)
chown

Изменить владельца файла.

ls -l
-rwxr-xr-x 1 user user 1150 Mar 25 22:43 file.class
chown root:root file.class
ls -l
-rwxr-xr-x 1 root root 1150 Mar 25 22:43 file.class

Меняем владельца файла с user на root.

chmod

Изменение прав пользователя.

-rw-r--r-- 1 root root 1150 Mar 25 22:43 file.class
chmod u+rwx,g+rw,o-rwx file.class
        |     |    |
        1     2    3
  Назначить права:
1 - пользователю      (u)
2 - группе            (g)
3 - и всем остальным  (o)

-rwxrw---- 1 root root 1150 Mar 25 22:43 file.class

+ - добавить права
- - убрать права

r - на чтение
w - на запись
x - на исполнение

Изменение прав символьным способом.

chmod 764 file.class                    изменяем права файла	
-rwxrw-r--  ... file.class              символы
 111110100                              биты
 |<-          111 = 4+2+1 = 7
     |<-      110 = 4+2+0 = 6 ->  764   права в числовом виде
       |<-    100 = 4+0+0 = 4

Символы (-rwxrw-r--) на самом деле обозначают биты (111110100). Три группы по три бита можно преобразовать в трехзначное число (764), которым обозначают права в числовом виде (абсолютный способ укащания прав доступа).

Наиболее популярные права доступа:

ls -l
-rwxr-xr-x 1 root root 1150 Mar 25 22:43 file.class
   |  |  |
   ---------------------есть право на выполнение файла

chmod -x file.class     отобрать право (-x)
ls -l
-rw-r--r-- 1 root root 1150 Mar 25 22:43 file.class
   |  |  |
   ---------------------нет прав на выполнение файла

chmod +x file.class     вернуть право (+x)

Иногда символьный метод использовать проще. Например, изменение прав у всех сразу.