GNU/Linux учебник
Начало работы с GNU / Linux
Поиск…
Привет, мир
Введите следующий код в свой терминал и нажмите Enter :
echo "Hello World"
Это приведет к следующему результату:
Hello World
Манипуляция файлами
Файлы и каталоги (другое имя для папок) лежат в основе Linux, поэтому возможность создавать, просматривать, перемещать и удалять их из командной строки очень важна и достаточно мощна. Эти команды манипулирования файлами позволяют выполнять те же задачи, что и графический проводник файлов.
Создайте пустой текстовый файл myFile
:
touch myFile
Переименуйте myFile
в myFirstFile
:
mv myFile myFirstFile
Просмотр содержимого файла:
cat myFirstFile
Просмотр содержимого файла с пейджером (по одному экрану за раз):
less myFirstFile
Просмотрите первые несколько строк файла:
head myFirstFile
Просмотрите последние несколько строк файла:
tail myFirstFile
Редактирование файла:
vi myFirstFile
Посмотрите, какие файлы находятся в вашем текущем рабочем каталоге:
ls
Создайте пустой каталог с именем myFirstDirectory
:
mkdir myFirstDirectory
Создание каталога с несколькими путями: (создает два каталога, src и myFirstDirectory)
mkdir -p src/myFirstDirectory
Переместите файл в каталог:
mv myFirstFile myFirstDirectory/
Вы также можете переименовать файл:
user@linux-computer:~$ mv myFirstFile secondFileName
Измените текущий рабочий каталог на myFirstDirectory
:
cd myFirstDirectory
Удалить файл:
rm myFirstFile
Переместитесь в родительский каталог (который представлен как ..
):
cd ..
Удалить пустой каталог:
rmdir myFirstDirectory
Удалите непустую папку (т. Е. Содержит файлы и / или другие каталоги):
rm -rf myFirstDirectory
Обратите внимание, что при удалении каталогов, которые вы удаляете ./
not /
, вы уничтожите всю вашу файловую систему.
Сведения о файле / каталоге
Команда ls
имеет несколько параметров, которые могут использоваться вместе для отображения дополнительной информации.
Подробнее / Право
Параметр l
показывает разрешения, размер и дату последнего изменения. Поэтому, если корневой каталог содержал dir, называемый test
и файл someFile
:
user@linux-computer:~$ ls -l
Вывести что-то вроде
-rw-r--r-- 1 user users 70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4096 Jul 21 07:18 test
Разрешения находятся в формате drwxrwxrwx
. Первый символ представляет тип файла d
если это каталог -
противном случае. Следующие три rwx
- это разрешения, которые пользователь имеет над файлом, а следующие три - разрешения, которые группа имеет над файлом, а последние три - разрешения, которые все остальные имеют над файлом.
r
rwx
означает, что если файл можно прочитать, w
представляет, может ли файл быть изменен, а x
означает, что файл может быть выполнен. Если какое-либо разрешение не предоставляется a -
будет вместо r
, w
или x
.
Таким образом, user
может читать и изменять someFile.txt
но группа имеет права только на чтение.
Чтобы изменить права, вы можете использовать команду chmod ### fileName
если у вас есть права sudo. r
представлено значением 4, w
представлено 2, а x
представлено знаком 1. Таким образом, если вы хотите иметь возможность изменять содержимое в test
каталоге
Owner rwx = 4+2+1 = 7
Group r-x = 4+0+1 = 5
Other r-x = 4+0+1 = 5
Таким образом, вся команда
chmod 755 test
Теперь, когда ls -l
будет показывать что-то вроде
drwxr-xr-x 2 user users 4096 Jul 21 07:20 test
Считываемый размер
Используется в сочетании с опцией l
Опция h
показывает размеры файлов, которые могут быть прочитаны человеком. Бег
user@linux-computer:~$ ls -lh
Выпустил бы:
total 4166
-rw-r--r-- 1 user users 70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4.0K Jul 21 07:18 test
скрытый
Для просмотра скрытых файлов используйте параметр a
. Например
user@linux-computer:~$ ls -a
Список возможных
.profile
someFile.txt
test
Общий размер каталога
Для просмотра размера текущего каталога используйте параметр s
(опция h
также может использоваться, чтобы сделать размер более читаемым).
user@linux-computer:~$ ls -s
Выходы
total 4166
someFile.txt test
Рекурсивный просмотр
Допустим, у test
каталога был файл anotherFile
и вы хотели его увидеть из корневой папки, вы могли бы использовать опцию R
которая будет anotherFile
рекурсивное дерево.
user@linux-computer:~$ ls -R
Выходы
.:
someFile.txt test
./test:
anotherFile
Основные утилиты Linux
Linux имеет команду практически для любых задач, и большинство из них интуитивно понятны и легко интерпретируются.
Получение справки в Linux
команда | Юзабилити |
---|---|
man <name> | Прочтите страницу руководства <имя>. |
man <section> <name> | Прочтите страницу руководства <имя>, относящуюся к данному разделу. |
man -k <editor> | Выведите все программное обеспечение, man-страницы которого содержат ключевое слово <editor>. |
man -K <keyword> | Выводит все man-страницы, содержащие <keyword> внутри них. |
apropos <editor> | Выведите все приложения, одно из которых соответствует редактору слов. Если вы не можете вспомнить имя приложения, используйте эту команду. |
help | В оболочке Bash будет отображаться список всех доступных команд bash. |
help <name> | В оболочке Bash будет отображаться информация о команде <name> bash. |
info <name> | Просмотреть всю информацию о <имя>. |
dpkg -l | Выведите список всех установленных пакетов в системе на базе Debian. |
dpkg -L packageName | Перечислит установленные файлы и данные о пути для данного пакета на Debian. |
dpkg -l | grep -i <edit> | Верните все установленные .deb пакеты с <edit> независимо от случаев. |
less /var/lib/dpkg/available | Возвращает описания всех доступных пакетов. |
whatis vim | Перечислите однострочное описание vim. |
<command-name> --help | Отобразите информацию об использовании <имя-инструмента>. Иногда command -h также работает, но не для всех команд. |
Идентификация пользователя и кто есть кто в мире Linux
команда | Юзабилити |
---|---|
hostname | Отобразить имя хоста системы. |
hostname -f | Отображает полное доменное имя (FQDN) системы. |
passwd | Измените пароль текущего пользователя. |
whoami | Имя пользователя, вошедшего в систему на терминале. |
who | Список всех пользователей, которые вошли в систему как пользователь. |
w | Отображение текущего состояния системы, времени, продолжительности, списка пользователей, которые в настоящее время регистрируются в системе и другой информации о пользователе. |
last | Кто недавно использовал эту систему. |
last root | Когда в последний раз root регистрировался как пользователь. |
lastb | Показывает все неудачные попытки входа в систему. |
chmod | Изменение разрешений - чтение, запись, выполнение файла или каталога. |
Информация о процессе
команда | Юзабилити |
---|---|
top | Перечислите все процессы, отсортированные по их текущему использованию системных ресурсов. Отображает постоянно обновляемое отображение процессов (по умолчанию 3 секунды). Используйте клавишу q для выхода сверху. |
ps | Перечислить процессы, выполняемые в текущий сеанс оболочки |
ps -u root | Список всех процессов и команд root запущен |
ps aux | Перечислите все процессы всеми пользователями в текущей системе |
Команды управления файлами
Linux использует некоторые соглашения для настоящих и родительских каталогов. Это может быть немного запутанным для начинающих.
Всякий раз, когда вы находитесь в терминале в Linux, вы попадаете в то, что называется текущим рабочим каталогом . Часто в командной строке будет отображаться либо полный рабочий каталог, либо только последняя часть этого каталога. Ваше приглашение может выглядеть как одно из следующих:
user@host ~/somedir $
user@host somedir $
user@host /home/user/somedir $
в котором говорится, что ваш текущий рабочий каталог /home/user/somedir
.
В Linux ..
представляет родительский каталог и .
представляет текущий каталог.
Поэтому, если текущий каталог /home/user/somedir
, то cd ../somedir
не изменит рабочий каталог.
В приведенной ниже таблице перечислены некоторые из наиболее часто используемых команд управления файлами
Навигация по каталогу
команда | Полезность |
---|---|
pwd | Получить полный путь к текущему рабочему каталогу. |
cd - | Перейдите к последнему каталогу, в котором вы работали. |
cd ~ или просто cd | Перейдите в домашний каталог текущего пользователя. |
cd .. | Перейдите в родительский каталог текущего каталога (помните пространство между cd и .. ) |
Список файлов внутри каталога
команда | Полезность |
---|---|
ls -l | Список файлов и каталогов в текущем каталоге в формате long (table) (Рекомендуется использовать -l с ls для лучшей читаемости). |
ls -ld dir-name | Перечислите информацию о каталоге dir-name вместо его содержимого. |
ls -a | Список всех файлов, включая скрытые (имена файлов, начинающиеся с . Являются скрытыми файлами в Linux). |
ls -F | Добавляет символ в конце имени файла, чтобы указать его тип ( * означает исполняемый файл, / обозначает каталог, @ означает символическую ссылку, = обозначает сокет, означает именованный канал, > означает дверь). |
ls -lt | Перечислите файлы, отсортированные по последнему измененному времени, с последними измененными файлами, отображаемыми вверху (помните, что опция -l предоставляет длинный формат, который имеет лучшую читаемость). |
ls -lh | Перечислите размеры файлов в формате для чтения. |
ls -lR | Показывает все подкаталоги рекурсивно. |
tree | Будет генерировать древовидное представление файловой системы, начиная с текущего каталога. |
Файл / каталог создает, копирует и удаляет
команда | Полезность |
---|---|
cp -p source destination | Скопирует файл из source в пункт назначения . -p означает сохранение. Он сохраняет исходные атрибуты файла при копировании, как владелец файла, метка времени, группа, разрешения и т. Д. |
cp -R source_dir destination_dir | Скопирует исходный каталог в указанный адрес рекурсивно. |
mv file1 file2 | В Linux нет команды rename как таковой. Следовательно, mv перемещает / переименовывает файл1 в файл2. |
rm -i filename | Просит вас перед каждым удалением файла для подтверждения. ЕСЛИ ВЫ НАХОДИТЕСЬ В НОВОМ ПОЛЬЗОВАТЕЛЕ ЛИНГОВОЙ КОМАНДЕ LINUX, ВЫ ДОЛЖНЫ ВСЕГДА ИСПОЛЬЗОВАТЬ rm -i . Вы можете указать несколько файлов. |
rm -R dir-name | Будет рекурсивно удалять директорий dir-name . |
rm -rf dir-name | Удалит директорию dir рекурсивно, игнорируя несуществующие файлы и никогда не будет запрашивать что-либо. БУДЬТЕ ОСТОРОЖНЫ ИСПОЛЬЗОВАТЬ ЭТУ КОМАНДУ! Вы можете указать несколько каталогов. |
rmdir dir-name | Удалит директорий dir-name , если он пуст. Эта команда может удалять только пустые каталоги. |
mkdir dir-name | Создайте каталог dir-name . |
mkdir -p dir-name/dir-name | Создайте иерархию каталогов. Создавайте родительские каталоги по мере необходимости, если они не существуют. Вы можете указать несколько каталогов. |
touch filename | Создайте filename , если оно не существует, измените временную метку файла на текущее время. |
Разрешения и группы файлов / каталогов
команда | Полезность |
---|---|
chmod <specification> filename | Измените права доступа к файлу. Спецификации = u user, g group, o other, + add permission, - remove, r read, w write, x execute. |
chmod -R <specification> dir-name | Измените разрешения каталога рекурсивно. Чтобы изменить разрешение каталога и все в этом каталоге, используйте эту команду. |
chmod go=+r myfile | Добавьте разрешение на чтение для владельца и группы. |
chmod a +rwx myfile | Разрешить всем пользователям читать, записывать или выполнять myfile . |
chmod go -r myfile | Удалите разрешение чтения из группы и других. |
chown owner1 filename | Измените право собственности на файл на owner1 пользователя1. |
chgrp grp_owner filename | Измените принадлежность первичной группы имени filename к группе grp_owner . |
chgrp -R grp_owner dir-name | Измените первичное групповое право собственности на каталог dir-name на группу grp_owner рекурсивно. Чтобы изменить групповое владение каталогом и все в этом каталоге, используйте эту команду. |
Полезные ссылки
Использование терминала
Примеры в этом документе предполагают, что вы используете POSIX-совместимую оболочку (например, bash , sh , zsh , ksh ).
Большие порции функций GNU / Linux достигаются с помощью терминала. Большинство дистрибутивов Linux включают эмуляторы терминалов, которые позволяют пользователям взаимодействовать с оболочкой из среды рабочего стола. Оболочка - это интерпретатор командной строки, который выполняет команды, введенные пользователем. Bash (Bourne Again SHell) является обычной оболочкой по умолчанию среди многих дистрибутивов Linux и является оболочкой по умолчанию для macOS.
Эти ярлыки будут работать, если вы используете Bash с клавишами emacs (задано по умолчанию):
Открытый терминал
- Ctrl + Alt + T или Super + T
Движение курсора
- Ctrl + A Перейдите к началу строки, на которой вы сейчас печатаете.
- Ctrl + E Перейдите к концу строки, на которой вы сейчас печатаете.
- Ctrl + XX Перемещение между началом строки и текущей позицией курсора.
- Alt + F Переместите курсор вперед на одно слово в текущей строке.
- Alt + B Переместить курсор назад на одно слово в текущей строке.
- Ctrl + F Переместите курсор вперед по одному символу в текущей строке.
- Ctrl + B Переместить курсор назад на один символ в текущей строке.
Текстовые манипуляции
- Ctrl + U Отрежьте линию от текущей позиции до начала строки, добавив ее в буфер обмена. Если вы находитесь в конце строки, обрезайте всю строку.
- Ctrl + K Отрежьте линию от текущей позиции до конца строки, добавив ее в буфер обмена. Если вы находитесь в начале строки, обрезайте всю строку.
- Ctrl + W Удалить слово перед курсором, добавив его в буфер обмена.
- Ctrl + Y Вставить последнее сообщение из недавно сделанного буфера обмена (отменить последнее удаление в текущей позиции курсора).
- Alt + T Переведите последние два слова перед курсором.
- Alt + L Сделайте строчный регистр от курсора до конца слова.
- Alt + U Сделайте верхний регистр от курсора до конца слова.
- Alt + C Заканчивать до конца слова, начиная с курсора (целое слово, если курсор находится в начале слова).
- Alt + D Удалить до конца слова, начинающегося с курсора (целое слово, если курсор находится в начале слова).
- Alt +. Распечатывает последнее слово, записанное в предыдущей команде.
- Ctrl + T Переведите последние два символа перед курсором.
Доступ к истории
- Ctrl + R Позволяет выполнять поиск с использованием ранее использованных команд.
- Ctrl + G Оставьте режим поиска истории без запуска команды.
- Ctrl + J Позволяет скопировать текущую согласованную команду в командную строку без ее запуска, что позволяет вам вносить изменения перед запуском команды.
- Alt + R Отменить любые изменения в команде, которую вы вытащили из своей истории, если вы ее отредактировали.
- Ctrl + P Показывает последнюю выполненную команду, т.е. пройдите назад по истории команд (аналогично стрелке вверх).
- Ctrl + N Показывает следующую выполненную команду, т.е. пройдите вперед по истории команд (аналогично стрелке вниз).
Управление терминалом
- Ctrl + L Очищает экран, аналогично команде clear.
- Ctrl + S Остановить весь вывод на экране. Это полезно при запуске команд с большим количеством длинного вывода. Но это не останавливает выполнение команды.
- Ctrl + Q Возобновить вывод на экран после остановки с помощью Ctrl + S.
- Ctrl + C Завершите текущий процесс и верните приглашение.
- Ctrl + D Выйти из текущего сеанса оболочки, аналогично команде exit или logout. В некоторых командах действует как сигнал конца файла, чтобы указать, что конец файла был достигнут.
- Ctrl + Z приостанавливает (приостанавливает) текущий выполняемый процесс переднего плана, который возвращает приглашение оболочки. Затем вы можете использовать команду
bg
позволяющую этому процессу работать в фоновом режиме. Чтобы снова перенести этот процесс на передний план, используйте командуfg
. Чтобы просмотреть все фоновые процессы, используйте командуjobs
. - Вкладка « Автоматическое заполнение файлов и имен каталогов».
- Вкладка Tab Показывает все возможности, когда введенные символы не однозначно совпадают с именем файла или каталога.
Специальные символы
- Ctrl + H То же, что и Backspace.
- Ctrl + J То же, что и Return (исторически Line Feed).
- Ctrl + M То же, что и Return (исторически Возврат каретки).
- Ctrl + I То же, что и Tab.
- Символ Ctrl + G Bell.
- Ctrl + @ Null Character.
- Esc Deadkey эквивалентен модификатору Alt .
Закрыть терминал
- Ctrl + Shift + W Чтобы закрыть вкладку терминала.
- Ctrl + Shift + Q Чтобы закрыть весь терминал.
Кроме того, вы можете переключиться на vi- привязки в bash, используя set -o vi
. Используйте set -o emacs
чтобы вернуться к клавишам emacs .
Поиск файлов по шаблонам в имени / содержании
Частью и задачей кого-то, использующего командную строку Linux (shell), является поиск файлов / каталогов с определенным именем или содержащий определенный текст. Для этого вам необходимо ознакомиться с двумя командами:
Поиск файлов по названию
find /var/www -name '*.css'
Это будет распечатывать полный путь / имя файла для всех файлов в /var/www
которые заканчиваются на .css
. Пример вывода:
/var/www/html/text-cursor.css
/var/www/html/style.css
Для получения дополнительной информации:
man find
Поиск файлов, содержащих текст
grep font /var/www/html/style.css
Это напечатает все строки, содержащие font
в указанном файле. Пример вывода:
font-weight: bold;
font-family: monospace;
Другой пример:
grep font /var/www/html/
Это не работает, как вы надеялись. Ты получаешь:
grep: /var/www/html/: Is a directory
Вам нужно grep
рекурсивно, чтобы он работал, используя параметр -R
:
grep -R font /var/www/html/
Привет! Проверьте выход этого:
/var/www/html/admin/index.php: echo '<font color=red><b>Error: no dice</b></font><br/>';
/var/www/html/admin/index.php: echo '<font color=red><b>Error: try again</b></font><br/>';
/var/www/html/style.css: font-weight: bold;
/var/www/html/style.css: font-family: monospace;
Обратите внимание, что когда grep
сопоставляет несколько файлов, он префикс совпадающих строк с именами файлов. Вы можете использовать опцию -h
чтобы избавиться от этого, если хотите.
Для получения дополнительной информации:
man grep