この質問は重複しません。エイリアスがbashコマンドを直接実行するのとは異なる動作をするのはなぜですか?なぜなら、私はすでに成功していないままその解決策を試したからです。すべての一重引用符を二重引用符に変更し、その逆も同様でした。このコマンドはどちらも実行しません。
sys
システムの変更を追跡し、sys.md
日付を追加し、行をインポートして貼り付け、-
マークダウンh2形式に置き換え、新しい行を開き、1つを-
マークダウンとして挿入するファイルを開くエイリアスを実装しようとしています。弾丸の形式。 vi.stackexchange.comでこのコマンドを実装するのに役立ちました。効果があります:
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
一重引用符を二重引用符に置き換えると、$ pu_が評価され、次の結果が得られます。
zsh: event not found: date
だから一重引用符が重要です。ただし、エイリアスを実装する場合
alias sys="nvim +'$pu_|r!date' +'norm yypVr-o- ' ~/notes/sys.md"
エイリアスが失敗しました。nvim
開かれますが、日付が一番下ではなく2行目に追加されます。明らかに$pu_はBASHで変数として評価されています。 (nvim
構文チェッカーはそれが評価されていることを示しています。)二重と単一を反転して生成
alias sys='nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md'
同じ行動をします。バックティック、
alias sys=`nvim +"$pu_|r!date" +"norm yypVr-o- " ~/notes/sys.md`
bashを固定してくださいsource .zshrc
。どのように進むべきかわかりません。どんな助けでも大変感謝します。
答え1
bash関数に入れるだけです(に関数を追加できます.bashrc
)。
sys() {
nvim +'$pu_|r!date' +'norm yypVr-o ' ~/notes/sys.md
}
その後、エイリアスのように呼び出すことができます。
答え2
唯一の問題がsingle quote
一重引用符文字列に文字を含める方法を理解することである場合、方法は次のとおりです。使用:
'\''
一重引用符で囲まれた文字列内の文字に使用されますsingle quote
。
これは現在の引用符付き文字列を終了し、引用符付き文字列を挿入してから新しい引用符付き文字列を開始します。
注:これは一般的な問題であるため、bosh
この変換を自動化する方法が提供されています。これをインポートしてschilytools
コンパイルした後、次bosh
を呼び出すと使用できます。
set -o hashcmds
#b aliasname aliasreplacement
後で呼び出すと、パターンに値がaliasreplacement
入力されます。raw
alias aliasname
次のように入力すると、エイリアスが正しく引用された形式で表示されることがわかります。
alias -R aliasname
raw
スキーマにエイリアスが表示されます。