Fish Shell - Testado em Mac OS - Linux Mint - Free BSD ( e derivados )

Olá estimados colegas do Open Source - Hoje venho compartilhar uma curiosidade .
Alguns de vocês , assim como eu - devem ter como sua ferramenta preferida - o Terminal .
Ohhh palavrinha que assusta usuários iniciantes no Linux . Mas quando você percebe o poder , você quer aprender cada vez mais , e quanto mais aprende , mas quer aprender - Parece uma droga - de tanto que vicia .

Enfim .

Sou usuário de fish desde a versão 2.2(qualquer coisa) , agora ja está na 2.6.0 , e eu prefiro a 2.4.0 ( por motivos pessoais , e nao motivos tecnicos ok? )

bem - a questão é quando se está no terminal 3/4 do tempo que você passa no computador , eu presumo ser inconveniente consultar a GUI , por qualquer motivo .

em função disso eu criei umas funçoes primitivas que estão sempre a um enter de distancia .

----
function clima
curl -H "Accept-Language: pt" wttr.in/$argv
end
----

Mostra a previsao do tempo para tres dias - apenas digitando - clima "nome da cidade" (sim com aspas mesmo , pois o linux - sendo unix like , entenderia uma cidade de 2 nomes assim : Cidade\ Calma . pra evitar essa canseira usa-se "aspas" )
depende de curl instalado
---
function speedtest
wget -O /dev/null http://speedtest.wdc01.softlayer.com/downloads/test10.zip $argv;
end
----

Essa testa a velocidade da sua conexão apenas digitando speedtest .... (depende de wget instalado)

------

(como diria Mário Quintana - A preguiça é a razão do progresso - Se não fosse a preguiça o homem nao teria inventado a roda)

essa é bem esse tipo - preguiça

imagine que voce queira criptografar um arquivo - mas nao lembra ou nao quer digitar aquela imensidao de comandos do ssl ?
partindo de tal premissa saiu essa

function aes256 --description 'encrypt your files with aes-256 mode'
/usr/local/bin/openssl enc -aes256 -e -in $argv -pass source -k (local do arquivo txt contendo a chave) -out "$argv".aes;
rm $argv
end

-----

para decriptar é um shell script (arquivo sh) chamada por uma função . que por questao de segurança nao vou postar aqui.

-----

Seu prompt ta tedioso ?
que tal muda-lo ?

use seu editor favorito e salve o arquivo como fish_prompt.fish

function fish_prompt
and set retc green
or set retc red
tty | string match -q -r tty
and set tty tty
or set tty pts

set_color $retc
if [ $tty = tty ]
echo -n '┬─'
else
echo -n '┬─'
end
set_color -o green
echo -n [
if test $USER = root -o $USER = toor
set_color -o red
else
set_color -o yellow
end
echo -n $USER
set_color -o white

if [ -z "$SSH_CLIENT" ]
set_color -o cyan
else
set_color -o cyan
end
echo -n (hostname)
set_color -o white
#echo -n :(prompt_pwd)
#echo -n :(pwd|sed "s=$HOME=~=")
echo -n :(pwd)
set_color -o green
echo -n ']'
set_color normal
set_color $retc
if [ $tty = tty ]
echo -n '─'
else
echo -n '─'
end
set_color -o green
echo -n '['
set_color normal
set_color $retc
echo -n (date +%X)
set_color -o green
echo -n ]

if type -q acpi
if [ (acpi -a 2> /dev/null | string match -r off) ]
echo -n '─['
set_color -o red
echo -n (acpi -b|cut -d' ' -f 4-)
set_color -o green
echo -n ']'
end
end
echo
set_color normal
for job in (jobs)
set_color $retc
if [ $tty = tty ]

echo -n '│ '
else
echo -n '│ '
end
set_color brown
echo $job
end
set_color normal
set_color $retc
if [ $tty = tty ]
echo -n '╰─>'
else
echo -n '╰─>'
end
set_color -o red
echo -n '$ '
set_color normal
end

-----

Todos esses arquivos devem ficar na pasta $USER/.config/fish/functions .

eu também defini umas cores legais pra variavel $LS_COLORS

quem quiser aqui está

rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*.gp3=00;32:*.gp4=00;32:*.gp5=00;32:*.conf=00;36:*.pub=00;32:*_key=00;35:*_config=00;36:*.ssh=00;32

mas pra isso ficar automático a cada ls .... voce precisa de uma funçao

function ls --description 'Showing Files'
set -l param --color=auto
if isatty 1
set param $param --indicator-style=classify
end
command /bin/ls -CFHL $param $argv;
end

todas essas funçoes rodaram em linux - mac - e freebsd .

Se alguém tiver mais alguma funçao para completar a lista fico grato - pois passo muito tempo no terminal .

Forte abraço a todos

Hades
Entre ou Registre-se para fazer um comentário.