Executando tarefas repetitivas através do script Bash

1

Estou executando algumas tarefas repetitivas e acho que será bom criar um pequeno script para executar todas elas em apenas um comando: execute o script bash. Estas são as tarefas que preciso executar:

# stop HTTPD, clear logs, start HTTPD back
service httpd stop
cd /var/log/httpd/
rm -r *
service httpd start

# clear PHP error logs
truncate /var/log/php/php_errors.log --size 0

# clear MySQL error, query and slow logs
truncate /var/log/mysql/mysql_error.log --size 0
truncate /var/log/mysql/mysql_query.log --size 0
truncate /var/log/mysql/mysql_slow.log --size 0

Então é assim que estou fazendo:

#! /bin/bash

# stop HTTPD, clear logs, start HTTPD back
service httpd stop
cd /var/log/httpd/
rm -r *
service httpd start

# clear PHP error logs
truncate /var/log/php/php_errors.log --size 0

# clear MySQL error, query and slow logs
truncate /var/log/mysql/mysql_error.log --size 0
truncate /var/log/mysql/mysql_query.log --size 0
truncate /var/log/mysql/mysql_slow.log --size 0

Mas estou recebendo esse erro o tempo todo e não sei o que estou fazendo de errado:

bash: ./cleanup.sh: /bin/bash^M: bad interpreter: No such file or directory

Não sou especialista em Linux. Sou apenas um programador que tenta facilitar as coisas para si mesmo. Algum pode me dar alguma ajuda para fazer isso? Algum conselho? O que estou fazendo errado e / ou faltando?

    
por ReynierPM 24.08.2015 / 03:29

1 resposta

2

Você precisa executar dos2unix no seu arquivo, que provavelmente foi copiado para a sua distribuição Linux com as terminações dos arquivos do Windows . O caractere ^M , também conhecido como o caractere retorno de carro , faz com que sua distribuição Linux ache que precisa procurar um comando bash^M , em vez de bash .

Para ver realmente os caracteres ^M , você pode abrir seu arquivo com cat -A :

$ cat -A file
# --- comment: expected output below ---
#! /bin/bash^M
# stop HTTPD, clear logs, start HTTPD back^M
service httpd stop^M
cd /var/log/httpd/^M

Caso você não tenha o dos2unix instalado, você também pode tentar substituir usando o comando tr (conforme explicado em aqui ):

tr -d '\r' < inputfile > outputfile
    
por 24.08.2015 / 03:34