Como faço para listar todos os comandos internos do shell disponíveis?

23

Sabemos que o bash suporta vários comandos buitin como:

$ type type cd help command
type is a shell builtin
cd is a shell builtin
help is a shell builtin
command is a shell builtin

Quero obter uma lista de todos os comandos internos do shell disponíveis . Como faço isso por linha de comando?

Pandya
fonte
Relacionado (para palavras-chave em vez de incorporadas): Como listar todas as palavras-chave do shell?
Eliah Kagan

Respostas:

20

Do tipo de terminal:

help

De help help:

Display information about builtin commands.
karel
fonte
Observe que helplista as palavras-chave do shell e os recursos internos do shell (e não indica explicitamente qual é qual).
Eliah Kagan
17

Você pode usar compgen -bde um shell bash para obter uma lista dos comandos internos do shell.

chave de aço
fonte
13

Como alternativa, você pode exibir com o enablecomando: (As respostas de @ karel e @ steeldriver funcionam bem.)

enable -a | cut -d " " -f 2,3

Se algum interno estiver desativado, ele será mostrado com -n entrada.

Exemplo de saída:

$ enable -a | cut -d " " -f 2,3
.
:
[
alias
bg
bind
break
builtin
caller
cd
command
compgen
complete
compopt
continue
declare
dirs
disown
echo
enable
eval
exec
exit
export
false
fc
fg
getopts
hash
help
history
jobs
kill
let
local
logout
mapfile
popd
printf
pushd
pwd
read
readarray
readonly
return
set
shift
shopt
source
suspend
test
times
trap
true
type
typeset
ulimit
umask
unalias
unset
wait
Pandya
fonte
1

Para aqueles que odeiam a criação de binários externos simplesmente para formatação / extração de dados:

while read -r _ cmd ; do echo $cmd ; done < <(enable -a)
Nicola Worthington
fonte
Por que não simplesmente um pipe em vez de um redirecionamento FIFO? enable -a | while read ...
David Foerster
Isso também funcionaria. Este é apenas um hábito em que estou, para que qualquer manipulação de variável que eu queira fazer dentro do loop while não seja executada dentro de um sub-shell. (Manipular variáveis ​​dentro de um sub-shell significaria que as alterações não são persistidas para fora da outra extremidade do loop).
Nicola Worthington
1

Basta digitar o Terminal:

man bash

Isso abrirá o manual do bash. Role para baixo e você encontrará SHELL BUILTIN COMMANDS . Aqui você pode conhecer todos os comandos internos e o que eles fazem. Se você deseja o manual em um formato txt, use este comando

man bash > FILENAME.txt

Agora você tem o arquivo de texto do manual do bash.

Ujjwal Gupta
fonte
1

Outra maneira: man builtins

Ele exibe a lista de componentes internos na parte superior e, em seguida, possui todos os detalhes de cada comando abaixo.

SYNOPSIS
       bash defines the following built-in commands: :, ., [, alias, bg, bind,
       break,  builtin,  case,  cd,  command,  compgen,  complete,   continue,
       declare,  dirs, disown, echo, enable, eval, exec, exit, export, fc, fg,
       getopts, hash, help, history, if, jobs, kill, let, local, logout, popd,
       printf,  pushd, pwd, read, readonly, return, set, shift, shopt, source,
       suspend, test, times, trap,  type,  typeset,  ulimit,  umask,  unalias,
       unset, until, wait, while.
wisbucky
fonte