Você não tem o caminho que contém o arquivo:
/opt/tsrm/compliance/cme/log/
É daí que vem o erro.
Esta pergunta já tem uma resposta aqui:
Estou recebendo o erro:
touch: cannot touch '/opt/tsrm/compliance/cme/log/20121207.log': No such file or directory
no comando de toque: touch $LOGFILE
Também verifiquei o link: touch: cannot touch 'foo': Não existe esse arquivo ou diretório , mas eu não entendi a resposta.
Nota: eu também estava recebendo mkdir: cannot create directory
; Eu corrijo isso adicionando a opção -p
.
Isso pode ser algo com a versão do Linux em que estou trabalhando?
Parece que você digitou incorretamente o caminho. Por exemplo, esta pasta /stuff/more_stuff
não existe. Isso me dá o resultado:
user@linux:~ $ touch /stuff/more_stuff/stuff.file
touch: cannot touch '/stuff/more_stuff/stuff.file': No such file or directory
Tanto /stuff
como /stuff/more_stuff
precisam existir para que touch
funcione.
Sim, pode haver chances de erro de digitação ou diretório não existir.
LOGFILE="/opt/tsrm/compliance/cme/log/20121207.log"
LOG_DIR='dirname $LOGFILE'
[ ! -d $LOG_DIR ] && mkdir -p $LOG_DIR
touch $LOGFILE
Por mais boba que essa resposta pareça, além do diretório ausente, pode haver um delimitador de cadeia ao redor do valor em $LOGFILE
Trabalhando:
LOGFILE=/stuff/more_stuff/stuff.file
touch $LOGFILE
Não funciona:
LOGFILE="/stuff/more_stuff/stuff.file"
touch $LOGFILE
Alguma distro do Linux tem o capricho acima, então seja cuidadoso;)