Unixでマルチワードコマンドにエイリアスを設定する方法はありますか?


11

コマンドのエイリアスを作成しようとしてsudo shutdownいますが、自分で.profileはできませんalias "sudo shutdown"="my command"。Unixでマルチワードコマンドをエイリアスする別の方法はありますか?


私はこれらのテクニックをすべて試しましたが、すべてうまくいきました!みんな、ありがとう!
agentbanks217 2011

あなたが本当に「sudo shutdown」をエイリアスとして少し遅らせるつもりであることがわかったので、私の編集でソリューションも試してください。

回答:


19

エイリアス名は左側にあるので、右側にマルチワードコマンドを置くことができます。

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、それがその文字列を印刷します。


2
ありがとう、過小評価された答え。私はalias cd="cd "、1文字のエイリアスalias X="<directory-with-long-name>"を使用して、場所から場所へ簡単にジャンプできるようにしてきました。
ルークデイビス

同意します。これは実際には非常に便利です。私はgitコマンドのタイプを間違えましたが、これで解決されました。alias gti="git "そしてalias lgo="log"
BananaNeil 2017年

4

関数を使用します。

foo() { if [ "$1" = "bar" ]; then echo "doing something..."; fi; }

あなたはおそらくしたいelse2番目のパラメータがあれば、元のコマンドが実行されるように、ケースをではありません barfoo() { if [ "$1" = "bar" ]; then echo "doing something..."; else command foo "$@"; fi; }
davidg

2

引用元: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


1

実行したいコマンドを含む実行可能ファイルを/ usr / local / bin(パスにあることを確認してください)に置くことを好みます。スクリプトの名前は、表示されるコマンドになります。必ずchmod + x / usr / local / bin / your_scriptにしてください。

したがって、スクリプトは「シャットダウン」と呼ぶことができます

ファイルのシャットダウンの内容は次のようになります。

#!/bin/sh
sudo shutdown

それは全く新しい世界を開きます。次に、いくつかのコマンドまたはスクリプトを作成します。

#!/usr/bin/env python
print "hi"
# more stuff. ....
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.