GNU/Linux >> Tutoriales Linux >  >> Linux

¿Archivar historial sin salir de Shell?

Me acabo de dar cuenta de que un flujo de trabajo que he estado usando durante años no hace lo que se supone que debe hacer. Como no me he dado cuenta de eso durante tanto tiempo, podrías pensar que no vale la pena poner mucho esfuerzo en ello, pero resulta que en este momento se ha vuelto algo importante.

¿De qué estoy hablando? Bien, tengo tmux funcionando con varias sesiones y cada sesión tiene diferentes ventanas y así sucesivamente. Trabajar así es maravilloso. Sin embargo, hay un inconveniente. Cuando el servidor se reinicia, por cualquier motivo, cierra todas mis sesiones. Bastante justo, no se puede evitar y no sucede a menudo. Sin embargo, la parte molesta es que todos mis zsh o bash history se ha ido también. Esto es un problema. Confío en mi historial, quizás demasiado.

Estaba eludiendo este problema presionando fc -W (en zsh ) de vez en cuando. Pensé que esto agregaría el historial que está en la memoria y solo perdería la parte entre mi última invocación de fc -W y el reinicio del servidor. Pero eso no es lo que hace. Si uso fc -W en una ventana, entonces fc -W en otro, el historial de la primera ventana sería sobrescrito por el historial de la segunda ventana. Tendría que usar fc -R primero, pero esto duplicaría todo el historial... básicamente estaba usando mal el fc manda todo el tiempo.

Aquí está la pregunta:¿Cómo puedo asegurarme de no perder nada de mi historial cuando estoy en tmux? y hay un corte de luz repentino? Nota:

  • Uso la historia infinita, en caso de que importe.
  • Perder parte del historial está bien, es decir, si tengo que invocar un comando a mano (o en un cronjob) y pierdo la parte del historial desde que se ejecutó el comando por última vez, está bien.
  • Salir de la terminal y abrir una nueva no es la solución.
  • No quiero almacenar mis comandos directamente en el historial, ya que esto mezcla diferentes historiales.
  • Soluciones para ambos bash y zsh son bienvenidos. zsh es preferible.

Editar:Resalte la parte que todos parecen malinterpretar.

Respuesta aceptada:

En zsh, use fc -AI para guardar su historial, no fc -W . Utilice -A , no -W , de lo contrario, se sobrescribe el historial de otras instancias de shell. Y -I guarda solo las nuevas entradas del historial desde la última vez que se guardó.

Relacionado:Script BASH:¿Cómo asignar cada línea de salida de comando a valores en una matriz?

Dado su flujo de trabajo, en lugar de guardar manualmente, probablemente debería guardar el historial automáticamente. Activa el inc_append_history opción para guardar cada comando en el archivo de historial inmediatamente antes de que se ejecute.

Si bien es posible lograr el mismo efecto en bash, es más difícil compartir correctamente el historial entre instancias de bash. Consulte Conservar el historial de bash en varias ventanas de terminal


Linux
  1. Cómo usar el comando de historial en Linux

  2. Personalización del shell Bash

  3. ¿El punto del comando externo `cd`?

  4. ¿Entiendes el significado de `$_`?

  5. ¿Historia destrozada?

Cómo usar el comando de historial de Linux

Historia de los parches en vivo del kernel de Linux

¿Qué es el Shell en Linux?

Eternal Terminal:un shell remoto que se vuelve a conectar automáticamente sin interrumpir la sesión

El bucle while en los scripts de Shell

¿Cómo puedo enumerar los archivos en un archivo zip sin descomprimirlo?