No AskUbuntu, eu vi alguns comandos ao redor que parecem bastante complicados, com muitos símbolos neles. Para entender melhor como esses comandos são criados, eu gostaria de saber o que os símbolos representam.
Por exemplo:
find ~/ -name \*.c -exec sed -i "s/cybernetnews/cybernet/g" {} \;
ou ainda mais complicado:
echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m"
Compreendo muito bem que os parâmetros adicionando como -c
, --debug
, têm certos efeitos sobre o commmand principal. O significado desses termos é encontrado em quase todos os casos nas man
páginas, portanto não é isso que estou procurando.
Por favor, tente na sua resposta definir o que os símbolos fazem especificamente, em vez de explicar os exemplos que eu dei. Isso poderia ser assim:
" means 'argument': the main command uses anything within these symbols as its source
^ is used for ...
# is used for ...
desde já, obrigado
fonte
-c -D
poderia significar algo no comando 1 e uma coisa completamente diferente no comando 2.Respostas:
Consulte a seção Manual de Referência do Bash , denominada Operação do Shell e o Guia Avançado de Script de Bash, Capítulo 3 (Caracteres Especiais) .
Refiro-me a eles sempre que preciso aprender algo novo sobre scripts de shell no ubuntu / linux.
Acho que você achará o Capítulo 3 do ABS o mais fácil de navegar para seus propósitos. Todos os símbolos são vistos na extremidade esquerda da página com uma descrição imediatamente abaixo deles.
fonte
Infelizmente, você precisa acessar as páginas de manual, pois os "símbolos" podem ter significados diferentes, dependendo de qual comando os está lendo.
Por exemplo, no seu primeiro comando, o significado de {} e \; depende do comando find (man find). O significado das aspas em um argumento para sed depende de sed ou bash (como é um parâmetro citado, pode ser uma coisa do tipo shell). O ~ / é definitivamente uma coisa de expansão do padrão de bash.
Para o segundo comando complicado, trata-se principalmente de coisas que ecoam, então você encontrará mais informações sobre isso na página de manual do bash.
Para responder seu comentário, os caracteres de redirecionamento> <| são usados para canalizar coisas de e para arquivos (os maiores e menores que sinais) e conectar a saída de um comando à entrada de outra pessoa (o canal |). Veja aqui um bom tutorial sobre redirecionamento de E / S, este é um recurso de design muito poderoso do shell e do conjunto de ferramentas do Unix.
fonte
>
? É um sinal que também vejo com frequência, pensei que significava "copiar" ou algo assim. Este também depende de um comando?A primeira pesquisa por arquivos que terminam em
.c
dentro do diretório~/
eexec
utessed
(editor de streamline) onde os
pesquisador procuracybernetnews
e o alteracybernet
.O segundo me escapa ... mostra um resultado vazio quando executado.
fonte
O melhor recurso que encontrei para aprender comandos de terminal é o LinuxCommand , que fornece descrições detalhadas dos comandos mais usados disponíveis.
fonte
É difícil dizer o significado completo dos símbolos ao colar comandos complexos.
O eco em particular.
Veja o eco do homem para o -e, ele permite a fuga, então mais tarde é uma fuga.
A maioria dos outros símbolos são manipulações de cordas.
Imagine que você tenha uma variável, i, que contém uma string "foo"
Mas fica mais complexo se sua variável, $ i, também faz parte de uma string
Agora você também pode manipular as cordas, imprimir apenas uma parte
No seu caso
$ {i # * =} = imprime $ i, retira a menor correspondência entre * e =, mas * em si é um curinga.
Vejo http://tldp.org/LDP/abs/html/string-manipulation.html
Em seguida, atingimos um sub shell (x ...)
O Bash processará os comandos no sub shell e retornará a saída dos comandos.
x = (uma sub-cadeia de i); continuar
Agora temos um teste, ["$ {! X}"]
Vejo : http://tldp.org/LDP/abs/html/testconstructs.html
E aqui é onde eu não posso mais contar.
No bash, $ {! X} será uma string vazia. && == lógico e || é lógico ou
teste {string vazia} AND echo string vazia ou echo x
Você precisaria fornecer mais sintaxe, mas parece que esse eco está canalizando sua saída para algum lugar.
Novamente [] é um teste, e nós escapamos de um [no início.
Então, só posso explicar muito do que o eco está fazendo.
A razão pela qual não há saída quando você insere o comando echo em um terminal é um snipit de código; por padrão, nem x ou i estão definidos, portanto, toda a saída está vazia.
fonte
Para perguntas sobre símbolos em idiomas específicos, tente o SymbolHound. Você pode pesquisar na web caracteres que o Google não encontra.
fonte