Permissions
從非 Linux 文件系統複製文件時,自動為某些文件類型設置正確的權限
我想要這個的主要原因是我大量使用
dircolors
,尤其是對於ls --color=auto
. 例如,每當.mp3
從 NTFS 複製文件時,它都會設置權限,umask 022
這在大多數現代發行版中應該是標準值。但是,對於音頻文件,這是沒有意義的:由於它們的權限設置為755
( ),因此它們將獲得與可執行 shell 腳本rwxr-xr-x
相同的顏色,而我真的希望為真正的執行檔保留這種顏色。這不是Windows;即使為所有者/組/其他設置了權限,您也不能期望在終端中工作,以便嘗試選擇預設控制台播放器。x``./track1.mp3
所以我想為音頻
umask
文件設置一個ONLY ,即任何文件,如 .mp3、.wav、.ogg 等,都將始終將其模式設置為,而將所有其他文件複製到此位置預設為的。644``umask``022
有沒有辦法做到這一點?
*(注意:
cp --preserve
也不會保留 NTFS 上的原始權限,因為眾所周知,NTFS 對 NIX 權限系統一無所知。)
我會使用安裝工具從 NTFS 複製。
install -m644 file1 ... fileN destination_directory
您可以為您自己的使用者定義
cp
命令使用腳本來檢查文件副檔名並chmod
適當地使用…你可以做一些簡單的事情,比如:(使用 install 而不是 cp chmod 根據@fd0。無論如何這更聰明。)
#!/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