Що означає символ стрілки (“->”) у командному рядку?


6

Я працюю з терміналом (Mac OS X), але я думаю, що це вбудована частина Linux. Іноді, коли я виконую команду, термінал повертає нову, з відступом, строчку -> на лінії. Схоже, що він щось чекає, але я не знаю, чи потрібно це робити з мого боку чи ні. Натискання клавіші enter просто повертає іншу, ідентичну лінію. Коли я Ctrl + C, він говорить Aborted, що означає щось чітко обробляється. Що це означає? Наприклад, наступне:

$ mysql -u root -h host -p
Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is X
Server version: 5.1.39-log MySQL Server

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> mysqldump my_database
    -> 
    -> [Ctrl + C]
    -> Aborted
$

Редагувати: Здається, це невірний синтаксис для команди, але я не впевнений, що це є причиною стрілок.


10
Насправді, OS X є Unix. GNU / Linux є дуже схожою, але не безпосередньо пов'язаною з операційною системою.
AndrejaKo

І в цьому конкретному випадку ви, напевно, не хочете виконувати mysql спочатку. Просто запустіть mysqldump my_database самостійно, поза запитом MySQL.
Arjan

1
Bash shell буде робити подібно з незакритою цитатою.
Rob

→ або виглядати краще.
Jonny

Відповіді:


11

У інструменті командного рядка MySQL, що означає, що інструмент очікує, що ваш вхід буде продовжено на наступному рядку. Тут він чекає шлях призначення.

Загальні "повні" команди SQL записуються з відступами, які підтримуються в командному рядку. Ви б сказали щось подібне

SELECT
    `users`.*
FROM
    `users`
WHERE
    `users`.`is_active` = 1 AND
    `users`.`age` < 13
ORDER BY
    `users`.`username`

Чудово, але як вийти з "- & gt;" ? Крапка з комою не працює.
Amalgovinus

7

Стрілки є інтерактивним запитом на продовження. Якщо ви введете незавершену команду, оболонка SQL (викликана командою mysql) чекає на решту.

У цьому конкретному випадку оболонка SQL чекає шлях призначення для mysqldump.

Крім того, команди не завершуються, поки ви не завершите команду крапкою з комою. (Завдяки @MrStatic)


1
У даному випадку, це не оболонка, яка чекає - це mysql. Проте ви інакше правильні.
Dennis Williamson

1
Щоб додати далі, можна сказати команду, принаймні, в mysql, незавершене, ви не закінчуєтесь ';'
Unfundednut

@Dennis Вибачте за мою неточну формулювання - Технічно це "SQL shell" (див dev.mysql.com/doc/refman/5.1/en/mysql.html ) але так, це не bash / zsh unix shell… Я буду редагувати свою відповідь.
ghoppe

1

Ви дійсно маєте синтаксичну помилку; Команди SQL повинні закінчуватися крапкою з комою. Наприклад:

mysqldump my_database;

0

Якщо ви використовуєте MariaDB , mysqldump не є командою mysql. Запустіть його в bash.

$ mysqldump -u root -h host -p ### my_database > dump.sql

Щоб бути більш точним, запустіть mysqldump --help.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.