GNU/Linux >> Belajar Linux >  >> Linux

subkulit komandan tengah malam - berbagi file riwayat dengan shell mc dimulai dari

Ini dapat dilakukan dengan perintah berikut (sebelum memulai mc):

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

Jika Anda ingin membuatnya permanen, maka Anda harus menambahkannya ke ~/.bashrc Anda . Tapi itu akan membuat semua riwayat shell menjadi global, yang bukan yang terbaik. Jika Anda tidak menginginkan efek samping ini, baris berikut harus ditambahkan, bukan baris di atas:

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

Penjelasan:

PROMPT_COMMAND dieksekusi tepat sebelum bash menampilkan prompt. Bacaan lebih lanjut di sini.

history harus dipanggil dengan parameter append, dan setelah itu dengan parameter read. Bacaan lebih lanjut di sini.


Untuk beberapa alasan, PROMPT_COMMAND solusi dalam mc alias, seperti yang disarankan oleh pengguna szkj, tidak berfungsi dengan baik untuk saya. Meskipun mempertahankan perintah yang dijalankan di subkulit MC, perintah yang dimasukkan sebelum memulai MC hilang setelah keluar.

Terakhir, saya menggunakan yang berikut di ~/.bashrc , tanpa mc alias. Tampaknya berfungsi dengan baik meskipun mc menimpa $PROMPT_COMMAND .

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

Inilah yang saya dapatkan:

# 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

Sistem saya adalah:

# 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. Memulai dengan Zsh

  2. Membuat template dengan Linux dalam Shell Script?

  3. Bagaimana saya bisa membuka file dengan nomor baris yang ditampilkan dari baris perintah di 'vi'?

  1. Memulai dengan perintah tac Linux

  2. Memulai Pengelola File Plesk

  3. Memulai dengan ls

  1. Riwayat Arsip Tanpa Keluar dari Shell?

  2. Temukan N Kata Paling Sering Dalam File Dengan Daftar Kata Berhenti Dari Baris Perintah?

  3. adb:Temukan PID dari shell adb