Eu usaria a ferramenta de instalação para copiar do NTFS.
install -m644 file1 ... fileN destination_directory
A principal razão pela qual eu quero isso é meu uso pesado de dircolors
, especialmente para ls --color=auto
.
Por exemplo, sempre que um arquivo .mp3
for copiado do NTFS, ele terá permissões definidas por umask 022
, que deve ser o valor padrão na maioria das distribuições modernas.
No entanto, para arquivos de áudio, não faz sentido: devido ao fato de suas permissões serem definidas como 755
( rwxr-xr-x
), elas obterão a mesma cor que um script de shell executável , enquanto eu Eu realmente gostaria de ter essa cor reservada para verdadeiros executáveis. Isto não é Windows; mesmo com a permissão x
definida para proprietário / grupo / outro, você não pode esperar que ./track1.mp3
trabalhe no terminal para que ele tente escolher um player de console padrão.
Então, eu gostaria de ter um certo umask
SOMENTE para arquivos de áudio , i. e. que quaisquer arquivos como .mp3, .wav, .ogg e assim por diante sempre seriam configurados como 644
, enquanto todos os outros arquivos copiados para esse local são assumidos como padrão umask
of 022
.
Existe alguma maneira de fazer isso?
(NOTA: cp --preserve
NÃO preservará as permissões originais no NTFS, uma vez que o NTFS é notoriamente ignorante sobre a sistemática da permissão * NIX).
Você pode usar um script para o seu próprio comando cp
definido pelo usuário que verifica as extensões de arquivo e usa chmod
apropriadamente ...
Você poderia fazer algo simples como: (usando install em vez de cp chmod como por @ fd0. Isso é mais inteligente de qualquer maneira.)
#!/bin/bash
args=("$@")
dest="${args[@]:(-1)}"
unset args[${#args[@]}-1]
if [ ! -d "$dest" ]; then
echo "Please specify a destination directory as the final argument."
exit 1
fi
for file in "${args[@]}"; do
if [ "$file" == *".mp3" ] || [ "$file" == *".wav" ] || [ "$file" == *".ogg" ]; then
install -m644 "$file" "$dest"
else
install -m755 "$file" "$dest"
fi
done
exit 0