GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Midnight Commander Subshell - Gemeinsame Nutzung einer Verlaufsdatei mit dem Shell-MC, von dem aus gestartet wurde

Dies könnte mit dem folgenden Befehl (vor dem Start von mc) erfolgen:

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

Wenn Sie es dauerhaft machen möchten, sollten Sie es zu Ihrem ~/.bashrc hinzufügen . Aber es wird die gesamte Shell-Geschichte global machen, was nicht das Beste ist. Wenn Sie diesen Nebeneffekt nicht möchten, dann sollte die folgende Zeile anstelle der obigen hinzugefügt werden:

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

Erklärung:

PROMPT_COMMAND wird ausgeführt, kurz bevor bash eine Eingabeaufforderung anzeigt. Weiterlesen hier.

history sollte mit append parameter aufgerufen werden, danach mit read parameter. Weiterlesen hier.


Aus irgendeinem Grund ist die PROMPT_COMMAND Lösung in einem mc Alias, wie vom Benutzer szkj vorgeschlagen, hat bei mir nicht richtig funktioniert. Während in der MC-Subshell ausgeführte Befehle beibehalten wurden, gingen Befehle, die vor dem Start von MC eingegeben wurden, nach dem Beenden verloren.

Schließlich verwende ich Folgendes in ~/.bashrc , ohne mc alias. Es scheint gut zu funktionieren, obwohl mc überschreibt $PROMPT_COMMAND .

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

Folgendes bekomme ich:

# 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

Mein System ist:

# 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. Rechnen Sie in der Linux-Shell mit GNU bc

  2. Lesen einer CSV-Datei mit SQL-Abfragen aus der Linux-Shell

  3. Warum schlägt das Herunterfahren von Net RPC mit den richtigen Anmeldeinformationen fehl?

  4. Templating mit Linux in einem Shell-Skript?

  5. Wie kann ich eine Datei mit Zeilennummern öffnen, die von der Befehlszeile in 'vi' angezeigt werden?

Erste Schritte mit dem Linux-tac-Befehl

Erste Schritte mit dem Plesk File Manager

Herunterladen von Dateien mit Wget auf der Linux-Shell - Erklärung und Beispiele

Erste Schritte mit ls

Erste Schritte mit Midnight Commander im Jahr 2022

Sichern Sie Linux mit der Sudoers-Datei