
Aufgrund meiner vorherigen Frage habe ich beschlossen,
alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?
Ich kann nicht herausfinden, wie ich in meinem Beispiel '?s' ersetzen kann, damit es funktioniert. Habe es bereits durch Fragezeichen und Apostrophe versucht. Für alle Ideen bin ich dankbar. Danke
Antwort1
Machen Sie eine Shell-Funktion daraus, damit Sie die äußeren Anführungszeichen weglassen können.
groe() {
vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
}
Dies sollte vim
mit den Argumenten -c
, normal "+p1Gdddd"
, -c
, , :%s/\n/
, -c
, normal"gVGgJy"
, aufgerufen werden -cq!
. Das "$@"
wird auf die Parameter erweitert, die Sie der Funktion gegeben haben, also groe foo.txt
sollte es funktionieren.
Antwort2
"Innerhalb" von einfachen Anführungszeichen können Sie ein einfaches Anführungszeichen haben, indem Sie das äußere einfache Anführungszeichen schließen, dann ein maskiertes einfaches Anführungszeichen hinzufügen und die äußeren einfachen Anführungszeichen wieder öffnen, wie
echo 'It'\''s ugly.'
Mit anderen Worten: Alles '
wird zu '\''
plus äußeren einfachen Anführungszeichen.
Ihr Alias würde folgendermaßen aussehen:
alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''
Oder Sie könnten Escape-Zeichen im C-Stil verwenden $'...'
, bei denen Sie einfache Anführungszeichen nur einmal escapen müssen, aber auch Zeichen in escapen \n
:
echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''
Antwort3
Unter MacOS habe ich festgestellt, dass ich durch Einfügen der folgenden Zeile .bash_profile
einen Alias erhielt, der meinen nützlichen Alias erst bei der späteren Verwendung des logr
Befehls einrichtete:
alias logr="alias r='java -jar LogUtil.jar -gui'"
""
Ich habe den gesamten logr
Alias, der für alle neuen Shells erstellt wird, in Anführungszeichen gesetzt , aber der r
Alias wird erst verfügbar, wenn ich den logr
Befehl ausgebe.