O que um cólon invertido está fazendo neste comando chown?

2

O que o \: está fazendo no comando abaixo?

sudo chown nobody\: folder/

É algum tipo de erro?

    
por dryhay 09.04.2015 / 17:50

4 respostas

0

O \ não faz nenhuma diferença, uma vez que o shell elimina isso. O utilitário chown receberá um literal nobody: como seu primeiro argumento.

A presença vs. ausência de : faz diferença, no entanto. Veja a página de manual do chown para uma descrição clara.

sudo chown nobody folder/ altera o proprietário, mas deixa o grupo do arquivo intacto.

sudo chown nobody: folder/ altera o proprietário e o grupo do arquivo. O grupo é definido como o grupo padrão do usuário nobody , conforme definido em /etc/passwd ou algum outro mecanismo (por exemplo, ldap).

    
por 23.04.2015 / 15:04
2

A barra invertida (\) está certificando-se de que o shell não interpreta o caractere seguinte como um meta-caractere do shell . Como o cólon não é um caractere desse tipo, a barra invertida não está efetivamente fazendo nada.

Os dois-pontos (:) são usados para separar "usuário" de "grupo" - o comando chown altera a propriedade usuário e grupo . Sem grupo especificado, o cólon não é necessário e, portanto, efetivamente não está fazendo nada.

    
por 11.04.2015 / 02:27
2

O que:

É chamado de caráter que escapa , e garante que o cólon seja literalmente tratado como tal.

Por que:

No shell, dois pontos podem ser usados para separar o nome do arquivo do nome do host (normalmente usado com comandos como rsync e scp ). No chown, ele é usado para separar o usuário do grupo.

O shell lê o comando primeiro e, para garantir que ele não seja tratado como o caractere especial que é, mas, em vez disso, parte do argumento enviado para chown, ele é salvo com a barra invertida.

Deve-se notar que neste caso em particular eu não vejo a necessidade de ter o cólon ali, já que ter o grupo especificado, sem falar em um nome de grupo em branco, não é necessário com chown.

Como:

O prefixo de um caractere com uma barra invertida é comum e pode ser usado para muitos outros que o shell trataria diferentemente. Por exemplo:

ls test* listará todos os arquivos que começam com teste ls test\* listará um arquivo chamado test* com o asterisco como parte do nome do arquivo real.

Às vezes, o caractere de escape pode ser usado ao contrário para casos em que você deseja que um caractere normal seja tratado especialmente. Exemplos incluem:

  • \n uma nova linha
  • \t um caractere de tabulação
por 12.04.2015 / 14:56
0

A barra invertida é um caractere de escape que modifica a interpretação dos caracteres especiais. No entanto, o cólon não é um caractere especial para o interpretador de shell (como bash ), de modo que, na verdade, não faz nada.

O caractere de dois pontos em chown / chmod é usado para distinguir o nome do usuário e do grupo (quando o operando do grupo é especificado). As versões anteriores do utilitário chown usavam o ponto, mas ele era alterado para dois-pontos, já que os nomes de usuários e grupos podem conter o caractere de ponto.

    
por 12.04.2015 / 14:26