アポストロフィと引用符を含むコマンドにエイリアスを追加するには?

アポストロフィと引用符を含むコマンドにエイリアスを追加するには?

前の質問で決めました。

alias groe= ?vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!'?

私の例では、 "?s"を置き換えて動作させる方法を知りません。疑問符とアポストロフィが試みられた。どんなアイデアでも大いに感謝します。ありがとう

答え1

外部引用符を失うためにシェル関数で作成します。

groe() {
  vim -c 'normal "+p1Gdddd"' -c ':%s/\n/' -c 'normal"gVGgJy"' -c'q!' "$@"
  }

、、、、、、vimパラメータを使用して呼び出す必要があります。 at は関数に提供する引数を拡張するため、機能する必要があります。-cnormal "+p1Gdddd"-c:%s/\n/-cnormal"gVGgJy"-cq!"$@"groe foo.txt

答え2

「内部」単一引用符の場合は、外部一重引用符を閉じてからエスケープされた一重引用符を追加し、外側の一重引用符を再度開き、一重引用符を取得します。

echo 'It'\''s ugly.'

つまり、すべてが外部一重引用符で囲まれてい'ます。'\''

エイリアスは次のとおりです。

alias groe='vim -c '\''normal "+p1Gdddd"'\'' -c '\'':%s/\n/'\'' -c '\''normal"gVGgJy"'\'' -c'\''q!'\'''

$'...'または、単一引用符を一度だけエスケープし、文字もエスケープするCスタイルエスケープを使用できます\n

echo $'It\'s a newline: \\n'
alias groe=$'vim -c \'normal "+p1Gdddd"\' -c \':%s/\\n/\' -c \'normal"gVGgJy"\' -c\'q!\''

答え3

MacOSでは、myに次の行を入力すると、後でコマンドを使用するときにのみ便利なエイリアスを設定する.bash_profileエイリアスが提供されることがわかりました。logr

alias logr="alias r='java -jar LogUtil.jar -gui'"

すべての新しいシェルに対して作成したエイリアス全体の周囲に二重引用符を使用します""が、エイリアスはコマンドの実行後にのみ使用できます。logrrlogr

関連情報