Команда true в Linux
Что такое команда true
trueЭто одна из самых простых команд в системах Linux/Unix, и у неё только одна функция:всегда возвращать успех (код состояния выхода 0)。
Эта команда кажется простой, но она имеет важное применение в программировании shell-скриптов. Она эквивалентна операции "ничего не делать, но всегда завершаться успешно".
Базовый синтаксис
Примеры
Параметры
| Опция | Описание |
|---|---|
| --help | Показать справочную информацию и выйти |
| --version | Показать информацию о версии и выйти |
Как это работает
trueПроцесс выполнения команды очень прост:
- Когда вы вводите
trueи нажимаете Enter - Система выполняет эту команду
- Команда немедленно завершается, ничего не выполняя
- Возвращает код завершения 0 (что означает успех)
Практические примеры использования
1. Как условие для бесконечного цикла
Примеры
echo "Это бесконечный цикл"
sleep 1
done
В этом примере,while trueсоздаёт бесконечный цикл, потому чтоtrueвсегда возвращает успех (0), поэтому условие цикла всегда истинно.
2. Как успешная операция по умолчанию
Примеры
Этот синтаксис означает: еслиcommandне выполнится, то выполнитьtrue(всегда завершается успешно), это гарантирует, что всё выражение всегда возвращает успешный статус.
3. Как заглушка в скриптах
Примеры
: # Ничего не делать
else
true # Это также можно записать, чтобы ничего не делать
fi
Здесьtrueслужит заменой no-op, делая структуру кода более понятной.
Сравнение с командой false
В Linux также есть соответствующаяfalseкоманда, которая всегда возвращает ошибку (код состояния выхода 1). В таблице ниже показаны различия между ними:
| Команда | Функция | Код состояния выхода | Типичное использование |
|---|---|---|---|
| истина | Ничего не делает, возвращает успех | 0 | Бесконечные циклы, игнорируя ошибки |
| false | Ничего не делает, возвращает ошибку | 1 | Тестирование обработки ошибок, условных проверок |
Детали реализации
В большинстве систем Linux,trueявляется встроенной командой (встроенной в оболочку), но обычно также существует отдельная бинарная версия:
Примеры
true является встроенной командой оболочки
true находится в /usr/bin/true
true находится в /bin/true
Его реализация чрезвычайно проста и может быть представлена на C так:
Примеры
return 0;
}
Практические упражнения
Попробуйте запустить её напрямую в терминалеtrue, затем проверьте код завершения:
Примеры
echo $? # Это выведет 0
Создайте скрипт с бесконечным циклом, который выводит текущее время каждые 5 секунд:
Примеры
while true; do
date
sleep 5
done
Тестtrueповедение в условных операторах:
Примеры
echo "Это всегда выполнится"
fi
ЧАВО
Вопрос: Команда true действительно ничего не делает?Ответ: Да, она не выполняет никаких фактических операций, а просто возвращает успешный код завершения.
Вопрос: Почему нам нужна такая, казалось бы, бесполезная команда?Ответ: В программировании сценариев иногда нам нужен заполнитель или условие, которое всегда успешно,trueи эта команда как раз удовлетворяет эту потребность.
Вопрос: В чём разница между true и двоеточием (:)?Ответ: В большинстве оболочек,:также является командой, которая ничего не делает, и её поведение идентичноtrueповедению true. Однако,:является чисто встроенной командой оболочки, тогда какtrueможет иметь отдельную бинарную версию.
Итог
trueХотя команда проста, это практичный инструмент в программировании сценариев shell. Её основные возможности включают:
- Всегда возвращает успех (код завершения 0)
- Не выполняет никаких фактических операций
- Часто используется для бесконечных циклов, обработки ошибок и заполнителей кода
Справочник команд Linux