dark777
(usa Debian)
Enviado em 27/04/2024 - 19:18h
aguamole escreveu:
Tem um problema no comando acima, porque ele não esta tratando erro, para isso é necessario um if, o comando agora esta assim, testado e funcionando:
temp="$(mktemp)"; echo 'arquivo1.txt' | xargs -t -I % touch % 2>&1 | sed 's/touch/created: /' >"${temp}"; if [[ $(wc -l <"${temp}") == "1" ]]; then cat "${temp}"; else echo "Error"; fi; [[ -e "${temp}" ]] && rm "${temp}"
Linguagem de programação 100% shell.
andei testando atraves de um alias os dois comandos:
Comando1:
alias sfiles1='func(){ echo "${1}" | xargs -t -I % touch % 2>&1 | sed "/touch/ s/^touch/created:/"; }; func'
Comando 2:
alias tfiles2='func(){ temp="$(mktemp)"; filename="${1}"; echo -e "${filename}" | xargs -t -I % touch % 2>&1 | sed "/touch/ s/touch/created:/" > "${temp}"; if [ "$(head "${temp}" | wc -l)" -eq 1 ]; then cat "${temp}"; else echo -e "toucher: cannot touch ${filename}"; fi; [ -e "${temp}" ] && rm -v "${temp}"; }; func'
até entao os aliazes executam sem nenhum erro de sitaxe porem tenho a estrutura de diretórios:
$ ls -R
.:
directory1 directory2
./directory1:
txt-files
./directory1/txt-files:
./directory2:
doc-files
./directory2/doc-files:
Se executar o comando "touch" criando os arquivos recursivamente ele cria normalmente:
$ touch directory{1/txt-files/arquivo1.txt,2/doc-files/arquivo1.doc}
$ ls -R
.:
directory1 directory2
./directory1:
txt-files
./directory1/txt-files:
arquivo1.txt
./directory2:
doc-files
./directory2/doc-files:
arquivo1.doc
Mas se usar o que fizemos adicionado ao aliás:
$ sfiles1 directory{1/txt-files/arquivo1.txt,2/doc-files/arquivo1.doc}
created: directory1/txt-files/arquivo1.txt
$ ls -R
.:
directory1 directory2
./directory1:
txt-files
./directory1/txt-files:
arquivo1.txt
./directory2:
doc-files
./directory2/doc-files:
E se executar o segundo aliás que redireciona para tmp ele tambem só cria um unico arquivo.
$ tfiles1 directory{1/txt-files/arquivo1.txt,2/doc-files/arquivo1.doc}
created: directory1/txt-files/arquivo1.txt
$ ls -R
.:
directory1 directory2
./directory1:
txt-files
./directory1/txt-files:
arquivo1.txt
./directory2:
doc-files
./directory2/doc-files:
tem alguma possibilidade de resolver isso para o aliás funcionar corretamente?
wiki.anon