コマンドのエイリアスを作成しようとしてsudo shutdownいますが、自分で.profileはできませんalias "sudo shutdown"="my command"。Unixでマルチワードコマンドをエイリアスする別の方法はありますか?
コマンドのエイリアスを作成しようとしてsudo shutdownいますが、自分で.profileはできませんalias "sudo shutdown"="my command"。Unixでマルチワードコマンドをエイリアスする別の方法はありますか?
回答:
エイリアス名は左側にあるので、右側にマルチワードコマンドを置くことができます。
alias my_alias="multi worded command"
編集:ただし、複数の単語のエイリアス名が本当に必要な場合-この例では、「sudo shutdown」を本当にエイリアスにしたい場合、次のエイリアス機能を使用して回避できます(bashマニュアルにあります) ):
A trailing space in value causes the next word to be checked for
alias substitution when the alias is expanded.
したがって、まだsudo他のコマンドで使用したいが、他のコマンドで使用したくないshutdown場合、および他のコマンドにエイリアスshutdownする余裕がある場合は、次のようにすることができます。
alias sudo='sudo '
alias shutdown="echo nope"
これで、sudo anything_else期待どおりに機能します(のエイリアスがないと仮定しますが、持ってanything_elseいれば、以前は機能していませんでした); しかしsudo shutdownと同等になりsudo echo nope、それがその文字列を印刷します。
alias cd="cd "、1文字のエイリアスalias X="<directory-with-long-name>"を使用して、場所から場所へ簡単にジャンプできるようにしてきました。
alias gti="git "そしてalias lgo="log"
引用元:Bash:エイリアス名のスペース
バッシュのドキュメントの状態「ほぼすべての目的のためには、シェルの機能は、エイリアスよりも優先されます。」以下は、引数が(のみ)で構成されlsているmore場合に出力を置き換えてパイプ処理するシェル関数です-la。
ls() {
if [[ $@ == "-la" ]]; then
command ls -la | more
else
command ls "$@"
fi
}
ワンライナーとして:
ls() { if [[ $@ == "-la" ]]; then command ls -la | more; else command ls "$@"; fi; }
出力を自動的にパイプする:
ls -la
実行したいコマンドを含む実行可能ファイルを/ usr / local / bin(パスにあることを確認してください)に置くことを好みます。スクリプトの名前は、表示されるコマンドになります。必ずchmod + x / usr / local / bin / your_scriptにしてください。
したがって、スクリプトは「シャットダウン」と呼ぶことができます
ファイルのシャットダウンの内容は次のようになります。
#!/bin/sh
sudo shutdown
それは全く新しい世界を開きます。次に、いくつかのコマンドまたはスクリプトを作成します。
#!/usr/bin/env python
print "hi"
# more stuff. ....