Ubuntu как выйти из shell

Обновлено: 06.07.2024

Большинство UNIX-like систем обладают встроенной справкой, которая подробно описывает все доступные команды. Однако чтобы воспользоваться этой справкой, вы должны знать, по крайней мере, название команды, о которой вы хотите получить информацию. Поскольку большинство пользователей только в общих чертах понимают, что они хотят сделать, то, как правило, встроенная справка мало полезна новичкам.

Этот справочник поможет пользователям, знающим, что они хотят сделать, найти соответствующую команду Linux по краткому описанию.

Системная информация: arch или uname -m — отобразить архитектуру компьютера uname -r — отобразить используемую версию ядра dmidecode -q — показать аппаратные системные компоненты — (SMBIOS / DMI) hdparm -i /dev/hda — вывести характеристики жесткого диска hdparm -tT /dev/sda — протестировать производительность чтения данных с жесткого диска cat /proc/cpuinfo — отобразить информацию о процессоре cat /proc/interrupts — показать прерывания cat /proc/meminfo — проверить использование памяти cat /proc/swaps — показать файл(ы) подкачки cat /proc/version — вывести версию ядра cat /proc/net/dev — показать сетевые интерфейсы и статистику по ним cat /proc/mounts — отобразить смонтированные файловые системы lspci -tv — показать в виде дерева PCI устройства lsusb -tv — показать в виде дерева USB устройства date — вывести системную дату cal 2007 — вывести таблицу-календарь 2007-го года date 041217002007.00* — установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды) clock -w — сохранить системное время в BIOS Остановка системы: shutdown -h now или init 0 или telinit 0 — остановить систему shutdown -h hours:minutes & — запланировать остановку системы на указанное время shutdown -c — отменить запланированную по расписанию остановку системы shutdown -r now или reboot — перегрузить систему logout — выйти из системы Файлы и директории: cd /home — перейти в директорию '/home' cd .. — перейти в директорию уровнем выше cd ../.. — перейти в директорию двумя уровнями выше cd — перейти в домашнюю директорию cd

Дополнение за 18 апреля 2011 года:

ls : показывает файлы и каталоги в текущей директории, аналог команды dir в Windows.
ls -al : показывает файлы и каталоги в текущей директории, включая подкаталоги, более "сложный" листинг.
cd : сменить директорию, например, если введем команду cd /usr/local/directadmin то перейдем в указанную директорию.
cd

: перейти в домашнюю директорию.
cd - : перейти в директорию в которой находились до перехода в другую директорию.
cd .. : перейти в директорию на 1 уровень вверх.
cat /filename.conf : покажет содержимое файла.
chmod : изменят атрибуты, после команды chmod устанавливается циферное значение, доступ для ПОЛЬЗОВАТЕЛЯ-ГРУППЫ-ВСЕХ:
0 = --- Нет доступа
1 = --X Только выполнение
2 = -W- Только запись
3 = -WX Запись и выполнение
4 = R-- Только чтение
5 = R-X Чтение и выполнение
6 = RW- Чтение и запись
7 = RWX Чтение, запись и выполнение

Использование:
chmod набор правил filename

chmod 000 : Ни у кого не будет доступа
chmod 644: Обычно используется для HTML страниц
chmod 755: Обычно применяется для CGI скриптов

chown : Изменяет владельца файла или каталога
После команды указывается значение:
ПОЛЬЗОВАТЕЛЬ - ГРУППА

chown root myfile.txt : Установить пользователя root владельцем данного файла.
chown root:root myfile.txt : Изменить пользователя и группу для данного файла и установить root.

tail : аналог команды cat, только читает файлы с конца.
tail /var/log/messages : покажет последние 20 (по умолчанию) строк файла /var/log/messages
tail -f /var/log/messages : выводит листинг файла непрерывно, по мере его обновления.
tail -200 /var/log/messages : выведет на экран последние 200 строк с указанного файла.

more : как cat, только показывает файл поэкранно, а не весь сразу
more /etc/userdomains : Покажет листинг файла на весь экран. Для прокрутки используйте пробел, q для выхода из режима просмотра.

pico : простой в работе редактор с дружественным интерфейсом.

Редактор файлов VI
vi : редактор файлов, много опций, для ноыичка тяжелый в работе.
В редакторе vi Вы можете использовать следующие полезные коменды, только Вы будете должны нажать клавишу SHIFT + :

:q! : Выйти из файла и редактора без сохранения.
:w : Сохранить.
:wq : Сохранить и выйим из редактора.
:номер строки : например :25 : перейти на 25 строку
:$ : Перейти на последнюю строку в файле
:0 : Перейти на первую строку в файле

grep : ищет заданное значение в файлах.
grep root /etc/passwd : ищет значения root в файле /etc/passwd
grep -v root /etc/passwd : покажет все строки где встречается значение root.

last : показывает кто авторизовывался и когда
last -20 : показывает последние 20 авторизаций

w : Показывает кто еще авторизован в шелле и откуда вошли
who : Также показывает кто залогинен в шелл.

netstat : показывает все текущие сетевые подключения.
netstat -an : показывает подключения к серверу, с какого IP на какой порт.
netstat -rn : показывает таблицу IP маршрутизации.

top : показывает все запущенные процессы в таблице, информацию по использованию памяти, uptime системы и другую полезную информацию. Нажав Shift + M увидите таблицу использования памяти или Shift + P таблицу использования процессора.

ps: показывает процесс лист в упрощенном виде.
ps U username : показывает процессы определенного юзера.
ps aux : показывает все системные процессы.
ps aux --forest : показывает все системные процессы, вывод процессов в форме дерева в определенной иерархии.

touch : создает пустой файл.

du : показывает использование жесткого диска.
du -sh : показывает суммарно, в человеко-читаемом формате, общее использование диска, текущей директории и подкаталогов.
du -sh * : тоже самое, но для каждого файла и директории. помогает найти большие файлы, занимающие много места.

wc : счетчик слов
wc -l filename.txt : посчтитает сколько строк находится в файле filename.txt

cp : копировать файл
cp filename filename.backup : скопирует filename в filename.backup

mv : перемещает файлы и папки.

rm : удаляет файл или папку.
rm filename.txt : удаляет filename.txt, при этои спросит действительно ли Вы хотите удалить данный файл.
rm -f filename.txt : удалит filename.txt без подтверждения удаления
rm -rf tmp/ : рекурсивно удаляет каталог tmp, все файлы в нем и подкаталоги.

TAR: упаковка и распаковка .tar.gz и .tar файлов.
tar -zxvf file.tar.gz : распакует архив
tar -xvf file.tar : распакует архив
tar -cf archive.tar contents/ : содержимое каталога contents/ упакует в archive.tar
gzip -d filename.gz : Декомпрессирует и распакует файл.

ZIP Files: распаковывает .zip файлы
unzip file.zip

Firewall - iptables команды
iptables -I INPUT -s IPADDRESSHERE -j DROP : Запретит все соединения с указанного IP
iptables -L : Лист правил iptables
iptables -F : очищает все iptables правила
iptables --save : Сохраняет текущие правила в память на диск
service iptables restart : Перезапустит iptables

MySQL Shell Commands:
mysqladmin processlist : покажет активные mysql соединения и запросы.

Часто при написании сценариев Bash вам необходимо завершить сценарий при выполнении определенного условия или выполнить действие на основе кода выхода команды.

В этой статье мы рассмотрим встроенную команду exit Bash и статусы выхода выполненных команд.

Статус выхода

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

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

Специальная переменная $? возвращает статус выхода последней выполненной команды:

Команда date завершена успешно, код выхода равен нулю:

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

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

При выполнении многокомандного конвейера статус выхода конвейера соответствует состоянию последней команды:

В приведенном выше примере echo $? напечатает код выхода команды tee .

Команда exit

Команда exit закрывает оболочку со статусом N Он имеет следующий синтаксис:

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

Примеры

Статус выхода команд может использоваться в условных командах, таких как if . В следующем примере grep завершит работу с нулем (что означает истину в сценариях оболочки), если «строка поиска» найдена в filename :

При запуске списка команд, разделенных && (И) или || (ИЛИ), статус выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена, только если cd вернет ноль:

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

Если вы запустите сценарий как root, код выхода будет нулевым. В противном случае скрипт выйдет со статусом 1 .

Выводы

Каждая команда оболочки возвращает код выхода при завершении. Команда exit используется для выхода из оболочки с заданным статусом.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

когда я использую exit команда в скрипте оболочки скрипт завершит работу терминала (приглашение). Есть ли способ завершить скрипт, а затем остаться в терминале?

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

изменить: Чтобы быть более конкретным, есть два скрипта run2.sh as

когда я запускаю его с помощью . run2.sh , а если это хит exit на главную run.sh , Я хочу, чтобы он остановился на терминале и остался там. Но используя exit весь терминал закрывается.

PS: Я пытался использовать return , а echo codeline все равно будет выполнен.

"проблема" на самом деле заключается в том, что вы используете источник, а не выполняете сценарий. Когда вы создаете файл, его содержимое будет выполняться в текущей оболочке, а не порождать подрешетку. Таким образом, все, включая exit, повлияет на текущую оболочку.

вместо exit , вы хотите использовать return .

Да, вы можете использовать return вместо exit . Его основная цель-вернуться из функции оболочки, но если вы используете ее в source -D скрипт, он возвращается из этого скрипта.

вызовите функцию оболочки для выхода с возвращаемым значением n. Если n не поставляется, возвращаемое значение статус выхода последняя команда, выполненная в функции. Это также может быть использовано для завершения выполнения выполняемого сценария с . (или source ) builtin, возвращаясь либо n или статус выхода последней команды в скрипте как выход состояние сценария. Любая команда, связанная с RETURN ловушка выполнена перед выполнением возобновляется после выполнения функции или скрипта. Статус возврата не равен нулю, если return используется за пределами функция и не во время выполнения скрипта . или source .

вместо запуска кода с помощью . run2.sh вы можете запустить скрипт с помощью sh run2.sh или bash run2.sh
Новый экземпляр будет открыт для запуска скрипта, затем он будет закрыт в конце скрипта, оставив другую оболочку открытой. `

Это как поставить функцию внутри вашего run2.sh сценарий. Вы используете код выхода внутри run пока источник ваш run2.sh файл в bash tty. Если функция give the run имеет возможность выйти из вашего скрипта и дать run2.sh его сила, чтобы выйти из Терминатора. Затем, потому что функция run имеет возможность выйти из вашего теминатора.

в любом случае, я одобряю с Kaz это проблема дизайна.

Я думаю, что это происходит потому, что вы используете его в режиме источника с точкой

вы должны запустить это в подсхеме:

правильно, что исходные и выполненные скрипты используют return и exit сохранить сессию открыть, как уже отмечалось.

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

следующий пример может быть запущен напрямую, как foo.sh или получены как . foo.sh / source foo.sh . В любом случае он будет держать сессию открытой после "выхода". The $@ строка передается так, что функция имеет доступ к аргументам внешнего скрипта.

$ foo.sh
$ Вы хотели бы XYZ? (Y / N): n
$ . foo.sh
$ Вы хотели бы XYZ? (Y / N): n
$ |
(окно терминала остается открытым и принимает дополнительный вход)

это может быть полезно для быстрого тестирования изменений сценария в одном терминале, сохраняя кучу кода лома под основным exit / return в то время как вы работаете. Это также может сделать код более портативным в некотором смысле (если у вас есть тонны скриптов, которые могут или не могут быть вызваны по-разному), хотя это гораздо менее неуклюже просто использовать return и exit где это уместно.

Если ваш эмулятор терминала нет -hold вы можете санировать исходный скрипт и удерживать терминал с помощью:

в противном случае вы можете использовать $TERM -hold -e script

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

чтобы написать сценарий, который является пуленепробиваемым для запуска в качестве сценария оболочки или был получен как rc-файл, скрипт может проверить и сравнить и $BASH_SOURCE и определить exit можно смело использовать.

Favorite

Добавить в избранное

Bash Heredoc

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

В этой статье мы рассмотрим встроенную команду exit в Bash и статусы выхода выполненных команд.

Статус выхода

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

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

Специальная переменная $? возвращает состояние выхода последней выполненной команды:

Команда date выполнена успешно, и код выхода равен нулю:

Если вы попытаетесь запустить команду ls с несуществующим каталогом, код выхода будет ненулевым:

При выполнении многокомпонентного конвейера состояние выхода конвейера соответствует статусу последней команды:

В приведенном выше примере echo $? будет напечатан код выхода команды tee.

Команда exit в Bash

Команда exit выходит из оболочки со статусом N. Он имеет следующий синтаксис:

Если N не указан, код состояния выхода соответствует коду последней выполненной команды.

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

Примеры

Статус выхода команд можно использовать в условных командах, таких как if. В следующем примере grepвыйдет с нуля (что означает true в сценариях оболочки), если «search-string» находится в filename:

При запуске списка команд, разделенных &&(and) или ||(or), состояние выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена только если cd вернет ноль:


Как изменить оболочку Shell в Linux

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

Когда вы работаете в терминале, именно командная оболочка обрабатывает вводимые вами команды. Более того, оболочки Linux поддерживают написание программ на языке оболочки.

Оболочки Linux

Одна из самых популярных командных оболочек — это оболочка Bash (Bourne Again Shell). Она используется по умолчанию в большинстве дистрибутивов Linux.

Существуют разные оболочки Linux. Можно отметить:

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

Как определить текущую командую оболочку

Есть несколько способов определить оболочку, используемую по умолчанию в вашей системе Linux. Рассмотрим несколько из них, так как в разных системах (и оболочках) какие-то способы могут не сработать.

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

Способ 1

Переменная окружения SHELL хранит путь до исполняемого файла оболочки. Выполним команду:

Из вывода команды, мы видим, что используется оболочка bash.

Способ 2

Также можно воспользоваться командой echo $0 . Данная команда выведет на экран имя текущего работающего процесса, внутри которого она выполнена. Так как мы выполняем команду внутри оболочки, то будет выведено имя оболочки.

Способ 3

Определим, работающий процесс оболочки командой ps.

Определить текущую оболочку Shell в Linux

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

Список оболочек, которые в данный момент установлены и доступны в системе Linux, хранится в файле /etc/shells

Выведем содержимое файла /etc/shells , для этого выполняем команду:

Список командных оболочек Linux

Как временно переключиться на другую оболочку

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

Например, переключимся на оболочку sh. Выполняем команду:

Переключиться на другую оболочку в Linux

Как изменить оболочку

Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).

Чтобы изменить оболочку текущего пользователя нужно выполнить команду:

В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).

Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):

После этого нужно выйти и снова войти в систему.

Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:

Заключение

Мы рассмотрели, как определить текущую оболочку Linux, как просмотреть список доступных оболочек, а также как изменить оболочку, используемую по умолчанию.

Чтобы получить информацию о какой-либо оболочке (доступной в системе) можно воспользоваться Man-страницами. Например:

Дополнительные оболочки можно устанавливать средствами системы (из репозиториев). Например, для установки оболочки fish в Ubuntu Linux, выполните команду

Читайте также: