コマンドのエイリアスを作成しようとして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. ....