回答:
試してください:
alias lock='gnome-screensaver; gnome-screensaver-command --lock'
または
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
あなたの.bashrc
2番目のソリューションでは、引数を使用できます。
lock()
括弧内に変数 'msg'をネストすると、エラーsyntax error near unexpected token
msg'` ..
$1
、$2
...です。
他の答えは質問に適切に答えますが、例では2番目のコマンドが最初のコマンドが正常に終了することに依存しているように見えます。あなたはあなたのエイリアスで短絡評価を試みたいかもしれません:
alias lock='gnome-screensaver && gnome-screensaver-command --lock'
これで、最初のコマンドが成功しない限り、2番目のコマンドは試行されません。短絡評価のより良い説明は、このSO質問で説明されています。
git fetch && git pull origin master
、に交換&&
するまでは機能しませんでした;
。
エイリアスは、コマンド名にエイリアスを付けるためのものです。それ以上のことは関数で行うべきです。
alias ll='ls -l' # The ll command is an alias for ls -l
エイリアスは、元の名前にまだ関連付けられている名前です。 ll
は、少しだけ特定の種類ですls
。
d() {
if exists colordiff; then
colordiff -ur "$@"
elif exists diff; then
diff -ur "$@"
elif exists comm; then
comm -3 "$1" "$2"
fi | less
}
関数は、内部ロジックを持つ新しいコマンドです。これは、単に別のコマンドの名前を変更するだけではありません。内部操作を行います。
技術的には、Bashシェル言語のエイリアスは機能が制限されているため、複数のコマンドを必要とするものには非常に適していません。これらを使用して、単一のコマンドの小さな変更を行います。
意図は、他のコマンドで内部的に解決される操作を実行する新しいコマンドを作成することであるため、唯一の正しい答えは、ここで関数を使用することです。
lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
このようなシナリオでエイリアスを使用すると、多くの問題が発生します。コマンドとして実行される関数とは異なり、エイリアスは現在のコマンドに展開されるため、このエイリアス「コマンド」を他のコマンドと組み合わせると、非常に予期しない問題が発生します。また、スクリプトでは機能しません。
gps() { git commit -m 'init '; git push; git status; }
説明したように、エイリアスは非常に限定され、壊れやすく、それらの唯一の目的はコマンドの名前を変更することです。無関係な目的でそれらを乱用すると、あなたが経験したばかりのようなお湯に落ちることになります。
したがって、セミコロンを使用します。
alias lock='gnome-screensaver; gnome-screen-saver-command --lock'
最初のコマンドに引数を指定したい場合、これはうまく機能しません。または、$ HOME / binディレクトリに簡単なスクリプトを作成します。
この関数をに追加し~/.bashrc
て端末を再起動するか、実行しますsource ~/.bashrc
function lock() {
gnome-screensaver
gnome-screensaver-command --lock
}
このように、これらの2つのコマンドはlock
、端末に入力するたびに実行されます。
あなたの特定のケースではを作成するalias
ことはうまくいくかもしれませんが、私はそれをお勧めしません。直感的には、エイリアスの値は、ターミナルに値を入力した場合と同じように実行されると思います。ただし、そうではありません。
エイリアスの定義と使用に関するルールはやや混乱します。
そして
ほとんどすべての目的で、エイリアスよりもシェル関数が優先されます。
したがって、必要がない限り、エイリアスを使用しないでください。 https://ss64.com/bash/alias.html
にエイリアスを宣言するときに問題が発生しました~/.bashrc
。端末で、で宣言したエイリアスが認識されませんでした~/.bashrc
。Mac OS Xはlogin-shell
デフォルトで実行されるため、~/.bash_profile
ではなくが呼び出されることを記事(下部に添付)から学びました~/.bashrc
。
エイリアスの宣言で同じ問題が発生した場合は、次のリンクを参照して問題を解決できます。
http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html
source .bashrc
ログアウトせずにエイリアスが認識されるように、ファイルへの変更を保存した後は常に実行します。