Unix / Linux - Что такое Shell?

Здравствуйте,future programmers! Добро пожаловать в увлекательное путешествие в мир Unix и Linux shell'ов. Как ваш доброжелательный сосед по компьютерным наукам, я рад помочь вам понять этот базовый концепт. Погружаемся!

Unix / Linux - What is Shell?

Что такое Shell?

Представьте, что вы пытаетесь общаться с другом, который говорит на другом языке. Вам нужен переводчик, верно? Так вот, shell - это как раз такой переводчик между вами и вашей операционной системой. Это командный интерпретатор, который принимает ваши человеческие команды и translate их в что-то, что компьютeр может понять и выполнить.

В мои первые годы преподавания я привык tell своим студентам думать о shell как о магическом говорящем моллюске, который живет внутри их компьютeра. Вы шепчите команды ему, и компьютeр выполняет вашу волю. Это не entirely точная аналогия, но она действительно помогает запомнить концепцию!

Shell Prompt

Когда вы открываете терминал на вашей Unix или Linux системе, вы увидите что-то вроде этого:

username@hostname:~$

Это ваш shell prompt. Это как компьютeр говорит, "Я готов к вашей команде, о великий пользователь!" Давайте разберем это:

  • username: Это вы!
  • @: Просто означает "в"
  • hostname: Имя вашего компьютeра
  • ~: Ваш текущий каталог (~ означает домашний каталог)
  • $: Indicates, что вы обычный пользователь (было бы # для root пользователя)

Типы Shell

Существует несколько типов shell, доступных в Unix/Linux системах. Это как если бы у вас было несколько вкусов мороженого - все они вкусные, но у каждого свой уникальный вкус! Вот некоторые из них:

Название Shell Описание
Bourne Shell (sh) Оригинальный Unix shell
Bourne Again Shell (bash) Улучшенная версия sh, самая распространенная в Linux
C Shell (csh) Синтаксис, похожий на язык программирования C
Korn Shell (ksh) Комбинация особенностей sh и csh
Z Shell (zsh) Расширенная версия bash с множеством улучшений

Bash - это самый распространенный shell, с которым вы столкнетесь, поэтому мы сосредоточимся на нем в наших примерах.

Shell Скрипты

Теперь, вот где происходит магия! Shell скрипты - это как кулинарные книги для вашего компьютeра. Вместо того чтобы вводить команды одну за другой, вы можете написать serie commands в файле и запустить их все сразу. Это как научить компьютeр новому трюку!

Пример Скрипта

Давайте создадим наш первый shell скрипт. Мы назовем его hello_world.sh:

#!/bin/bash

echo "Hello, World!"
echo "Welcome to the wonderful world of shell scripting!"
echo "Today's date is $(date)"
echo "Your current directory is $(pwd)"

Давайте разберем это:

  1. #!/bin/bash: Это называется shebang. Он tells систему, какой интерпретатор использовать (в этом случае, bash).
  2. echo: Эта команда выводит текст на экран.
  3. $(date) и $(pwd): Это командные подстановки. Они запускают команды внутри скобок и вставляют результат в нашу echo команду.

Чтобы запустить этот скрипт:

  1. Сохраните его как hello_world.sh
  2. Сделайте его исполняемым: chmod +x hello_world.sh
  3. Запустите его: ./hello_world.sh

Вы должны увидеть что-то вроде:

Hello, World!
Welcome to the wonderful world of shell scripting!
Today's date is Mon May 15 10:30:45 PDT 2023
Your current directory is /home/username

Не правда ли, это классно? Вы только что создали свой первый shell скрипт!

Комментарии в Shell

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

# This is a comment
echo "This will be printed"
# echo "But this won't be printed"

Я всегда говорю своим студентам: комментируйте свой код, как будто человек, читающий его, - это Violent psychopath, который знает, где вы живете. Понятные комментарии могут спасти жизни! (Или хотя бы предотвратить разочарование.)

Расширенные Shell Скрипты

По мере того как вы станете более��适но чувствовать себя с shell scripting, вы можете создавать более сложные скрипты. Вот пример, который демонстрирует переменные, ввод пользователя и условные операторы:

#!/bin/bash

# Спросите имя пользователя
echo "What's your name?"
read name

# Приветствуйте пользователя
echo "Hello, $name! Nice to meet you."

# Спросите возраст пользователя
echo "How old are you?"
read age

# Проверьте, достаточно ли пользователю лет, чтобы голосовать
if [ $age -ge 18 ]
then
echo "You're old enough to vote!"
else
echo "You're not old enough to vote yet."
years_left=$((18 - age))
echo "You'll be able to vote in $years_left years."
fi

Этот скрипт:

  1. Спрашивает имя и возраст пользователя
  2. Использует переменные для хранения и использования этой информации
  3. Использует условное (if-else) выражение для проверки возраста
  4. Выполняет расчет, чтобы определить годы до достижения избирательного возраста

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

Надеюсь, это введение в shells вызвало ваш интерес. Продолжайте исследовать, задавайте вопросы и, самое главное, продолжайте программировать! Кто знает? Может быть,有一天 вы будете учить следующее поколение программистов о магическом мире shell'ов!

Credits: Image by storyset