Linux以外のファイルシステムからファイルをコピーするときは、特定のファイル形式に対する正しい権限を自動的に設定します。

Linux以外のファイルシステムからファイルをコピーするときは、特定のファイル形式に対する正しい権限を自動的に設定します。

私がこれをしたい主な理由は、私がそれをたくさん使うからですdircolors。たとえば、NTFSからファイルをコピーするls --color=autoたびに、ほとんどの最新のディストリビューションで標準値になる.mp3権限が設定されます。umask 022ただし、オーディオファイルの場合、これは意味がありません。権限が755rwxr-xr-x)に設定されているため、オーディオファイルと同じ色を持ちます。実行可能なシェルスクリプト、実際の実行ファイルについてはこの色を維持したいと思います。これはいいえ窓;でもそしてx./track1.mp3所有者/グループ/その他に設定されている権限は端末で機能すると期待できないため、デフォルトのコンソールプレーヤーを選択しようとします。

だから私umaskボーカルファイル、つまり.mp3、.wav、.oggなどのすべてのファイルのモードは常にに設定されていますが、644この場所にコピーされた他のすべてのファイルのデフォルトモードはumaskです022

これを行う方法はありますか?
(注:cp --preserveNTFSは* NIX権限システムについて何も知らないため、NTFSに対する元の権限も保持されません。)

ベストアンサー1

カスタムコマンドの独自のスクリプトを使用してcpファイル拡張子を確認し、chmod適切に使用できます。

次のように簡単に実行できます。 (@ fd0に従ってcp chmodの代わりにinstallを使用してください。とにかくスマートです。)

#!/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

おすすめ記事