Linux - Bash - Copiando strings de várias linhas da origem ao terminal

1

Estou escrevendo notas enquanto preparo um sistema para que eu tenha algo a seguir se / quando eu precisar preparar outro sistema. Também espero usar essas notas e implementá-las em uma configuração de fantoches em algum momento.

Eu estou tentando escrever comandos bash de várias linhas, mas quando copio e colo do meu IDE (aptana) no terminal, fico com um comportamento estranho e os comandos nunca são executados, mesmo quando eu recuo no histórico. comando de linha parece que eu digitei manualmente.

Minha pergunta é: como posso salvar os comandos em um formato de várias linhas para que eu possa copiar e colar rapidamente no terminal?

Exemplo:

$ "mkdir -p /var/log/php && \
 chown -R apache /var/log/php && \ 
 chgrp -R webdev /var/log/php && \
 chmod -R 775 /var/log/php && \ 
 touch /var/log/php/oops.log"

touch /var/log/php/oops.log: No such file or directory
    
por Mike Purcell 13.12.2011 / 02:34

3 respostas

4

Operadores de controle bash (como && ) NÃO requerem um "\" para concatenar linhas juntos. Você também não precisa citar seu script. A versão re-fatorada seria:

mkdir -p /var/log/php && 
/bin/chown -R apache /var/log/php &&  
/bin/chgrp -R webdev /var/log/php && 
/bin/chmod -R 775 /var/log/php &&  
touch /var/log/php/oops.log

Cortar e colar esse script em um shell deve funcionar.

    
por 13.12.2011 / 02:49
2

Você pode usar exec :

$ exec <<< "echo hello world"

MAS tenha em mente que sairá da sua concha atual depois de concluído. Você poderia resolver isso gerando um novo shell:

$ bash -s <<< "echo hello world"

Além disso, você pode torná-lo um script bash. Exemplo:

#!/bin/bash
mkdir -p /var/log/php
chown -R apache /var/log/php
chgrp -R webdev /var/log/php
chmod -R 775 /var/log/php
touch /var/log/php/oops.log

Você pode fazer algo como:

$ cat >> ~/script.sh
#!/bin/bash
mkdir -p /var/log/php
chown -R apache /var/log/php
chgrp -R webdev /var/log/php
chmod -R 775 /var/log/php
touch /var/log/php/oops.log
<CTRL+D>
$ . ~/script.sh
    
por 13.12.2011 / 02:39
0

Você simplesmente faz os quatro primeiros comandos fazendo ...

$ install -o apache -g webdev -m 0755 -d /var/log/php

Isso criará um diretório /var/log/php com o proprietário apache group webdev e permissão 0755 .

    
por 23.05.2012 / 04:30

Tags