Mysql-Befehl nach Pipe nicht gefunden

2

Ich habe MySQL mit Homebrew installiert.

mysql --version
mysql  Ver 8.0.11 for osx10.13 on x86_64 (Homebrew)

und

which mysql
/usr/local/bin/mysql

aber wenn ich versuche, es nach einer Pipe zu verwenden, erhalte ich die folgende Fehlermeldung

unzip -p dump.sql.zip | mysql
zsh: command not found:  mysql

Warum ist das so und wie kann ich das beheben?

Paul Vincent Beigang
quelle
1
Was ist der Fehler? Zweitens werden mysqlverschiedene Argumente wie Benutzer, Kennwort (sofern zutreffend), Datenbank usw. verwendet. Einige davon scheinen Ihnen zu fehlen.
Allan
Bitte fügen Sie die Fehlermeldung hinzu, die Sie erhalten, damit die Frage erneut geöffnet werden kann.
Nohillside
Ich habe die Fehlermeldung hinzugefügt, sie war schon vorher im Fragentitel. Es müssen keine mysqlArgumente hinzugefügt werden , da ein mysqlweiterer Fehler gemeldet wird , wenn er erkannt wird.
Paul Vincent Beigang
2
Details sind wichtig. Wenn es wirklich zwei Leerzeichen zwischen found:und mysqlin der Fehlermeldung gibt, mussten Sie beim Drücken der Leertaste immer noch shift / opt / whatever drücken, um das Pipe-Zeichen einzugeben.
Nohillside

Antworten:

5

Sie haben ein zusätzliches Zeichen mysql, das wie ein Leerzeichen aussieht, aber kein Leerzeichen ist. Sie müssen dies beheben, bevor Sie den Befehl ausführen. Dieses Problem tritt auf, wenn Sie die Leertaste drücken, während Sie die OptionTaste gedrückt halten.

$ # Option + Space
$ unzip -p dump.sql.zip | mysql
zsh: command not found:  mysql
$ # Regular Space
$ unzip -p dump.sql.zip | mysql
...
expected output
...

Ein anderes Beispiel:

$ # Option + Space
$ echo "hi" | less
-bash:  less: command not found
$ # Regular Space
$ echo "hi" | less

hi
(END)

Eine andere Möglichkeit besteht darin, den Raum nach der Rohrleitung vollständig zu entfernen:

$ echo "hi" |less

hi
(END)

Option+ Space= \ xc2 \ xa0 (UTF-8)

Space = Regulärer Raum

Pixelomer
quelle
2
Während der Eingabe ist |mysqles möglicherweise besser, sich daran zu gewöhnen, shift / opt / whatever nach der Eingabe der Pipe und vor der Eingabe des Leerzeichens neu zu starten.
Nohillside
Macht das einen Charakter, der wie ein Leerzeichen aussieht?
Pixelomer
2
Ein reales zusätzliches Leerzeichen erklärt die Fehlermeldung nicht, das Ausführen cmd1 | cmd2ist eine perfekt gültige Shell-Syntax. Und ja, abhängig von den Tastatureinstellungen und dem Gebietsschema.
Nohillside
2
Ich bearbeite die Antwort, um weitere Informationen zu erhalten.
Pixelomer
1

Beachten Sie den zusätzlichen Speicherplatz, der nach dem ":" in der ersten Fehlermeldung angegeben wird. Dies liegt daran, dass anstelle eines normalen Leerzeichens das Zeichen "Option Space" verwendet wird. Ihre Ausgabe ist ähnlich wie die erste dieser beiden

[Option Leerzeichen vor dem ersten fehlenden Befehl in der Pipe [1]

Tom Hallam
quelle