Bash, o que é comando, utilitário, interno, como distinguir

8

Estou executando o script Bash, mas às vezes fico confuso sobre quais desses comandos eu uso pertencem a quem. Às vezes man xxx funciona, às vezes não, então eu uso --help ou info , principalmente um desses trabalhos para mostrar a descrição do comando. Alguém pode me dizer como eu saberia qual comando pertence a quê? Bash builtin, utilitário GNU, etc.

    
por user198436 09.10.2013 / 22:42

2 respostas

5

Você pode usar type para descobrir:

$ type echo
echo is a shell builtin
$ type sudo
sudo is /usr/bin/sudo

Para construções internas, use help , como em help echo .

    
por choroba 09.10.2013 / 23:58
2

Alguns comandos embutidos são incluídos para eficiência e existem como comandos externos em primeiro lugar. Por exemplo:

$ type -a echo
echo is a shell builtin
echo is /bin/echo

$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

Uma análise detalhada de comandos internos e externos pode ser encontrada em Unix & Linux .

No que diz respeito a obter ajuda para comandos internos / externos duplos, como echo , você tem duas opções. Um método é usando man echo :

ECHO(1)                               User Commands                               ECHO(1)

NAME
       echo - display a line of text

SYNOPSIS
       echo [SHORT-OPTION]... [STRING]...
       echo LONG-OPTION

DESCRIPTION
       Echo the STRING(s) to standard output.

       -n     do not output the trailing newline

       -e     enable interpretation of backslash escapes

       -E     disable interpretation of backslash escapes (default)

       --help display this help and exit

       --version
              output version information and exit

       If -e is in effect, the following sequences are recognized:

       \     backslash

       \a     alert (BEL)

 Manual page echo(1) line 1 (press h for help or q to quit)

E você pode digitar:

$ help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.

    Display the ARGs, separated by a single space character and followed by a
    newline, on the standard output.

    Options:
      -n    do not append a newline
      -e    enable interpretation of the following backslash escapes
      -E    explicitly suppress interpretation of backslash escapes

    'echo' interprets the following backslash-escaped characters:
      \a    alert (bell)
      \b    backspace
      \c    suppress further output
      \e    escape character
      \E    escape character
      \f    form feed
      \n    new line
      \r    carriage return
      \t    horizontal tab
      \v    vertical tab
      \    backslash
      
$ type -a echo
echo is a shell builtin
echo is /bin/echo

$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf
nnn the character whose ASCII code is NNN (octal). NNN can be 0 to 3 octal digits \xHH the eight-bit character whose value is HH (hexadecimal). HH can be one or two hex digits Exit Status: Returns success unless a write error occurs.
    
por WinEunuuchs2Unix 19.03.2018 / 02:22