Como compactar um comando chmod UNIX

0

Existe de qualquer forma para compactar o seguinte comando UNIX:

chmod 755 scriptA.ksh | chmod 755 scriptB.ksh | chmod 755 scriptC.ksh | chmod 755 scriptD.ksh

O comando acima faz com que cada script do KornShell (ksh) seja executável, assim o comando compactado será mais curto e ainda fará com que todo script ksh seja executável.

    
por javaPlease42 10.01.2014 / 19:50

3 respostas

6

Você pode enviar quantos arquivos desejar para chmod ; você não precisa individualmente chmod de cada arquivo se todos eles estão sendo definidos para o mesmo conjunto de permissões.

Você tem muitas opções aqui:

chmod 0755 *.ksh  # If you want to set these permissions on all *.ksh files
chmod 0755 script?.ksh  # If you want to set these permissions on all files named script[any single character].ksh
chmod 0755 scripta.ksh scriptb.ksh scriptc.ksh  # The plainest form - simply list the files
chmod 0755 script{a..c}.ksh  # Use brace expansion

Em suma, este é um gato com muitas peles para filé. O que você faz não precisa, no entanto, é canalizar a saída de um chmod para a entrada padrão do próximo.

    
por 10.01.2014 / 20:02
5

Ou adicionando a resposta Graeme:

chmod 755 script{A,B,C,D}.ksh

Se todos tiverem a mesma extensão:

chmod 755 *.ksh
    
por 10.01.2014 / 19:57
2

Eu não entendo porque você está enviando um chmod para outro, isso parece sem sentido. A resposta curta para isso é usar shell globbing. Para os arquivos listados, isso seria tão simples quanto:

chmod 755 script?.ksh

Aqui, o ? corresponde a qualquer caractere único. * é mais comum para combinar vários caracteres. Haverá uma explicação completa da sintaxe suportada no manual do shell.

Editar

Estendendo-se do comentário abaixo, uma possibilidade seria globar os arquivos que você não deseja alterar. No bash você usa !() , por exemplo:

chmod 755 !(*dont_break*).ksh
    
por 10.01.2014 / 19:55