Im breiten Bild zeigen Sie: ....
...cd maldetect-* &&␠|<-window boundary bash ./install.sh
(Das Zeichen vor dem vertikalen Balken ist HTML oder Unicode-Zeichen U + 2420 (Symbol für Leerzeichen).
Dieser Raum sollte (HAS) da sein. Wenn die Fenstergrenze nicht vorhanden ist, lautet die Zeile:
...cd maldetect-* && bash ./install.sh
Wenn Sie nicht das Leerzeichen hätten, dann hätte && kein Leerzeichen zwischen dem Wort und dem Beginn des 'bash'-Wortes. Dies sollte nicht schaden, wenn Sie in bash laufen. ABER das ist nur ein Beispiel Normalerweise haben Sie ein Leerzeichen zwischen dem doppelten Et-Zeichen und dem Leerzeichen.
Wenn deine Räume da sein sollten, was könnte deine Probleme verursachen ... hmmmm .... ARG! Sie kleben dieses "in" ... bash ... Äh oh ...
Wenn Sie in bash einfügen, ist bash "Buggy" (eine Ansichtssache) für das Einfügen aufgrund von Änderungen, die vor einigen Jahren vorgenommen wurden. Wenn Sie in Ihrem eingefügten Text TABs (yup, Einrückung) haben, wird die "Autocomplete" -Funktion von bash aufgerufen (ich habe mich darüber beschwert, aber mir wurde gesagt, dass niemand Text in Bash einfügt ... Husten, Husten ) (sich beschweren) auf der 'bug-bash@gnu.org-Liste', obwohl ich bezweifle, dass es bald behoben sein wird). Wenn die Autovervollständigung aufgerufen wird, wird das nächste Zeichen des eingefügten Texts häufig verschluckt, da eine Frage gestellt wird:
> ls <'complete-key' pressed> Display all 199 possibilities? (y or n)
In der Regel ist der eingefügte Text beschädigt. Das war für mich sowieso kein Problem, da meine Tabs normalerweise auf Leerzeilen stehen (weil sie Code einrücken). Früher gab es eine Option, um Code-Vervollständigungs-Pressevorgänge in einer leeren Zeile zu ignorieren (@ Zeilenanfang oder wenn nur Leerzeichen vor dem Drücken stehen). Dies wurde so geändert, dass das Abschlusszeichen nur in leeren Befehlszeilen ignoriert wird (nicht in einer leeren TTY-Zeile). Das Einfügen mehrerer Befehle in die Eingabe wird normalerweise als Bash als eine Art fortgesetzter Befehl betrachtet - NICHT als leere Befehlszeile. Es ist unnötig zu erwähnen, dass dies eine Menge Probleme verursacht.
Eine unvollkommene Lösung für mich bestand darin, den Code-Vervollständigungsschlüssel von TAB an Backquote umzuordnen (" ") (above tilde key). (same bug occurs if you have
in Ihrem Text, aber für mich verwende ich dies viel seltener als TAB). Er wird in der .inputrc -Datei Ihres Home-Verzeichnisses festgelegt, die steuert wie sich 'readline' (von der bash zum Lesen von Zeilen, zum Editieren usw.) verhält, insbesondere ein Abschnitt in meinem ".inputrc" hat bash-spezifische Konfigurationsoptionen:
$if bash # use backquote as completion (yes, that's shift-'~') # not ideal, but quickest "hack" to get mostly # transparent pasting (backquote isn't used nearly as often as TAB) TAB:tab-insert "`":complete $endif
Alternativen: 1) Konvertieren Sie vor dem Einfügen alle Tabulatoren in Leerzeichen, damit die TAB keinen Befehlsabschluss auslöst. 2) Schreibe den Text immer in eine Datei und quelle (.) Die Datei oder mache sie ausführbar und füge in der ersten Zeile '#! / Bin / bash' hinzu, um daraus ein Shell-Skript zu machen.
Theoretisch sollte es auch möglich sein, die Befehlsvollendung abzuschalten, aber ich verwende sie zu oft und habe es auch nie versucht, es zu versuchen.
Was ich normalerweise jetzt mache, ist, dass ich das Skript in einem Fenster bearbeite (normalerweise gvim), und in dem Fenster, in dem ich gvim gestartet habe, führe ich aufeinanderfolgende Iterationen des Skripts aus - und vermeide so das "Einfügen". Sicherlich nicht meine erste Wahl, aber bashs verdorbene Eingabe durch Schlucken von Dingen nach einem vollständigen Schlüssel hat mich in diese Richtung gedrängt.
Wenn Sie dies als Fehler melden, müssen Sie eine Lösung anbieten! ;-) Das ist das Problem:
> ls \<carriage return> >> [here people want to be able to hit 'TAB' and get an autocomplete of of the files in the current directory. It looks like an empty line, but it is a really a continued command line from the previous line.
Das Gleiche passiert, wenn Sie Befehle in Bash einfügen ... einige haben Registerkarten, wo Sie sie nicht möchten ...
(Ps Hope, das hilft, und ich bin nicht ganz in das linke Feld gegangen, aber als Sie "Einfügen" erwähnt haben und es wie ein Bash-Skript aussieht ... und Sie erwähnen, dass Sie Tabs verwenden, die ebenfalls eingefügt werden), klangen wie das exakt gleiche Problem, dem ich begegnet bin.
Backquote als vollständigen Schlüssel zu verwenden, ist manchmal etwas umständlich, aber zu oft werden Registerkarten im eingefügten Text vorhanden sein.