50

デフォルトでは、GNU Screen で新しいウィンドウを作成すると、Screen が呼び出されたディレクトリで開始されます。現在開いているウィンドウの現在の作業ディレクトリで、GNU Screen で新しいウィンドウを開始したいのですが、どうすればよいですか?

4

8 に答える 8

36

GNU Screenchdirコマンドを参照してください。Screen で作成されたすべての新しいウィンドウは、これを初期ディレクトリとして使用します。これを使用すると、次のようなことができます。

chdir /home/dan/newscreendir
screen

そして、新しいウィンドウ (今後作成されるウィンドウと一緒に) は set ディレクトリに置かれます。screenrc常に現在の作業ディレクトリになる場合は、これを 1 つのコマンドで実行するように何かを設定できる場合があります。

GNU Screen の man ページを参照してください。それはかなり包括的です。

画面 chdir コマンド

Screen はシェル変数にアクセスすることも、バッククォート コマンドを実行することもできません。ワンクリックで実行できる最も近い方法は、次のような小さな Bash スクリプトを使用することです。

screen -X setenv currentdir `pwd`
screen -X eval 'chdir $currentdir' screen

またはよりコンパクトに:

screen -X eval "chdir $PWD"

screen -X現在実行中の Screen セッションにコマンドを送信します。最初の行は、 という変数を作成しますcurrentdir。2 行目はコマンドに を送信しcurrentdirchdir新しい Screen ウィンドウを作成します。

于 2009-10-04T21:58:52.780 に答える
13

簡単な解決策は、次の文字列を~/.screenrcファイルに入れ、 Ctrl+を使用Xして新しいウィンドウを開くことです。

bind ^x

bind ^x stuff "screen -X chdir \$PWD;screen^M"

http://www.michaelkelleher.infoには中級/上級のスクリーン ユーザー向けのヒントがありましたが、そのサイトはなくなったようですので、 Michael Kelleher's Personal Website on Archive.orgでアーカイブを見つけることができます。

于 2010-07-19T14:33:01.113 に答える
10

ウィンドウ内で既にプロセスが実行されている場合に機能する解決策が見つからなかったため、独自のアイデアを思いつきました。.bash_profileファイルに次の行を追加しました。

scr_cd()
{
    cd $1
    screen -X chdir $PWD
}
if [ "$TERM" == 'screen' ]; then
    alias cd=scr_cd
fi

ディレクトリを変更するたびに、画面の作業ディレクトリが更新されます。このアプローチを好まない人もいるかもしれませんが、魅力的に機能します。

于 2012-06-30T17:52:09.537 に答える
1

次を実行することもできます。

screen -X eval "chdir $(pwd)"

または、chdir を設定したらすぐに新しいウィンドウを開始したい場合は、次を使用します。

screen -X eval "chdir $(pwd)" screen
于 2013-01-30T08:54:54.053 に答える
0

私は Bash のほぼ完璧なソリューションを持っています。:)

  1. passwordロック画面のパスワードを設定するために使用したことがない場合は、これを file に追加して$HOME/.bash_profileください:

     export PROMPT_COMMAND='screen -p $WINDOW -X chdir "$PWD"'
    
  2. パスワードは必要ですか?これとともに:

     # The digest of password "abc" is ID1wIq4l2t7s6
     export PROMPT_COMMAND='screen -p $WINDOW -X eval "password none" "chdir \"$PWD\"" "idle 0 password ID1wIq4l2t7s6"'
    

PWDScreen の開発者ができるだけ早く環境変数を追加することを願っています。

于 2013-12-06T07:40:43.623 に答える
0

毎回同じコマンドが必要な場合は、コマンド.screenrcを使用する行をファイルに追加します。chdir

そのセッション内で実行中の Screen セッションがある場合は、次のように入力できます。

screen -X chdir [argument]

引数を指定しないと、ホーム ディレクトリになり、 と入力した場合と同じ結果になりますcd

スクリプト (これはプログラミング Q&A サイトです) がある場合、または Screen の外部にいて、Screen が実行されている場合は、次のコマンドを発行できます。

`which screen` -x -X chdir [argument]

Screen でいくつかの新しいプロセスを実行すると、次のようになる可能性があります。

`which screen` -x -X screen [command to run in that directory] [arguments for the command]
于 2012-08-10T17:10:26.900 に答える