Как выйти из утилиты командной строки PostgreSQL: psql


1823

Какую команду или короткий ключ я могу использовать для выхода из утилиты командной строки PostgreSQL psql?


4
@a_horse_with_no_name: я не в шоке от вопроса, а от количества голосов :) Сравните, например, с тем, Как выйти из редактора Vi одним нажатием клавиши?
user272735

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

175
Реальный вопрос не в том, «способны ли люди читать руководство» , а в том, «должно ли корпоративное программное обеспечение реагировать на стандартные последовательности выхода», например, «не знаю», «выйти»? Необходимость прочитать руководство, чтобы бросить курить, кажется очень нелогичным.
Хельдар,

23
@Kheldar Действительно, это просто плохой дизайн пользовательского интерфейса (в сочетании с высокомерием). Люди не уверены в странных вещах.
Иэн Коллинз

49
что еще более важно, этот пост стал первым хитом, когда я в Google "exit psql"
Angel S. Moreno

Ответы:


2544

Введите \qи нажмите, ENTERчтобы выйти psql.

ОБНОВЛЕНИЕ: 19-ОКТЯБРЯ-2018

Начиная с PostgreSQL 11 , ключевые слова " quit" и " exit" в интерфейсе командной строки PostgreSQL были включены, чтобы упростить выход из инструмента командной строки.


28
Это не будет работать, если вы находитесь в однопользовательском бэкэнд-режиме ( --single). Вместо этого используйте ответ Каарела ( Ctrl-D). В дополнение к постоянной работе в pgsql, он будет работать в большинстве других ваших оболочек Unix (python, mysql и т. Д.). Если вы всегда делаете вещи «стандартным» образом, ваш мозг будет менее загроможден мелочами.
варенье

1
Тип \? за помощь, если просто «помощь» не помогает. Это яркий пример того, как не создавать взаимодействие между человеком и компьютером. Кто думал об этой великой идее \? за помощь и \ q выйти?
Jaywalker

1
Ctrl-d также поможет
YOUN


1
@aorth Да, они объявили об этом несколько месяцев назад: stackoverflow.com/a/50513432/5070879
Лукаш Шозда

748

Моя обычная последовательность клавиш:

quit()
quit
exit()
exit
q
q()
!q
^C
help
Alt + Tab
google.com
Quit PSQL
\q

Я думаю, что ветераны командной строки PSQL обычно сокращают это до просто:

\q

3
Я попробовал Ctrl-Z, сам. Он сделал свою работу более или менее, но я не был полностью удовлетворен. :(
mjwach

12
cntrl + D, чтобы выйти из любого места
Видур Пандж

1
@mjwach ctrl + z просто приостанавливает процесс в фоновом режиме, почти наверняка не то, что вы хотите.
LucidObscurity

postgres = # / q postgres- # \ q
Дмитрий Пракапенка

2
Посмеялся с твоим ответом. Мозги разбиты из-за различных инструментов, которые мы используем.
Серхио А.

299

Ctrl+ Dэто то, что я обычно использую для выхода из консоли psql.


3
Ага. Это также работает в bash, sh, ssh, zsh, irb, pry, python, sudo su, node и других. Это стандартный способ выхода из оболочки любого рода.
Ajedi32

5
Не просто оболочка. Любая достаточно разумная программа, которая читает из stdin и интерпретирует пустую строку как EOF, примет ^ D.
Кевин

Это не работает для меня, вероятно, потому что я использую раскладку клавиатуры Dvorak на OSX. Ни cmd-D, ни cmd-E (где D находится на Qwerty) не работает.
NessBird

4
@NessBird Ctrl - это не то же самое, что Cmd. Попробуйте Control-D вместо Command-D.
Тильман Шмидт

27

Пытаться:

  • Ctrl+ Z- посылает TSTPсигнал ( TSTPсокращение от «терминальная остановка»)
  • Ctrl+ \- это посылает QUITсигнал

Для любопытства:

  • Ctrl+ D- это отправляет EOFперсонажа. EOFобозначает "конец файла". В этом конкретном случае он выходит из подпрограммы psql, поскольку оболочка ожидает ввода данных пользователем. Это не должен быть «путь», так как он не работает, если:
    • любой другой символ вводится раньше - попробуйте ввести пробелы, а затем нажмите Ctrl+ D, он не выйдет из psql.
    • если пользовательский ввод вообще не требуется

4
Не нужно ничего «пробовать». Правильная команда чисто выход psqlбудет хорошо документированы и\q
a_horse_with_no_name

2
Как ясно говорит @hobs\q : «Это не будет работать, если вы находитесь в однопользовательском бэкэнд-режиме (--single). Вместо этого используйте ответ Kaarel's answer ( CtrlD)». ИМХО использовать CtrlDтоже нельзя, и я объяснил, почему выше, и предложил альтернативу.
июня

1
Спасибо! Ctrl+Zбыла единственная команда, которая работала для меня - я был подключен к базе данных через туннель, который потерял соединение - ни то, \qни другое Ctrl+D, но я мог Ctrl+Zи затем убил приостановленный процесс
Сергей

20

quitили exitили\q

На основе PostgreSQL 11 Beta 1 выпущен! :

Улучшения взаимодействия с пользователем

Еще одной особенностью, попавшей в эту категорию, была невозможность интуитивно выйти из командной строки PostgreSQL (psql). Были многочисленные зарегистрированные жалобы пользователей, пытающихся выйти с помощью команд quit и exit , только для того, чтобы узнать, что это была команда \ q.

Мы слышали ваше разочарование и теперь добавили возможность выхода из командной строки, используя ключевые слова quit и exit, и надеемся, что выход из сеанса PostgreSQL теперь так же приятен, как и использование PostgreSQL.


2
вредные привычки, вредные привычки везде

1
@randomware Не могли бы вы уточнить?
Лукаш Шозда

1
да, я имею в виду, что обратная косая черта была удовлетворительной и соответствовала другим внутренним командам pgsql без точки с запятой, и можно было бы продолжить \?или \hпродолжить изучение «всего остального» imho

6
«Было зарегистрировано множество жалоб» -> «обратный слеш был удовлетворительным»? Хех.
Стив Беннетт


8

Я узнал, что могу включить \ q в пакетный файл .sql, чтобы я мог выйти из psql раньше из операции \ i.


4

На самом деле, \q, exitи CTRL + Ddid'nt работал для меня , чтобы выйти из Psql программы.

Ctrl + Shift + D

Работал на меня. Надеюсь, это поможет кому-то :)

Моя версия Ubuntu 19.04


0

Конкретно говоря, как выйти из следующего состояния на Ubuntu 18.04.

Я поставил исходный статус следующим образом.

postgres@user:~$

Если psql введен, он изменяется на новый статус следующим образом.

postgres@user:~$ psql

postgres=# 

Если \ q вводится, см. Операцию.

postgres@user:~$ \q

Он меняется на исходный статус следующим образом.

postgres@user:~$

Быстрый способ - убить терминал. Но я хочу знать другой метод выхода, не убивая терминал.

Спасибо,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.