web-dev-qa-db-ja.com

zenityでchangedirectoryを使用するにはどうすればよいですか?

zenityのディレクトリ変更にcdコマンドを使用する方法、このような私の簡単なスクリプト

#!/bin/bash    
a=`zenity --entry --entry-text="input directory name"`
cd $a

ただし、cd [cd(ChangeDirectory)コマンドが現在のディレクトリから指定した任意のディレクトリに変更されます]コマンドがrmdir/mkdirに変更されると、完全に機能します。

私を助けてください..

1
haritsmp

cdは機能していますが、スクリプトのプロセスにのみ影響し、スクリプトの実行元のシェルには影響しません。これを回避するために過去にいくつかのアプローチが使用されてきましたが、シェル関数は個別のプロセスではなく元のシェル内で実行されるため、現時点で最善の方法は、おそらく個別のスクリプトではなくシェル関数を使用することです。

これはあなたの~/.profileで行われます:

cdprompt()
{
    cd $(zenity --entry --entry-text="input directory name")
}

次に、新しいシェルを起動してcdpromptを実行すると、zenityプロンプトが表示され、期待どおりに入力したディレクトリに移動します。

コマンドを別のファイルに保存する必要がある場合は、ファイルを実行する代わりにsourceすることもできます。

source newdir.sh

または

. newdir.sh

これにより、bashは、新しいプロセスを開始するのではなく、現在のプロセス内でファイル内のコマンドを実行するように指示されます。通常、プログラムを実行するのではなく、構成をロードするために使用されますが、これでも機能するはずです。

1
Paul