たとえば、以下を設定できますか?
gb = cd /media/Dan/evolution
...それでgb
、bashで実行するたびcd
に、その特定のディレクトリに移動できますか?
オンラインで何かを見つけました:alias
コマンド。ただし、上記の作業を実行できないようです。
それを行うことは可能ですか?どうやって?
たとえば、以下を設定できますか?
gb = cd /media/Dan/evolution
...それでgb
、bashで実行するたびcd
に、その特定のディレクトリに移動できますか?
オンラインで何かを見つけました:alias
コマンド。ただし、上記の作業を実行できないようです。
それを行うことは可能ですか?どうやって?
回答:
入力するだけ:
alias gb='cd /media/Dan/evolution'
この設定を永続的にするために(再起動または別のコンソールを開いた後に固執するように)この行を〜/ .bashrcファイルに追加します(bashをデフォルトのシェルとして使用すると仮定します)
エイリアシングの代替
gb() { cd /media/Dan/evolution; }
これは、引数をとらないシェル関数gbを定義し、cd / media / Dan / evolutionを実行します。他の提案と同様に、これは〜/ .bashrcに追加できます
type gb
それがエイリアスまたは関数であれば機能します。
{ echo 'true() { : ; }' >./script ; . ./script ; command -V true ; command -V /usr/bin/true ; }
- true is a shell function\n/usr/bin/true is /usr/bin/true
- \n
文字が出力にリテラル改行ました。
または、目的のコマンドを呼び出す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;
}
コンパイルするには、ソースが保存されているディレクトリに移動して(bashで)実行します(sudoが必要な場合があります)。
gcc ./gb.c -o /usr/bin/gb
ここでさらに調査した結果、system()
bashに組み込まれたコマンドでは単にコマンドを投げても機能しないことがわかりました。そのため、対話型bashのインスタンスを作成し、コマンドをエコーする必要があります。複雑すぎるだけで、おそらく役に立たないでしょう。たとえば、シェルスクリプトの呼び出しを(のsome_script
代わりにsh ~/radgeRayden/Scripts/some_script
)短くしたい場合を除きます。
sh -c "cd /media/Dan/evolution"
機能しません。ヒント:サブシェル
cd
/ subshellの問題は別として、Cプログラムでシェルコマンドをラップする利点は、シェルスクリプトにそのコマンドを簡単に(またはより簡単に)配置できることですか?
alias gb='cd /media/Dan/evolution'