Fish - Um shell fácil de usar

Este artigo mostra a instalação e uso do Shell Fish (Friendly Interactive Shell). É uma alternativa configurável e fácil de usar, ao mais conhecido Bash (Bourne-Again Shell), comumente encontrado como padrão nas distribuições GNU/Linux.

[ Hits: 27.092 ]

Por: Alberto Federman Neto. em 18/09/2013 | Blog: https://ciencialivre.blog/


Instalação e uso geral



Instalação

Muito provavelmente, os pacotes do fish existem para sua distribuição. Instale dos repositórios, pelo procedimento padrão de sua distribuição.

Em Sabayon, ele pode ser instalado usando Rigo ou os comandos abaixo:

sudo equo up
$ sudo equo i entropy equo rigo
$ sudo equo i -a fish


Uso

Você está usando bash, para testar fish, precisamos carregá-lo.

Abra um terminal e execute o comando:

fish

Vejam, a partir do meu prompt bash:

fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish


Primeira coisa, ele tem um help geral, digite help e tecle Enter para obter ajuda.

Esse help vai aparecer direto no seu navegador Web, o que é muito prático.

Alguns exemplos simples, de uso inicial:

Comandos errados? Ele mostra em vermelho, veja neste screen:

Agora, comando meio errado, ou que você não lembre inteiro, exemplo digito echo $ e Enter e esqueço o resto:

echo $
fish: The '$' begins a variable name. It was given at the end of an argument. 
Variable names may not be zero characters long. 
To learn more about variable expansion in fish, type 'help expand-variable'.


Viu? O Fish me avisa o que é $.

Outra coisa, ele tem autocompletar, como o zsh. Exemplo, você digita ls, se você usa muito ls -a e isso está no histórico, ele vai sugerir ls -a.

Neste outro exemplo, meu arquivo mais visto no Sabayon, é "etc/make.conf" (Sabayon é de arquitetura Gentoo), por isso, quando digito só cat, ele já autocompleta:

Digitei cat, o que apareceu foi:

cat /etc/make.conf

Isso facilita, porque ele vai armazenar no histórico, por exemplo:

# equo up && equo u && emerge --sync && emerge --oneshot portage && layman -S && eix-update

E vai sugerir diretamente esse comando todo, sem que eu precise "procurar" no histórico com as teclas de seta.

Mais uma facilidade: o fish usa caracteres coringa recursivos, repare (exemplo abaixo) que o bash não tem: No comando ls /var/**.log, o bash não "vai" para o diretório e não acha os logs, o fish, sim:

bash:

ls /var/**.log
ls: não é possível acessar /var/**.log: Arquivo ou diretório não encontrado


fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish


ls /var/**.log
/var/lib/texmf/web2c/updmap.log
/var/log/anaconda.log
/var/log/anaconda.program.log
/var/log/anaconda.storage.log
/var/log/emerge-fetch.log
/var/log/emerge.log
/var/log/entropy/entropy.log
/var/log/entropy/packagekit.log
/var/log/entropy/rigo-daemon.log
....................................mais arquivos, todos os logs


E muitos outros recursos, vários diferentes do bash:
Mais alguns exemplos, o comando:

dirs

Mostra o diretório, pasta onde você está, de uma maneira completa.

O comando functions mostra algumas das funções. bash não tem.

functions
bash: functions: comando não encontrado



$ functions
N_, alias, cd, contains_seq, delete-or-exit, dirh, dirs, down-or-search, 
eval, fish_command_not_found_setup, fish_config, fish_default_key_bindings, 
fish_indent, fish_prompt, fish_sigtrap_handler, fish_update_completions, funced, 
funcsave, grep, help, history, isatty, la, ll, ls, man, math, mimedb, nextd, nextd-or-forward-word, 
open, popd, prevd, prevd-or-backward-word, prompt_pwd, psub, pushd, seq, setenv, sgrep, trap, type, umask, up-or-search, vared,


No diretório "/usr/share/fish/functions", existe um grande número de funções e comandos de fish, vários deles editáveis, inclusive suporte a Vim ,Git, SVN, etc...

ls -a /usr/share/fish/functions
./                                           __fish_complete_svn_diff.fish          __fish_print_users.fish
../                                          __fish_complete_svn.fish               __fish_print_xdg_mimeapps.fish
alias.fish                                   __fish_complete_tar.fish               __fish_print_xdg_mimetypes.fish
cd.fish                                      __fish_complete_tex.fish               __fish_print_xrandr_modes.fish
contains_seq.fish                            __fish_complete_unrar.fish             __fish_print_xrandr_outputs.fish
delete-or-exit.fish                          __fish_complete_users.fish             __fish_print_xwindows.fish
dirh.fish                                    __fish_complete_vi.fish                fish_prompt.fish
dirs.fish                                    __fish_complete_wvdial_peers.fish      __fish_prt_no_subcommand.fish
down-or-search.fish                          __fish_complete_xsum.fish              __fish_prt_packages.fish
eval.fish                                    fish_config.fish                       __fish_prt_ports.fish
_.fish                                       __fish_config_interactive.fish         __fish_prt_use_package.fish
__fish_append.fish                           __fish_contains_opt.fish               __fish_prt_use_port.fish
__fish_bind_test1.fish                       __fish_crux_packages.fish              __fish_seen_subcommand_from.fish
__fish_bind_test2.fish                       fish_default_key_bindings.fish         __fish_test_arg.fish
__fish_commandline_test.fish                 __fish_describe_command.fish           fish_update_completions.fish
__fish_complete_abook_formats.fish           __fish_filter_ant_targets.fish         __fish_use_subcommand.fish
__fish_complete_ant_targets.fish             __fish_filter_mime.fish                funced.fish
__fish_complete_atool_archive_contents.fish  __fish_git_prompt.fish                 funcsave.fish
__fish_complete_atool.fish                   __fish_gnu_complete.fish               grep.fish
__fish_complete_bittorrent.fish              fish_indent.fish                       help.fish
__fish_complete_cabal.fish                   __fish_is_first_token.fish             history.fish
__fish_complete_cd.fish                      __fish_is_token_n.fish                 isatty.fish
__fish_complete_command.fish                 __fish_list_current_token.fish         la.fish
__fish_complete_convert_options.fish         __fish_make_completion_signals.fish    ll.fish
__fish_complete_diff.fish                    __fish_move_last.fish                  ls.fish
__fish_complete_directories.fish             __fish_no_arguments.fish               man.fish
__fish_complete_file_url.fish                __fish_not_contain_opt.fish            math.fish
__fish_complete_ftp.fish                     __fish_paginate.fish                   mimedb.fish
__fish_complete_grep.fish                    __fish_ports_dirs.fish                 nextd.fish
__fish_complete_groups.fish                  __fish_print_abook_emails.fish         nextd-or-forward-word.fish
__fish_complete_list.fish                    __fish_print_addresses.fish            N_.fish
__fish_complete_lpr.fish                     __fish_print_arch_daemons.fish         open.fish
__fish_complete_lpr_option.fish              __fish_print_commands.fish             popd.fish
__fish_complete_ls.fish                      __fish_print_debian_services.fish      prevd.fish
__fish_complete_man.fish                     __fish_print_encodings.fish            prevd-or-backward-word.fish
__fish_complete_mime.fish                    __fish_print_filesystems.fish          prompt_pwd.fish
__fish_complete_pacman.fish                  __fish_print_function_prototypes.fish  psub.fish
__fish_complete_pgrep.fish                   __fish_print_help.fish                 pushd.fish
__fish_complete_pids.fish                    __fish_print_hostnames.fish            seq.fish
__fish_complete_ppp_peer.fish                __fish_print_interfaces.fish           setenv.fish
__fish_complete_proc.fish                    __fish_print_lpr_options.fish          sgrep.fish
__fish_complete_python.fish                  __fish_print_lpr_printers.fish         __terlar_git_prompt.fish
__fish_complete_setxkbmap.fish               __fish_print_lsblk_columns.fish        trap.fish
__fish_complete_ssh.fish                     __fish_print_make_targets.fish         type.fish
__fish_complete_subcommand.fish              __fish_print_mounted.fish              umask.fish
__fish_complete_subcommand_root.fish         __fish_print_packages.fish             up-or-search.fish
__fish_complete_suffix.fish                  __fish_print_svn_rev.fish              vared.fish


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e uso geral
   3. Configuração
   4. Trocando o shell padrão
Outros artigos deste autor

Comparando desempenho de distros, arquiteturas ou ambientes gráficos - Método universal

Sabayon 5.0 - Uma nova distro multimídia (parte 1)

Experimento com Linux (parte 2): de Sabayon a... Gentoo e Funtoo!

Modificando a remasterização com Molecule - Sabayon completo, com KDE e GNOME

Otimizando o Sabayon Linux (inclusive o Firefox)

Leitura recomendada

Desbravando o mundo do Software Livre

Instalando o Fedora Core 5 para iniciantes

Segunda experiência com BASIC LINUX

Transformando Windows em Linux

Recuperando o seu sistema Salix

  
Comentários
[1] Comentário enviado por xerxeslins em 18/09/2013 - 18:40h

Creio que não irei usar, mas mesmo assim é muito interessante. Favoritado.

[2] Comentário enviado por eldermarco em 19/09/2013 - 09:53h

Sensacional! Eu acho que já tinha ouvido falar desse fish em algum momento, mas agora vi algo bem mais completo. Deve permanecer com o bash, mas vou dar uma olhada nele para conhecer e ver como anda o desenvolvimento. Nota 10!

[3] Comentário enviado por dimasdaros em 21/09/2013 - 13:06h

Opa, estou testando ele aqui, parece ser bem produtivo.
Uma coisa que não consegui foi usar o auto completar com base no histórico, até que você que comentou que ao digitar `cat` ele já sugeriu o comando, aqui não consegui usar essa função (que no bash é ctrl + r)

Mas estou gostando.
Vlw pela dica.
Abraço.

[4] Comentário enviado por Ang em 22/09/2013 - 17:23h

Olá, bom dia!
Você pode criar uma dica de Shell`s para iniciantes no ´Mundo` Linux?

[5] Comentário enviado por albfneto em 22/09/2013 - 18:42h

Como assim? Uma Dica para iniciante total usar comandos?

Comandos para quem nunca usou? Não vai ficar muito básico?

[6] Comentário enviado por claudiocastelo em 26/09/2013 - 14:27h

Curiosidade, o comando "history" não funciona!

[7] Comentário enviado por albfneto em 27/09/2013 - 00:06h

Claudio e Dimasdaros..

deve ser algo da config de vocês, pq aqui (Dimasdaros) digitei "his" e ele completou!
e o history está funcionando aqui, veja:

[code]
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
albfneto no sabayon dir: ~
↪ history

transmission
amuleadu
amule
sudo equo i --nodeps www-client/chromium
sudo equo i --nodeps www.client/chromium v8 anaconda
sudo equo up
locate mountpoint
sudo equo i util-linux
equo s util-linux
equo s util-linux
sudo equo mask protobuf
sudo equo up sabayonlinux.org
sudo equo up http://sabayon.c3sl.ufpr.br/entropy/
help
exit
ls -a
ls
...........................
/code]

chequem as configs do Fish de vocês, os arquivos citados no artigo

[8] Comentário enviado por juno em 02/10/2013 - 09:38h

Caro albfneto
Muito legal já estou usando ....

[9] Comentário enviado por removido em 06/08/2014 - 01:47h

Um grande shell, sem dúvida, uma pena os devs não darem muita moral para ele.

[10] Comentário enviado por guimaraesrocha em 22/08/2014 - 21:23h

Mais um shell para testar, bom artigo.

[11] Comentário enviado por uberlan em 23/10/2014 - 23:37h

Muito obrigado pela dica. Me salvou de uma...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts