GNU/Linux >> Linux Esercitazione >  >> Linux

subshell del comandante di mezzanotte - condivisione di un file di cronologia con la shell da cui è stato avviato mc

Questo potrebbe essere fatto con il seguente comando (prima di avviare mc):

export PROMPT_COMMAND="history -a; history -r"

Se desideri renderlo permanente, dovresti aggiungerlo al tuo ~/.bashrc . Ma renderà globale tutta la storia della shell, il che non è il massimo. Se non vuoi questo effetto collaterale, allora dovrebbe essere aggiunta la seguente riga invece di quella precedente:

alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'

Spiegazione:

PROMPT_COMMAND viene eseguito appena prima che bash visualizzi un prompt. Ulteriori letture qui.

history dovrebbe essere chiamato con il parametro append e successivamente con il parametro read. Ulteriori letture qui.


Per qualche ragione, il PROMPT_COMMAND soluzione in un mc alias, come suggerito dall'utente szkj, non ha funzionato correttamente per me. Mentre preservava i comandi eseguiti nella subshell MC, i comandi immessi prima di avviare MC andavano persi dopo l'uscita.

Infine, utilizzo quanto segue in ~/.bashrc , senza mc alias. Sembra funzionare bene nonostante mc sovrascrive $PROMPT_COMMAND .

export HISTCONTROL=ignoreboth
shopt -s histappend
export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND"

Questo è quello che ottengo:

# echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
1: before starting MC. PROMPT_COMMAND=history -a; history -c; history -r; 

# mc

# echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
2: Inside MC. PROMPT_COMMAND=pwd>&8;kill -STOP $$

# history | tail -3
 3038 echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
 3039 echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
 3040 history | tail -3

# echo "3: Going to exit MC with F10."
3: Going to exit MC with F10.

# echo "4: Back in Bash after MC"
4: Back in Bash after MC

# history | tail -7
 3038 echo "1: before starting MC. PROMPT_COMMAND=$PROMPT_COMMAND"
 3039 echo "2: Inside MC. PROMPT_COMMAND=$PROMPT_COMMAND"
 3040 history | tail -3
 3041 echo "3: Going to exit MC with F10."
 3042 mc
 3043 echo "4: Back in Bash after MC"
 3044 history | tail -7

Il mio sistema è:

# cat /etc/debian_version 
8.1

# bash --version | head -1
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)

# mc --version | head -1
GNU Midnight Commander 4.8.13

# uname -a
Linux afnet 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04) x86_64 GNU/Linux

Linux
  1. Iniziare con ls

  2. Cronologia dell'archivio senza uscire dalla shell?

  3. Trova N parole più frequenti in un file con un elenco di parole di arresto dalla riga di comando?

  4. adb:trova PID dalla shell adb

  5. Come creare un USB avviabile da un ISO avviabile con la riga di comando su Linux?

Scarica file con Wget sulla shell Linux - Spiegazione ed esempi

Come iniziare con Midnight Commander nel 2022

Proteggi Linux con il file Sudoers

Perché l'arresto di net rpc fallisce con le giuste credenziali?

Creazione di modelli con Linux in uno script Shell?

Come posso aprire un file con i numeri di riga visualizzati dalla riga di comando in "vi"?