freeCodeCamp/guide/russian/linux/the-command-prompt/index.md

23 KiB
Raw Blame History

title localeTitle
The Command Prompt Командная строка

Командная строка

В качестве одного из старейших пользовательских интерфейсов (UI) командная строка (aka shell , terminal , console , tty ) была реализована многими способами.

Это привело к тому, что несколько слов использовались взаимозаменяемо в современном разговоре, которые фактически имеют несколько разные значения.


Оглавление


Очень, очень короткая история

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

В то же время ранние компьютеры, такие как ENIAC, были запрограммированы с помощью какого-то оборудования, например коммутаторов, циферблатов или патч-кабелей. По мере того, как компьютеры продвигались вперед, требовалось лучше вводить / выводить (IO), и поэтому широко используемые телетайп-машины были преобразованы для использования.

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

TTY-принтеры в конечном итоге были заменены экранами на основе катода Ray Tube (CRT), которые также использовались в телевизорах до того, как были доступны LCD и плазмы. Интересно, что современные компьютеры Linux все еще можно контролировать с помощью машины tty!

Нажмите на изображение ниже, чтобы перейти к короткому видео Youtube.


Cегодня

Сегодня пользователи Linux и Unix по-прежнему используют одни и те же термины, но с небольшими различиями. Доступны реальные и виртуальные терминалы, а к виртуальным терминалам можно получить доступ с помощью Alt + Ctrl + [F1-F12] .

В графических пользовательских средах (GUI) пользователи могут получить доступ к командной строке с помощью эмулятора терминала , который предоставляет функции tty, но внутри окна. Для пользователей Linux доступно множество эмуляторов терминалов, таких как xterm , kterm и rxvt .

Доступные из них будут зависеть от того, какой дистрибутив Linux (дистрибутив, для краткости) вы используете, и его значения по умолчанию. Обратитесь к менеджеру пакетов, чтобы установить другие. Пользователи Windows могут использовать PuTTY или другие утилиты для подключения к системе Linux.

Оболочка

Shell s - это программы, которые интерпретируют команды.

Их несколько, таких как B ourne A gain SH ell (BASH), C Shell (csh / tcsh) и Z SHell (zsh).

BASH

Наиболее распространенной оболочкой по умолчанию в Linux является BASH, но каждый пользователь может временно или постоянно переключаться на любую другую доступную оболочку. Оболочка полностью доступна для сценариев, что означает, что концепции программирования можно комбинировать с оболочками и системными утилитами для создания более сложных функций.

Команды, введенные в командной строке, могут быть встроены в оболочку, например, cd , exit или export .

Они также могут поступать из внешних программ, а в случае большинства дистрибутивов Linux - с помощью инструментов Gnu .

Ниже приведены наиболее распространенные команды.

| Команда | Использование | | -------- | ----------------------------------------- | | cd | изменить текущий каталог | | ls | список файлов в текущем каталоге | | mv | перемещать файлы и каталоги | | man | открытая командная документация | | mkdir | создать каталог | | rmdir | удалить директора | | touch | создать пустой файл | | rm | удалить файлы | | ln | создавать ссылки на файлы и каталоги | | chown | изменить право собственности на файлы и каталоги | | chmod | изменить разрешения | | find | найти файлы | | cat | записывает файлы в стандартный вывод | | less | позволяет прокручивать стандартный вход | | grep | поиск матчей в текстовом формате | | diff | показать различия между файлами | | passwd | изменить пароль |

Получать помощь

Немедленная помощь доступна для команд в одном или нескольких местах.

Добавить --help после команды.

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

Его результат аналогичен команде man , но man используется перед командой, для которой вы хотите руководство.

Команда info - это третий вариант справки, который используется как man .

ls --help 
 
 man ls 
 
 info ls 

Подсказка

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

Последнее важно осознать. Обычно последний символ в подсказке, вы увидите значение $ , которое указывает на обычные пользовательские привилегии.

Если у вас есть права root , принадлежащие системному администратору, вы обычно увидите # в качестве последнего символа. При просмотре форумов и получении помощи в Интернете команды, которые вы должны вводить, часто будут показаны с этим символом.

Вам не нужно вводить его!

Например:

$ ls -l 

означает, что вы ls -l в обычном приглашении.

# apt-get install node 

означает, что вы apt-get install node с правами администратора. Как вы повышаете свои привилегии, зависит от вашего дистрибутива Linux.

Получение корня

авторизоваться

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

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

Судо

Добавьте «sudo» перед командой, чтобы переключиться на S uper U ser и DO (SUDO). Вот как Ubuntu и его производные настроены так, чтобы разрешить доступ администратора, и предоставляется по каждой команде.

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

sudo apt-get update 

За исключением первого созданного пользователя на определенных дистрибутивах, пользователи должны быть добавлены в специальный список (найденный в /etc/sudoers ), чтобы использовать sudo.

Это делается с помощью команды visudo .

Вы никогда не должны редактировать файл sudoers с помощью обычного текстового редактора!

visudo будет следить за тем, чтобы вы не блокировали себя из своей собственной системы.

су

su , как и sudo , позволяет вам переключиться на другого пользователя, за исключением того, что по умолчанию вы получите другое приглашение в качестве пользователя, к которому вы переключились.

По своему усмотрению su переключит вас в корневое приглашение, но с переменными среды текущего пользователя, такими как $HOME для вашей домашней папки и $PATH для системного пути.

Это может привести к неожиданным результатам, и если вы хотите использовать su для переключения на другого пользователя, добавьте дефис после команды:

su - 

Это полностью переключит вас на корневую подсказку.

Пользовательское имя может быть добавлено в команду для переключения на этого пользователя, но для этого потребуется пароль пользователя.

sudo можно использовать в сочетании с su чтобы администратор мог переключиться на любого пользователя.

myUser@linux $ su - otherUsername 
 Password: (typed my password) 
 su: Authentication failure 
 
 myUser@linux $ sudo su - otherUsername 
 Password: (typed my password) 
 otherUsername@Linux $ 

Относительные и абсолютные пути

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

Родственник

Расположение файла по отношению к текущему каталогу.

В оболочке есть два относительных оператора пути . и ..

Первый, . означает текущий каталог, поэтому cat file.txt и cat ./file.txt - это то же самое, если file.txt находится в текущем каталоге.

Другой - это .. и означает один каталог в дереве.

Поэтому, если вы находитесь в /home/user/projects/project-a и выпустите команду cd .. вы измените на /home/user/projects .

Если в каталоге проектов есть подкаталоги с именем project-a , project-b , project-c , и вы были в каталоге project-a , вы можете переключиться на project-b используя cd ../project-b .

Существует также environment variable в оболочке с именем $HOME которая указывает на ваш домашний каталог.

Вы можете использовать это в BASH, используя символ тильды ~ .

Оболочка заменяет тильду для вас, когда вы нажимаете enter, поэтому, например, вы можете перейти в свою домашнюю домашнюю папку с помощью cd ~ .

абсолют

Расположение файлов - это полный путь от корня файловой системы и всегда имеет ведущую косую черту.

Например, cd /home/quincy/Desktop перейдет в рабочий каталог Quincy, независимо от текущего пути или зарегистрированного пользователя.

Параметры команды

Большинство команд оболочки соответствуют одному и тому же синтаксису, который является файлом параметров команд .

ls -l *.txt 

где

  • ls дает список файлов и каталогов,
  • -l изменяет вывод ls на длинный список,
  • и *.txt ограничивает список файлами, заканчивающимися на .txt .

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

Отдельные команды могут быть соединены вместе в цепочке, где вывод одной команды становится входом другой команды.

Это делается с помощью | характер, часто называемый трубой или баром . Это не капитал I или нижний регистр L , и это не номер 1 . На американских клавиатурах он находится на одном из ключей возле Enter .

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

Первая, cat , короткая для конкатенации и может быть использована для размещения содержимого одного файла в конце другого (конкатенация!). При использовании только одного файла он записывает содержимое в терминал.

Вторая команда grep - это программа, которая выводит текст, найденный на основе некоторого ввода, и шаблон поиска. Шаблон поиска может быть простым текстом или регулярным выражением (регулярное выражение) для более сложных поисковых запросов.

cat index.html | grep img 

Существует много способов сделать это, но это будет выводить каждую строку в index.html, которая содержит img для терминала. В этом примере используется только один | , но вы не ограничиваетесь этим.

Цеповые команды

Хотя единственный оператор амперсанда & является оператором управления заданиями в BASH (следующий раздел), двойной амперсанд имеет другое значение. Это логично И , и вы используете его между двумя командами, чтобы вторая команда выполнялась только в том случае, если первый из них успешно завершен (без ошибок).

Следующий пример: сколько пользователей Debian и Ubuntu обновляют свой список программ, а затем запускают обновление системы.

sudo apt-get update && sudo apt-get dist-upgrade 

Другим вариантом является двойная труба || , что означает логическое ИЛИ . Вы будете использовать его, если хотите запустить команду, только когда первый выход с ошибкой.

Следующее создаст архив под названием project.tar на рабочем столе пользователя из файлов в каталоге проекта, а если это не удастся, эхо-сообщение.

tar -cvf /home/user/Desktop/project.tar /home/user/project/* || echo "archive failed" 

Справочные задания

Когда вы выполняете команду в терминале, терминал занят до тех пор, пока команда не будет завершена, и никакие другие команды не будут запущены. В Linux есть система управления заданиями, которая позволяет приостановить выполнение команд, возобновить приостановленные команды в фоновом режиме и возобновить приостановленные команды на переднем плане.

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

o приостановить программу, которая работает в терминале, используйте комбинацию клавиш Ctrl + Z.

Вы вернетесь к своему обычному запросу, и команда, похоже, ушла. Это не так, но было приостановлено. Он по-прежнему отображается в списке заданий, используя команду jobs чтобы отображать все текущие отслеживаемые задания. Я сделал man ls чтобы получить страницу руководства, а затем приостановил ее.

Когда я печатаю jobs я получаю следующий результат:

$ jobs 
 
 [1]  + suspended  man ls 

Отсюда я могу возобновить его в фоновом режиме, набрав bg %1 где 1 - номер задания, найденный в квадратных скобках.

Я могу вернуть его на передний план, набрав fg %1 .