Jak vyrobit GNU Screen spuštění nového okna v aktuálním pracovním adresáři?

hlasů
41

Ve výchozím nastavení při vytváření nového okna v GNU obrazovce začne v adresáři, kde je vyvolána obrazovka. Chci začít nové okno v GNU Screen na aktuální pracovní adresář v okně jsem v současné době. Jak to udělat? Dík!

Položena 04/10/2009 v 22:23
zdroj uživatelem
V jiných jazycích...                            


8 odpovědí

hlasů
26

Viz gnu obrazovky chdirpříkaz. Všechna nová okna vytvořené v rozsahu použít jako jejich počáteční adresář. Použitím této funkce můžete udělat něco jako

chdir /home/dan/newscreendir
screen

A vaše nové okno (spolu se všemi budoucími vytvořil okna), bude v nastaveném adresáři. Pokud to bude vždy aktuální pracovní adresář může být schopni nastavit něco ve vašem screenrcdělat tohle do jednoho příkazu.

Viz gnu obrazovky manuálové stránky, je to docela komplexní.

Příkaz chdir Screen

Obrazovka nemůže získat přístup k shell proměnné ani spouštět backticked příkazy. Nejbližší můžu dělat to jedním kliknutím je s malým bash skript takhle

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

nebo více kompaktně

screen -X eval "chdir $PWD"

screen -Xodešle příkaz k aktuálně spuštěné relace obrazovky. První řádek vytváří proměnnou s názvem currentdir. Druhý řádek posílá currentdirna chdirpříkaz a potom vytvoří nové okno obrazovky.

Odpovězeno 04/10/2009 v 22:58
zdroj uživatelem

hlasů
10

Jednoduchým řešením je, aby tyto řetězce do souboru ~ / .screenrc a pak nám Cx otevřít nová okna:

vázat ^ x

vázat ^ x stažení "obrazovkou -X chdir \ $ vysílání pracovníků; obrazovka ^ M"

http://www.michaelkelleher.info má více tipů pro středně pokročilé / pokročilé uživatele obrazovky.

Vzhledem k tomu, že místo se zdá k šli pryč, najdete archiv tom zde: Michaela Kelleher osobní webové stránky na archive.org

Odpovězeno 19/07/2010 v 15:33
zdroj uživatelem

hlasů
6

I nenašel žádné řešení, které by fungovat, pokud již máte proces běží v okně, takže jsem přišel s mým vlastním nápadem. Přidal jsem následující řádky mého .bash_profile:

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

pracovní adresář Na obrazovce je aktualizován pokaždé, když změníte adresář. Někdo může nelíbí tento přístup, ale funguje to jako kouzlo.

Odpovězeno 30/06/2012 v 18:52
zdroj uživatelem

hlasů
4

Možná, že se jedná o specifický pro Byobu, ale prostě psaní screenotevře nové okno v aktuálním adresáři.

Odpovězeno 15/08/2013 v 19:18
zdroj uživatelem

hlasů
1

Dalo by se také spustit:

screen -X eval "chdir $(pwd)"

Nebo, chcete-li spustit nové okno, jakmile jste nastavili chdir, použijte:

screen -X eval "chdir $(pwd)" screen
Odpovězeno 30/01/2013 v 09:54
zdroj uživatelem

hlasů
0

Chcete-li obrazovku otevře novou záložku / okno v aktuálním adresáři, přidejte následující kód do vašeho .screenrcsouboru:

bind c stuff "screen bash^M"

To způsobí, že Ctrl+ a cpovel k otevření nové karty / okna v adresáři aktuálním okně / záložce.

Poznámka: Je třeba zajistit, aby screense to spustit přihlašovací shell ve výchozím nastavení, protože to způsobí start shell ve výchozím adresáři spíše než přihlašovací shell aktuálním adresáři. To znamená, že ve vašem .screenrcsouboru, váš shellpříkaz nelze zahrnout pomlčku ( ‚-‘) charakter.

Například, to je špatně (tj začne přihlašovací shell):

shell -$SHELL

Ale to je správné (to znamená, že se nelze spustit přihlašovací shell):

shell $SHELL

Poznámka 2: Bohužel, tato metoda se nechová stejně jako výchozí nového příkazu / kartě okna v screen. Místo toho zapíše příkaz aktuální okno a spustí jej vytvořit nové okno / kartu, takže to nebude fungovat v nějakém dlouho běžící proces shellu. Jinými slovy, tato klávesová zkratka může být proveden pouze v případech lze provádět běžné příkazy shellu.

Poznámka 3: Chcete-li screenotevřít nové okna / záložky v aktuálním adresáři a otevřít přihlašovací shell , můžete přidat následující kód do .screenrcsouboru:

bind c stuff "screen bash -l^M"
Odpovězeno 20/10/2015 v 16:26
zdroj uživatelem

hlasů
0

Mám téměř dokonalé řešení pro bash. :)

  1. Pokud jste nikdy použít passwordnastavit zamykání obrazovky heslo, stačí přidat na $HOME/.bash_profile:

    export PROMPT_COMMAND='screen -p $WINDOW -X chdir "$PWD"'
    
  2. Potřebuji heslo? s tím:

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

Jen doufám, že vývojáři obrazovce přidejte proměnnou prostředí PWDco nejdříve.

Odpovězeno 06/12/2013 v 08:40
zdroj uživatelem

hlasů
0

Ve vašem .screenrcumístit řádek, který používá chdirpříkaz, pokud chcete ten stejný pokaždé.

Pokud máte spuštěnou relaci obrazovky uvnitř této relaci můžete napsat:

screen -X chdir [arg]

Bez argumentu, že to bude váš domovský adresář, stejný výsledek jako psaní cd.

Pokud máte skript (to je programovací q & web), nebo jsou mimo obrazovku a displej je spuštěn můžete vydat:

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

Které budete pravděpodobně sledovat tekoucí nějaký nový proces na obrazovce pomocí:

`which screen` -x -X screen [command to run in that dir] [args for the command]

Ještě jsem našel způsob, jak zjistit, co to bylo a změnit jej zpět (ve skriptu), takže pokud někdo chtěl aktualizovat tuto odpověď s tím, prosím.

Odpovězeno 10/08/2012 v 18:10
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more