Linux как выйти из bash
Перейти к содержимому

Linux как выйти из bash

  • автор:

Выйти из режима ввода

Добрый день. Работаю в консоли CentOs и иногда при нажатии на какую-то комбинацию клавиш появляется ввод из которого не знаю как обратно выйти — Ctr+Z не помогает. Вот так выглядит эта картина: http://itmages.ru/image/view/2390869/7c5bf4f5 Подскажите пжл, как выйти обратно в консоль в такой ситуации?

Nezhnayka28
24.03.15 19:55:12 MSK

Ctrl+C или завершить команду.

DeadEye ★★★★★
( 24.03.15 20:04:25 MSK )

это приглашение $PS2, которое используется, чтобы запросить продолжение ввода. Например если ввести одинарную кавычку, в таком случае, чтобы завершить ввод, нужно ввести вторую. Был бы полный скриншот, было бы яснее. Попробуй Ctrl-D нажать, это отправить EOF в интерпретатор, чего он скорее всего не ожидает и скажет чтото типа

~ $ ' > > > bash: unexpected EOF while looking for matching `'' bash: syntax error: unexpected end of file 

avsej ★
( 24.03.15 20:06:16 MSK )
Ответ на: комментарий от avsej 24.03.15 20:06:16 MSK

Попробуй Ctrl-D нажать, это отправить EOF в интерпретатор, чего он скорее всего не ожидает и скажет чтото типа

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

Linux как выйти из bash

Есть вот такой скрипт к примеру
#!/bin/bash
CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0 || {echo ALarm; exit;}`
CpuUser=`echo $CpuUser_tmp | awk ‘{ print $1}’;`

И не работает. Т.е. необходимо если не выполнилась команда snmpget то чтобы дальше скрпит не выполнялся.

Оглавление

  • Как выйти из bash скрипта, gr, 15:41 , 23-Мрт-05, (1)
  • Как выйти из bash скрипта, jonatan, 15:50 , 23-Мрт-05, (2)
    • Как выйти из bash скрипта, gr, 15:52 , 23-Мрт-05, (3)
      • Как выйти из bash скрипта, jonatan, 16:23 , 23-Мрт-05, (4)

      Сообщения по теме

      >Есть вот такой скрипт к примеру
      >#!/bin/bash
      >CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0 || {echo ALarm;
      >exit;}`
      >CpuUser=`echo $CpuUser_tmp | awk ‘{ print $1}’;`
      >
      >И не работает. Т.е. необходимо если не выполнилась команда snmpget то чтобы
      >дальше скрпит не выполнялся.

      {echo ALarm; exit; }

      производит выход из блока {}
      так что if напиши классический

      Например так

      #!/bin/bash
      CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0`
      RETVAL=$?
      [ $RETVAL -eq 0 ] || { echo ALarm; exit; }
      CpuUser=`echo $CpuUser_tmp | awk ‘{ print $1}’;`

      >Например так
      >
      >#!/bin/bash
      >CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0`
      >RETVAL=$?
      >[ $RETVAL -eq 0 ] || { echo ALarm; exit; }
      >CpuUser=`echo $CpuUser_tmp | awk ‘{ print $1}’;`

      сам это запускал? exit выходит из оболочки {}

      >сам это запускал? exit выходит из оболочки {}

      Да, я ты?

      man bash

      exit [n]
      Cause the shell to exit with a status of n. If n is omitted,
      the exit status is that of the last command executed. A trap on
      EXIT is executed before the shell terminates.

      >Есть вот такой скрипт к примеру
      >#!/bin/bash
      >CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0 || {echo ALarm;
      >exit;}`
      для выполнения команды в `хх` порождается новый екз шелла и из него и делается exit, а надо
      проверять результат команды CpuUser_tmp=.
      Ясно?

      >Есть вот такой скрипт к примеру
      >#!/bin/bash
      >CpuUser_tmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0 || {echo ALarm;
      >exit;}`
      >CpuUser=`echo $CpuUser_tmp | awk ‘{ print $1}’;`
      >
      >И не работает. Т.е. необходимо если не выполнилась команда snmpget то чтобы
      >дальше скрпит не выполнялся.

      #!/bin/bash
      Cputmp=`/usr/local/bin/snmpget -m ALL -v 1 -c public 192.168.1.1 1.3.6.1.4.1.21.11.2021.9.0 || echo NULL`
      if [ $Cputmp != «NULL» ]; then
      echo «True»
      else
      echo «False»
      exit 1
      fi

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

      Linux как выйти из bash

      Запись: and-semakin/mytetra_data/master/base/15910840983lhxkf8phh/text.html на raw.githubusercontent.com

      В bash есть команда, которая позволяет завершить выполнение скрипта с опциональным кодом выхода.

      По умолчанию код выхода берется из предыдущей перед exit команды:

      # Will exit with status of last command.

      Можно передавать явно:

      exit 0 # success

      exit 113 # some specific error

      • Выполнить несколько команд и завершиться ошибкой при хотя бы одной ошибке в скрипте Bash
      • Узнать директорию, в которой расположен текущий скрипт в bash
      • Экспортировать переменную окружения перманентно в bash
      • Сохранять историю команд bash из нескольких терминалов одновременно
      • Перенаправление вывода в bash в Linux
      • Записать несколько строк из bash в файл в Linux
      • Запустить соседний скрипт, лежащий в той же директории, в bash
      • Проверить, что переменная пуста или не существует в bash
      • Завершить (выйти) скрипт с кодом ошибки (выхода) в bash
      • Переименовать все файлы в директории однообразно при помощи bash
      • Распарсить .env (dotenv) файл в bash напрямую
      • Настроить приветствие терминала (prompt) в bash

      Как выйти из man при этом не останавливая сам процесс?

      Что бы запустить задачу в фоновом режиме надо в конце команды добавить знак &, либо запустить её в обычном режиме, после чего нажать комбинацию ctrl+Z, отправив ей сигнал TSTR. Что бы продолжить её выполнение в фоновом режиме используется команда bg (background).

      Отобразить список текущих фоновых задач можно командой jobs.

      Что бы вывести задачу из фонового режима – используется команда fg (foreground), которой можно либо передать номер задачи в качестве аргумента.

      $ tar cpf somefile.tar somefolder 2>/dev/null # запускаем tar ^Z # нажимаем Ctrl+Z [1]+ Stopped tar cpf somefile.tar somefolder 2>/dev/null $ jobs # Смотрим список задач [1]+ Stopped tar cpf somefile.tar somefolder 2>/dev/null $ bg 1 # Продолжаем выполнение первой задачи в фоне [1]+ tar cpf somefile.tar somefolder 2>/dev/null $ fg 1 # Выводим задачу на передний план 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *