Linux\Bash Работа в командной строке.
Права доступа к файлам
У файла есть три группы владельцев:
- User(пользователь)
- Group(группа)
- Other(все другие)
Каждой группе назначается права доступа:
- Read(Чтение)
- Write(Запись)
- Execute(Выполнение)
Рассмтрим пример Выолните в командной строке:
ls -l
В ответ мы получим вывод следующего вида:
-rw-r--r--. 1 user user 478 сен 6 16:42 index.html
-rwxr-xr-x. 1 user user 1244 июл 30 10:37 modules
drwxr-xr-x. 5 user user 4096 сен 10 15:58 Pictures
drwxr-xr-x. 2 user user 4096 янв 24 2021 Public
drwxr-xr-x. 13 user user 4096 авг 17 09:12 Repos
Разрберем запись:
drwxr-xr--
Нотация имеет группы свойств:
-
d
или-
укзание того, что перед нами файл или папка. -
rwx
- позволяет пользователю читать(r
), писать(w
), исполнять(x
) этот файл -
r-x
- позволяет группе пользователей читать(r
), но не писать в него (-
), испольнять(x
) -
r-x
- позволяет всем остальным читать(r
), но не писать в него (-
), не испольнять(-
)
---
- подразумевает что у владельца, группы или остальных нет никаких разрешений вообще.
CHMOD
Довольно часто для смены прав доступа используется команда chmod
.
chmod permissions filenam
Используя табилцу ниже файлу или папке можно дать различные права:
Число | Тип разрешения | Символ |
---|---|---|
0 | Отсутствует разрешение на | --- |
1 | Выполнение | --x |
2 | Запись | -w- |
3 | Выполнение+ Запись | -wx |
4 | Чтение | r-- |
5 | Чтение+Выполнение | r-x |
6 | Чтение+Запись | rw- |
7 | Чтение+Запись+ВЫполнение | rwx |
CHOWN
Команда для изменения владельца файла\каталога
chown user:group filename
Возьмем пример выше
-rwxr-xr-x. 1 user user 1244 июл 30 10:37 modules
Если мы воспользуемся командой chown:
chown test:group modules
То в результате user
должен смениться на test
, и user
на group
, и при проверке прав мы увидим следующие изменения:
-rwxr-xr-x. 1 test group 1244 июл 30 10:37 modules
Перенаправление ввода
">"
Этот символ используется для перенаправления вывода(stdout)
Пример:
la -al > file.txt
В этом случае всё что выведется командой la -al
будет записано в file.txt
, при этом на экране ничего не отобразиться.
Можно рассмотреть следующий пример:
cat music.mp3 > /dev/audio
Команда cat
прочитает файл music.mp3
и вместо того чтобы вывести его в терминал отправит в устройство /dev/audio
, если у вас в системе есть такое устройство то вы услышите этот файл из колонок.
"<"
Этот символ используется для перенаправления ввода(stdin)
Пример:
mail -s "subject" to-address < Filename
Команда прикрепит Filename
к письму и отправит его по адресу to-address
.
Перенаправление ошибок
Всякий раз когда выполняется программа открыто 3 файла:
- standard input -- FD0
- standard output -- FD1
- standard error -- FD2
FD - файловый дескриптор. В Linux / Unix все является файлом. Обычный файл, каталоги и даже устройства являются файлами. Каждый файл имеет связанный номер, называемый дескриптором файла (FD).
примеры использования:
- Вывод ошибок программы
myprogram
перенаправляется в errorfile. В этом случае ошибки не отображются при выполнении командыmyprogram
.
myprogram 2>errorsfile
- С помощью
find
мы ищем в текущем каталоге.
фалй начинающийся сmy
. При этом все ошибки описка отправляются в файлerror.log
find . -name 'my*' 2>error.log
- Команда выводит список файлов в двух директориях
Documents
иABC
, в свою очередь2>&1
переводи вывод ошибок в стандартный вывод. То естьstderr
перенаправляется вstdout
. И весь вывод записывается в файл dirlist
ls Documents ABC> dirlist 2>&1
Pipeline
Pipeline - комбинация команд передающая аргументы друг другу после выполнения. Т.е. вывод команды является вводом следующей команды
Например, ниже мы передаем вывод команды cat
на вход команды less
:
cat filename | less
grep
Создадим файл example.txt
, внесем в него какие-либо строки и выведем его:
cat example.txt
Команда grep
выведет искомые данные. Синтаксис использования: grep ИСКОМОЕ_ВЫРАЖЕНИЕ
:
cat example.txt | grep dog
Команда grep
пройдется по выводу команды cat
и отразит только строки содержащие dog
.
Ключи команды grep
:
ключь | функция |
---|---|
-v | Показывает все строки, которые не соответствуют искомой строке |
-с | Отображает только количество совпадающих строк |
-n | Показывает совпадающую строку и ее номер |
-l | Показывает только имя файла со строкой |
sort
Сортирует содержимое в алфавитном порядке
Команда sort
выведет искомые данные. Синтаксис использования: sort ФАЙЛ
.
sort example.txt
Ниже приведен вариант использования sort
в комбинации с командой grep
в pipeline:
cat example.txt | grep -v a | sort -r
grep
выведет все строки не содержащие букву a
, а затем отсортирует их в обратном алфавитном порядке.
Регулярные выражения
Регулярные выражения — это специальные символы, которые помогают искать данные, соответствующие сложным шаблонам. Регулярные выражения сокращаются до ‘regexp’ или ‘regex’.
Основные Регулярные выражения
Символ | Описания |
---|---|
, | заменяет любой символ |
^ | соответствует началу строки |
$ | соответствует концу строки |
* | соответствует нулю или более раз предыдущего символа |
\ | Представляют специальные символы |
() | Группы регулярных выражений |
? | Соответствует ровно одному символу |
Интервал в регулярных выражениях
Выражение | Описание |
---|---|
{n} | Соответствует предыдущему символу, появляющемуся n раз точно |
{n,m} | Соответствует предыдущему символу, появляющемуся n раз, но не более чем m |
{n,} | Соответствует предыдущему символу, только если он появляется n раз или более |
Примеры использования:
Создадим файл example.txt
и внесем в него какой-то текст
Чтобы посмотреть содержимое выполним:
cat example.txt
Выведет все строки содержащие букву a
cat example.txt | grep a
Выведет все строки начинающиеся с буквы a
cat example.txt | grep ^a
Выведет все строки заканчивающиеся на t
cat example.txt | grep t$
Выведет строки где символ p
идет 2 раза подряд
cat example.txt | grep -E p\{2}