Bashでコマンドを定義できますか?

Bashでコマンドを定義できますか?

たとえば、次のように設定できます。

gb = cd /media/Dan/evolution

gb... bashで実行するたびにcdその特定のディレクトリに移動できるようにするには?

オンラインで何かを見つけました:aliasコマンド。しかし、上記の作業を完了できないようです。

可能ですか?どのように?

答え1

以下を入力してください。

alias gb='cd /media/Dan/evolution'

この設定を永続的にするには(再起動するか、他のコンソールを開いた後も保持するように)、〜/ .bashrcファイルにこの行を追加します(bashをデフォルトのシェルとして使用するとします)。

答え2

エイリアスの代替

gb() { cd /media/Dan/evolution; }

これは、引数を使用せずにcd /media/Dan/evolutionを実行するシェル関数gbを定義します。他の提案と同様に、~/.bashrcに追加できます。

答え3

これは可能で、aliasあなたが探しているコマンドです。たとえば、alias ll="ls -l"bashでは、エイリアスを設定するときにスペースは使用されませllls -lman alias役に立つかもしれません。

答え4

あるいは、Cプログラムを作成して必要なコマンドを呼び出し、それを/ usr / binに保存することもできます。

#include <stdio.h>
#include <string.h>

int main () {
    char command[50]; //notice you can change this to fit your needs
    int return_val;

    strcpy( command, "echo \"cd /media/Dan/evolution\" | bash -i" );
    return_val = system(command); 

   //this is equivalent to entering the command in a new bash, 
   //which will return and exit

    return return_val;
}

コンパイルするには、ソースコードを保存したディレクトリに移動して実行します(sudoが必要な場合があります)。

 gcc ./gb.c -o /usr/bin/gb

さらなる調査の後ここsystem()、単にコマンドを入力するだけではbashの組み込み機能が機能しないことに気づきました。これがインタラクティブなbashインスタンスを作成し、ここにコマンドを反映する必要がある理由です。シェルスクリプトへの呼び出しを短くしたい場合を除き、複雑すぎておそらく役に立たないでしょう(some_scriptそうではありませんsh ~/radgeRayden/Scripts/some_script)。

system() 関数への参照

関連情報