Главная страница

Лабараторная работа. Лабораторная работа 2. Лабораторная работа 2 Навыки работы с командной строкой Введение


Скачать 37.05 Kb.
НазваниеЛабораторная работа 2 Навыки работы с командной строкой Введение
АнкорЛабараторная работа
Дата08.02.2022
Размер37.05 Kb.
Формат файлаdocx
Имя файлаЛабораторная работа 2.docx
ТипЛабораторная работа
#355559


Лабораторная работа №2

Навыки работы с командной строкой

Введение

Лабораторная работа №2: Навыки командной строки. Выполнив эту лабораторную работу, студенты узнают, как использовать основные функции оболочки.
В этой лабораторной работе вы будете выполнять следующие задачи:

  • Изучите возможности Bash

  • Используйте переменные оболочки

  • Уметь использовать цитирование


Файлы и каталоги

В этой работе мы получим доступ к интерфейсу командной строки (CLI) для Linux, чтобы узнать, как выполнять основные команды и что влияет на их выполнение.

Большинство пользователей, вероятно, лучше знакомы с тем, как команды выполняются с использованием графического интерфейса пользователя (GUI). Таким образом, эта задача, вероятно, представит вам некоторые новые концепции, если вы ранее не работали с CLI. Чтобы использовать CLI, вам нужно будет ввести команду, которую вы хотите запустить.

Окно, в котором вы вводите свою команду, называется приложением-эмулятором терминала. Внутри окна Терминала система отображает подсказку, за которой следует мигающий курсор:

sysadmin@localhost:

$

Помните

Возможно, вам потребуется нажать Enter в окне, чтобы отобразить подсказку.

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

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

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

команда [параметры] [аргументы]

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

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

sysadmin@localhost:$ ls

Desktop Documents Downloads Music Pictures Public Templates Videos

Шаг 1

Команда ls используется для вывода информации о каталогах и файлах и по умолчанию отображает информацию для текущего каталога. Используйте -l параметр для отображения этой информации в длинном формате, который дает дополнительную информацию о файлах, находящихся в текущем рабочем каталоге:

ls -l

Ваш результат должен быть похож на следующий:

ysadmin@localhost:$ ls -l

total 32

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Desktop

drwxr-xr-x 4 sysadmin sysadmin 4096 Oct 31 19:52 Documents

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Downloads

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Music

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Pictures

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Public

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Templates

drwxr-xr-x 2 sysadmin sysadmin 4096 Oct 31 19:52 Videos

Обратите внимание, что каталоги считаются типом файлов в файловой системе Linux.
Шаг 2

К командам также можно добавлять аргументы. Добавление местоположения определенного каталога в ls команду отобразит информацию для этого каталога. Используйте аргумент / tmp для отображения подробной информации о файлах в каталоге /tmp.

ls -l / tmp

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ ls -l /tmp

total 4

-rw-rw-r-- 1 root root 1863 Oct 31 19:47 inside_setup.sh

Используя параметр -l и аргумент /tmp, мы теперь можем видеть, что в /tmp каталоге есть файл с именем, inside_setup.sh расположенный внутри него.
Шаг 3

Следующая команда отобразит ту же информацию, что и в первой части приглашения. Убедитесь, что вы сначала выбрали (щелкнули) окно Терминала, а затем введите следующую команду, а затем клавишу Enter:

whoami

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ whoami

sysadmin

sysadmin@localhost:$

В выводе команды whoami отображается имя текущего пользователя sysadmin. Хотя в этом случае ваше имя пользователя отображается в подсказке, эту команду можно использовать для получения этой информации в ситуации, когда подсказка не содержала эту информацию.
Шаг 4

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

uname

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ uname

Linux

Многие выполняемые команды производят такой текстовый вывод. Вы можете изменить вывод, производимый командой, используя параметры после имени команды.
Параметры команды можно указать несколькими способами. Традиционно в UNIX параметры выражались дефисом, за которым следует другой символ; например: -n.
В Linux параметры иногда также могут быть заданы двумя символами дефиса, за которыми следует слово, или слово через дефис; например: --nodename.
Выполните uname команду еще раз дважды в терминале, один раз с параметром -n и еще раз с параметром --nodename. Это отобразит имя хоста сетевого узла, также найденное в подсказке.

uname -n

uname --nodename

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ uname -n

localhost

sysadmin@localhost:$ uname --nodename

localhost

Шаг 5

Команда pwd используется для отображения вашего текущего «местоположения» или текущего «рабочего» каталога. Введите следующую команду, чтобы отобразить рабочий каталог:

pwd

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ pwd

/home/sysadmin

sysadmin@localhost:$
Текущий каталог в приведенном выше примере - /home/sysadmin. Это также называется вашим домашним каталогом, особым местом, где вы можете управлять файлами, а другие пользователи обычно не имеют доступа. По умолчанию этот каталог называется так же, как ваше имя пользователя, и находится под /home каталогом.

Как видно из вывода команды, /home/sysadminLinux использует косую черту /для разделения каталогов, чтобы создать то, что называется путем . Начальная косая черта представляет каталог верхнего уровня, известный как корневой каталог.

Символ тильды, который вы видите в своем приглашении, также указывает на текущий каталог. Этот символ - «ярлык» для обозначения вашего дома.
Учти это что Pwd означает «рабочий каталог печати». Хотя на самом деле он не «печатает» в современных версиях, на старых машинах UNIX не было мониторов, поэтому вывод команд шел на принтер, отсюда несколько вводящее в заблуждение название pwd.

История команд

Оболочка Bash ведет журнал введенных вами команд. К предыдущим командам можно легко получить доступ в этой истории несколькими способами.

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

Когда вы найдете команду, которую хотите выполнить, вы можете использовать клавиши со стрелками влево и вправо, чтобы установить курсор для редактирования. Другие полезные клавиши для редактирования включают клавиши Home, End, Backspace и Delete.

Другой способ использовать историю команд - выполнить команду history, чтобы иметь возможность просматривать нумерованный список истории. Число, указанное слева от команды, можно использовать для повторного выполнения команды. Команда history также имеет ряд опций и аргументов, с помощью которых можно управлять тем, какие команды будут сохраняться или отображаться.
Шаг 1

Выполните новую команду, а затем выполните команду history:

echo Hi

history

Помните

Команда date напечатает время и дату в системе. Команда clear очищает экран.
Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ history

1 ls

2 ls -l

3 ls -l /tmp

4 whoami

5 uname

6 uname -n

7 uname --nodename

8 pwd

9 echo Hi

10 history

sysadmin@localhost:$

Номера ваших команд могут отличаться от указанных выше. Это связано с тем, что вы, возможно, выполнили другое количество команд с момента открытия виртуального терминала.
Шаг 2

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

history 5

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ history 5

7 uname --nodename

8 pwd

9 echo Hi

10 history

11 history 5

Шаг 3

Чтобы выполнить команду еще раз, введите восклицательный знак и номер списка истории. Например, чтобы выполнить 9-ю команду в списке истории, вы должны выполнить следующее:

!9

sysadmin@localhost:$ !9

echo Hi

Hi
Шаг 4

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

Переменные оболочки

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

Команда echo может быть использована для печати текста и значения переменного, и показать, как окружающая среда оболочки расширяет метасимволы (больше на метасимволы позже в этой лаборатории). Введите следующую команду, чтобы выводить буквальный текст:

echo Hello Student

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo Hello Student

Hello Student

sysadmin@localhost:$

Шаг 2

Переменные среды доступны для всей системы. Система автоматически воссоздает переменные среды при открытии новой оболочки. Примеры включают в себя переменные PATH, HOME и HISTSIZE. В переменной HISTSIZE определяет, сколько предыдущих команд для хранения в списке истории. В приведенном ниже примере команда отобразит значение переменной HISTSIZE:

sysadmin@localhost:$ echo $HISTSIZE‌

1000

Шаг 3

Введите следующую команду, чтобы отобразить значение переменной PATH:

echo $PATH

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo $PATH

/home/sysadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Переменная PATH отображается путем размещения символа $ перед именем переменной.

Эта переменная используется для поиска расположения команд. Каждый из перечисленных выше каталогов ищется при запуске команды. Например, если вы попытаетесь запустить команду date, оболочка сначала будет искать команду в каталоге /home/sysadmin/bin, а затем в каталоге /usr/local/sbin и так далее. Как только команда date найдена, оболочка «запускает ее».

Шаг 4

Используйте команду which, чтобы определить, существует ли исполняемый файл, в данном случае с именем date, который находится в каталоге, указанном в значении PATH:

which date

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ which date

/bin/date
Выходные данные команды which говорят вам, что когда вы выполняете команду date, система запустит ее /bin/date. Команда which использует переменную PATH для определения местоположения команды date.

Типы команд

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

Один из способов узнать больше о команде - посмотреть, откуда она пришла. Команда type может быть использована для определения информации о типе команды.

type command

В оболочке вашего CLI есть несколько разных источников команд:

Внутренние команды встроены в саму оболочку. Хорошим примером является команда cd (сменить каталог), поскольку она является частью оболочки Bash. Когда пользователь вводит команду cd, оболочка Bash уже выполняется и знает, как ее интерпретировать, не требуя запуска дополнительных программ.

Команда type идентифицирует команду cd как внутреннюю команду:

sysadmin@localhost:$ type cd

cd is a shell builtin

Шаг 2

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

type ls

sysadmin@localhost:$ type ls

ls is aliased to `ls --color=auto'
Шаг 3

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

Чтобы определить, какие псевдонимы установлены в текущей оболочке, используйте команду alias:

sysadmin@localhost:$ alias

alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo

error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'
Шаг 4

Последний тип команды - это исполняемая программа . Эти команды вызывают программы, установленные в системе, которые выполняют определенные задачи. Когда пользователь набирает vi команду, оболочка использует PATH файл для поиска и выполнения программы. Подобные программы vi доступны практически в каждом дистрибутиве Linux; другие программы, такие как vlc (медиаплеер с открытым исходным кодом, часто используемый на настольных компьютерах Linux), устанавливаются пользователями или администраторами для определенной цели и не будут указаны в PATH, если они не были установлены отдельно.
type vi

cd /bin

type vlc

cd

sysadmin@localhost:$ type vi

vi is /usr/bin/vi

sysadmin@localhost:$ cd /bin

sysadmin@localhost:/bin$ type vlc

-bash: type: vlc: not found

sysadmin@localhost:/bin$ cd

sysadmin@localhost:$

Цитирование

Оболочка Bash использует три типа кавычек: одинарные кавычки ( '), двойные кавычки ( ") и обратные кавычки ( `). Эти кавычки имеют специальные функции в оболочке Bash, как описано ниже.

Чтобы понять одинарные и двойные кавычки, учтите, что иногда вы не хотите, чтобы оболочка рассматривала некоторые символы как особые. Например, *символ используется как подстановочный знак. Что, если вы хотите, чтобы этот *символ означал буквально звездочку?

Одиночные 'кавычки не позволяют оболочке «интерпретировать» или раскрывать все специальные символы. Часто одинарные кавычки используются для защиты строки (последовательности символов) от изменения оболочкой, чтобы строка могла быть интерпретирована командой как параметр, влияющий на способ выполнения команды.

Двойные "кавычки останавливают раскрытие глобальных символов, таких как звездочка ( *), вопросительный знак ( ?) и квадратные скобки ( []). Двойные кавычки действительно обеспечивают как расширение переменной и подстановки команд (см назад кавычки) , чтобы иметь место.

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

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

Хотя одинарные кавычки полезны для блокировки интерпретации одного или нескольких символов оболочкой, оболочка также предоставляет способ заблокировать интерпретацию всего одного символа, называемого «экранированием» символа. Чтобы избежать особого значения метасимвола оболочки, символ \ обратной косой черты используется в качестве префикса для этого символа.
Шаг 1

Выполните следующую команду, чтобы использовать обратные кавычки ` (находящиеся под символом на некоторых клавиатурах) для выполнения команды date в строке команды echo:

echo Today is `date`

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo Today is `date`

Today is Mon Dec 3 21:29:45 UTC 2018

Шаг 2

Вы также можете разместить $(перед командой и )после команды для выполнения подстановки команды:
echo Today is $(date)

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo Today is $(date)

Today is Mon Dec 3 21:33:41 UTC 2018

Почему два разных метода достигают одного и того же? Обратные кавычки очень похожи на одинарные кавычки, что затрудняет «увидеть», что команда должна делать. Первоначально в оболочках использовались обратные кавычки; формат $(command) был добавлен в более поздней версии Bash оболочки, чтобы сделать заявление визуально более ясным.
Шаг 3

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

echo This is the command '`date`'

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo This is the command '`date`'

This is the command `date`

Шаг 4

Обратите внимание, что вы также можете поместить символ обратной косой черты перед каждым символом обратной кавычки. Выполните следующее:

echo This is the command \`date\`

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo This is the command \`date\`

This is the command `date`

Шаг 5

Двойные кавычки не влияют на символы обратных кавычек. Оболочка по-прежнему будет использовать их как подстановку команд. Выполните следующие действия, чтобы увидеть демонстрацию:
echo This is the command "`date`"

Ваш результат должен быть похож на следующий:
sysadmin@localhost:$ echo This is the command "`date`"

This is the command Mon Dec 3 21:37:33 UTC 2018

Шаг 6

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

echo D*

echo "D*"

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo D*

Desktop Documents Downloads

sysadmin@localhost:$ echo "D*"

D*
Важно

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

Контрольные утверждения

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

Самый простой разделитель - точка с запятой ( ;). Использование точки с запятой между несколькими командами позволяет выполнять их одну за другой, последовательно слева направо.

Эти && символы создать логический оператор «и». Команды, разделенные &&, выполняются условно. Если команда слева от && символа успешна, то команда справа && также будет выполнена. Если команда слева от && не работает, то команда справа && не выполняется.

Эти || символы создают логический оператор «или», который также вызывает условное выполнение. Когда команды разделены символом ||, то только в случае сбоя команды слева выполняется команда справа от ||. Если команда слева от команды выполнена || успешно, то команда справа || не будет выполнена.

Чтобы увидеть, как работают эти управляющие операторы, вы будете использовать два специальных исполняемых файла: true и false. true Исполняемая всегда удается, когда он выполняет, в то время как, то false исполняемая всегда терпит неудачу. Хотя это может не дать вам реалистичных примеров того, как && и || работает, это дает возможность продемонстрировать, как они работают, без необходимости вводить новые команды.
Шаг 1

Выполните следующие три команды вместе, разделенные точкой с запятой:

echo Hello; echo Linux; echo Student

Как вы можете видеть, результат показывает, что все три команды выполняются последовательно:

sysadmin@localhost:$ echo Hello; echo Linux; echo Student

Hello

Linux

Student

Шаг 2

Теперь соедините три команды, разделенные точкой с запятой, где первая команда выполняется с ошибкой:
false; echo Not; echo Conditional

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ false; echo Not; echo Conditional

Not

Conditional

Обратите внимание, что в предыдущем примере все три команды по-прежнему выполняются, даже если первая не удалась. Хотя вы не можете видеть из вывода команды false, она выполнилась. Однако, когда команды разделены символом ; , они полностью независимы друг от друга.
Шаг 3

Затем используйте логические «и» для разделения команд:

echo Start && echo Going && echo Gone

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo Start && echo Going && echo Gone

Start

Going

Gone

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

Используйте логическое «и» с командой, которая не работает, как показано ниже:

echo Success && false && echo Bye

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ echo Success && false && echo Bye

Success

Первая echo команда выполнена успешно, и мы видим ее результат. Команда false выполняется с ошибкой, поэтому последняя echo инструкция не выполняется.
Шаг 5

Символы «или», разделяющие следующие команды, демонстрируют, как сбой перед оператором «или» вызывает выполнение команды после него; однако успешный первый оператор заставляет команду не выполняться:

false || echo Fail Or

true || echo Nothing to see here

Ваш результат должен быть похож на следующий:

sysadmin@localhost:$ false || echo Fail Or

Fail Or

sysadmin@localhost:$ true || echo Nothing to see here


написать администратору сайта