GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo usar booleanos en Fish Shell?

Cambié a fish Shell y muy contento con él. No entendí cómo puedo manejar los booleanos. Logré escribir config.fish que ejecuta tmux en ssh (ver:¿Cómo puedo iniciar tmux automáticamente en fish shell mientras me conecto a un servidor remoto a través de ssh) pero no estoy satisfecho con la legibilidad del código y quiero aprender más sobre fish shell (ya leí el tutorial y revisé la referencia). Quiero que el código se vea así (sé que la sintaxis no es correcta, solo quiero mostrar la idea):

set PPID (ps --pid %self -o ppid --no-headers) 
if ps --pid $PPID | grep ssh 
    set attached (tmux has-session -t remote; and tmux attach-session -t remote) 
    if not attached 
        set created (tmux new-session -s remote; and kill %self) 
    end 
    if !(test attached -o created) 
        echo "tmux failed to start; using plain fish shell" 
    end 
end

Sé que puedo almacenar $status es y compararlos con test como enteros, pero creo que es feo e incluso más ilegible. Entonces el problema es reutilizar $status es y usarlos en if y test .

¿Cómo puedo lograr algo como esto?

Respuesta aceptada:

Puede estructurar esto como una cadena if/else. Es posible (aunque difícil de manejar) usar begin/end para poner una declaración compuesta como una condición if:

if begin ; tmux has-session -t remote; and tmux attach-session -t remote; end
    # We're attached!
else if begin; tmux new-session -s remote; and kill %self; end
    # We created a new session
else
    echo "tmux failed to start; using plain fish shell"
end

Un estilo más agradable son los modificadores booleanos. comenzar/finalizar toma el lugar del paréntesis:

begin
    tmux has-session -t remote
    and tmux attach-session -t remote
end
or begin
    tmux new-session -s remote
    and kill %self
end
or echo "tmux failed to start; using plain fish shell"

(El primer inicio/fin no es estrictamente necesario, pero mejora la claridad en mi opinión).

Factorizar funciones es una tercera posibilidad:

function tmux_attach
    tmux has-session -t remote
    and tmux attach-session -t remote
end

function tmux_new_session
    tmux new-session -s remote
    and kill %self
end

tmux_attach
or tmux_new_session
or echo "tmux failed to start; using plain fish shell"

Linux
  1. Cómo usar el comando Linux Rsync (sincronización remota)

  2. Cómo usar Tmux + hoja de trucos

  3. Cómo usar alias de shell en Linux

  4. ¿Cómo usar el comando su sobre adb shell?

  5. Cómo recuperar un shell después de una desconexión

Cómo instalar y usar ZSH Shell en Linux

Cómo usar las extensiones de GNOME Shell [Guía completa]

Cómo usar SSH para conectarse a un servidor remoto

Cómo instalar y usar Nu Shell en Linux

¿Cómo usar if-else en Shell Scripts?

¿Cómo usar Linux Bash Shell dentro de Windows 10?