Non riesco a utilizzare il terminale mentre il comando gedit è in esecuzione

40

Recentemente ho installato 12.04.
Quando provo a modificare un file con gedit , non riesco a utilizzare il terminale finché non chiudo il file di modifica o devo aprire un nuovo terminale. Ma penso di non aver avuto questo problema con la 11.04, ma non ne sono sicuro.
C'è comunque da evitare e utilizzare lo stesso terminale durante la modifica dei file.

    
posta user175023 14.07.2013 - 09:14

7 risposte

77

Risposta breve

Nel terminale che non risponde:

  1. Premi Ctrl + Z .
  2. Digita bg e inserisci.
  3. Digita disown e inserisci.

Risposta lunga

Nel terminale che non risponde, premi Ctrl + Z , questo "sospenderà" il processo (o "lavoro") e ti restituirà il controllo della console. Tuttavia, noterai che gedit non risponde e non puoi utilizzarlo.

% Bl0ck_qu0te%

Per fare in modo che il lavoro venga eseguito con successo in background (cioè per rendere nuovamente gedit responsive), eseguire il comando bg (che significa background). Ora potrai utilizzare gedit e allo stesso tempo chiedere a te stesso.

% Bl0ck_qu0te%

Puoi superare tutto questo sin dall'inizio. Quando stai lanciando gedit dal terminale, aggiungi un & alla fine del comando, quindi qualcosa come questo gedit /path/to/file & . Questo lancerà gedit sullo sfondo dal primo posto (potrebbe essere necessario premere Invio un paio di volte per riavere il controllo della console).

% Bl0ck_qu0te%

Una volta che ti sarai abituato a questo sistema, potresti notare che se chiudi il terminale, gedit terminerà anche senza una finestra di conferma. Per evitare che ciò accada, esegui disown , che scollegherà il processo gedit dal terminale, rimuovendolo dall'elenco restituito da jobs .

    
risposta data Alaa Ali 14.07.2013 - 09:38
41

Scrivi:

gedit <filename-to-edit> &

Ciò restituirà immediatamente il prompt dei comandi.

    
risposta data david6 14.07.2013 - 11:48
25

Potresti usare nohup per impedire che la GUI sia collegata a un terminale:

nohup mupdf some.pdf &

Questo ti permetterà di chiudere il terminale dal quale stai avviando, senza che il programma sia chiuso.

Dovresti anche notare che il comando nohup creerà un file con stdout e stderr del comando che esegui. Se vuoi impedirlo, aggiungi &>/dev/null prima di & .

nohup mupdf some.pdf &>/dev/null &
    
risposta data Braiam 12.08.2013 - 01:21
19

Puoi anche usare il comando disown . È particolarmente utile quando hai già avviato il processo che non desideri più collegare al terminale.

La procedura di base, se ricordo bene, è qualcosa del genere:

$ > firefox      #Oops
Ctrl + z         #Suspend the process
$ > bg           #Push the process to the background
$ > disown       #Detach most recent process started or stopped
$ > exit         #Terminal gone!

Ricorda che disown è bash specifico.

Questo post sul blog spiega molto bene entrambi i metodi.

Pagina man per disown

    
risposta data jmathew 12.08.2013 - 05:25
11

Da man gedit :

% Bl0ck_qu0te%

Quindi, se esegui gedit con l'opzione -b , inizierà in background:

gedit -b [FILE-NAME]

Inoltre, successivamente puoi creare un alias per gedit -b (vedi qui come creare un alias permanente):

alias gedit='gedit -b'

Da ora, in futuro puoi utilizzare gedit [FILE-NAME] come normale e inizierà in background.

    
risposta data Radu Rădeanu 15.07.2013 - 14:02
10

Scrivi:

gedit FILENAME & disown

L'interruzione di un comando con & in bash esegue quel comando in background. Tuttavia, quel processo è ancora collegato al terminale.

Senza disown , se chiudi il terminale, gedit si chiuderà, senza nemmeno chiederti di salvare un file modificato. disown scollega il processo in background dal terminale corrente, in modo che se chiudi il terminale, gedit continuerà a funzionare normalmente. Si scopre che ho sbagliato, questo non è il caso di bash, ma è il caso per zsh. Devi ancora eseguire detach dopo aver eseguito ctrl - z e bg , anche se in bash.

Puoi trovare ulteriori informazioni sui% built-in jobs , disown e il & metacharacter nella manpage per il comando bash ,inparticolarelasezione"controllo del lavoro".

    
risposta data Flimm 16.07.2013 - 23:42
0

Probabilmente è perché hai aperto gedit tramite terminale. Quando si esegue questa operazione, viene visualizzato l'output della riga di comando che è normalmente nascosto se avviato tramite la GUI. Il modo migliore per risolvere questo problema è aprire una nuova finestra di terminale. L'altro sarà disponibile dopo la chiusura di gedit. Puoi anche utilizzare l'opzione suggerita dall'utente sopra.

    
risposta data user175759 16.07.2013 - 21:12

Leggi altre domande sui tag