GNU/LinuxНачало работы с GNU / Linux

Полезные ссылки

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

Примеры в этом документе предполагают, что вы используете 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

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 рекурсивно. Чтобы изменить групповое владение каталогом и все в этом каталоге, используйте эту команду.

Манипуляция файлами

Файлы и каталоги (другое имя для папок) лежат в основе 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
 

Привет, мир

Введите следующий код в свой терминал и нажмите Enter :

echo "Hello World"
 

Это приведет к следующему результату:

Hello World
 

Поиск файлов по шаблонам в имени / содержании

Частью и задачей кого-то, использующего командную строку 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