Действительно, немного странно писать «открытие» в последнем разделе. Однако начало первой статьи (Числовые операции) на самом деле является небольшим открытием. Упоминается, что вся серия требует определенных знаний в области программирования на языке Shell. Читая эту серию, я дошел до конца, чтобы переписать вступительную главу. В первой главе в основном рассказывается, что такое Shell, операционная среда Shell, базовый синтаксис Shell и навыки отладки.
Сначала давайте посмотрим на положение Shell во всей операционной системе на следующем рисунке. Внешний круг рисунка описывает всю операционную систему (например,
Дебиан/Убунту/Слаквареи т. д.), внутренний круг описывает ядро операционной системы (например.
Ядро Linux),и
Оболочкаи
графический интерфейсТакже служит интерфейсом между пользователем и операционной системой.
графический интерфейсПредоставляет графический пользовательский интерфейс, который очень прост в использовании и освоении;
ОболочкаОн предоставляет пользователям интерфейс командной строки, принимает вводимые пользователем данные с клавиатуры, анализирует и выполняет команды во входной строке, а затем возвращает результаты выполнения пользователю. Его может быть сложнее использовать, но он требует меньше ресурсов. Более того, после приобретения навыков работы эффективность работы может быть повышена, а также имеется функция пакетной обработки, поэтому она очень популярна в некоторых приложениях.
ОболочкаВ качестве пользовательского интерфейса он на самом деле является интерпретатором (Интерпретатор, например в
LinuxСледующие чаще используются
Баш), мы можем просмотреть текущий
Оболочка:
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 корень root 702160 13 мая 2008 02:33 /bin/bash
Интерпретатор может не только интерпретировать простые команды, но и интерпретировать файл с определенной синтаксической структурой, который называется скриптом. Как он интерпретирует эти команды и файлы сценариев, здесь подробно не анализируется. См. другую статью, которую я написал в 2008 году: «Момент выполнения программы в командной строке Linux».
Поскольку программа может интерпретировать файлы с определенной грамматической структурой, мы можем использовать определенную грамматику для ее написания. Какая у нее грамматика, как ее запускать и как ее отлаживать? Ниже мы используем
БашДавайте обсудим эти аспекты на примере.
Чтобы облегчить выполнение следующих упражнений, мы сначала настроили базовую операционную среду: В операционной системе Linux работает
БашКомандная строка ждет, пока мы наберем команду. Эта командная строка может находиться под графическим интерфейсом.
Терминал(Например
УбунтуОчень мощный
Терминатор), или это может быть символьный интерфейс
Консоль(можно использовать
CTRL+ALT+F1~6переключить), если вы найдете текущий
Оболочканет
Баш, пожалуйста, замените его на:
$ chsh $USER -s /bin/bash$ su $USER
Или просто введите Bash:
$ bash$ echo $Shell # Подтверждение /bin/bash
Если у вас не установлена операционная система Linux, вы также можете рассмотреть возможность использования служб виртуальных экспериментов Linux, предоставляемых некоторыми общедоступными сообществами, которые обычно предоставляют удаленные возможности.
Оболочка, ты можешь пройти
Телнетили есть
СшВойдите в клиент, чтобы попрактиковаться.
Как в базовой операционной среде запускать команды, вводимые пользователем, или файл сценария, написанный пользователем?
?
Предположим, мы написали сценарий Shell под названием
test.sh.
Первый способ — убедиться, что выполняемая нами команда имеет разрешения на выполнение, а затем ввести команду непосредственно для ее выполнения:
$ chmod +x /путь/к/test.sh$ /путь/к/test.sh
Второй метод — напрямую написать скрипт как
БашПараметры интерпретатора передаются:
$ bash /путь/к/test.sh
или
$ источник /путь/к/test.sh
или
$ ./путь/к/test.sh
Один первый
Привет, мирпрограмма.
Давайте познакомим вас с базовой структурой программы Shell.
Привет, мирНапример:
#!/bin/bash -v# test.shecho Привет, мир
Сохраните приведенный выше код как
test.sh, а затем запустите его двумя указанными выше способами, вы увидите следующие эффекты.
Способ первый:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo Привет, мир Привет, мир
Способ второй:
$ bash test.shHello, World$ исходный файл test.shHello, World$ .
Мы обнаружили, что существует разница между двумя результатами. Почему? Здесь нам нужно обратить внимание
test.shСодержимое файла, всего две строки, вторая строка печатается.
Привет, мир, оба метода достигают своей цели, но первый метод печатает больше содержимого самого файла сценария. Почему?
Причина в первой строке файла. Когда мы запускаем файл сценария напрямую, эта строка сообщает операционной системе, что его нужно использовать.
#!Интерпретатор и соответствующие параметры после символа используются для интерпретации файла сценария. Проанализировав первую строку, мы обнаружили, что соответствующий интерпретатор и параметры.
/бин/баш -v,и
-vЕсть возможность распечатать исходный код программы, но при использовании второго способа мы его не дали;
БашПередайте любые дополнительные аргументы, чтобы он просто интерпретировал сам файл сценария.
Дополнительную информацию о синтаксисе можно найти в «Заметках по изучению программирования на языке командной оболочки», которые находятся в Приложении 1 в конце этой книги.
Язык оболочки является интерпретируемым языком, и процесс его программирования несколько отличается от процесса программирования компилируемых языков. Основной процесс заключается в следующем:
алгоритм проектирования
Используйте Shell для написания сценариев для реализации алгоритмов.
Запустите скрипт напрямую
Видно, что в нем нет хлопотного процесса компиляции и компоновки компилируемых языков, но именно из-за этого его не очень удобно отлаживать, когда что-то идет не так, поскольку во время выполнения появляются синтаксические и логические ошибки. Ниже мы кратко представляем метод отладки.
Вы можете напрямую ссылаться на: технологию отладки сценариев оболочки или метод отладки BASH.
В качестве интерпретируемого языка язык Shell может использовать большое количество существующих инструментов, включая числовые вычисления, символьную обработку, файловые операции, сетевые операции и т. д. Таким образом, процесс записи может быть более эффективным, но поскольку он интерпретируется, он требует быть выполненным во время выполнения. Во время процесса постоянный вызов внешних программ с диска и переключение между процессами может иметь недостатки с точки зрения эффективности работы, поэтому нам следует выбрать использование Shell или других языков для программирования в соответствии с приложением.
Момент выполнения программы в командной строке Linux
Заметки по программированию в Linux Shell
Технология отладки шелл-скриптов
Методы отладки BASH