シェルスクリプトからOS XのFinderでの色でのファイルへのタグ付け
-
19-09-2019 - |
質問
一つは、Mac OS XのFinderでの色でのファイルとフォルダにタグを付けることができます。 シェルスクリプトからこれを行う方法はありますか?
解決
このシェルスクリプトは、2番目の引数として最初の引数とラベル指数(無ラベル0、赤1、...、グレーの7)と、ファイルまたはフォルダの名前をとります。
#!/bin/sh
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"`cd -P -- "$(dirname -- "$1")" && printf '%s\n' "$(pwd -P)/$(basename -- "$1")"`\" to $2"
$ファイル名がある場合はより直接的に、ファイルまたはフォルダの絶対パス名でシェル変数が標識され、$ラベルは、ラベルインデックス番号を持つシェル変数であることには、
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"$filename\" to $label"
シェルコマンドは、ファイルまたはフォルダにラベルを割り当てることです。
他のヒント
ここで私が書いた迅速なPythonスクリプトです
https://github.com/danthedeckie/finder_colorsする
コマンドラインからフォルダやファイルの色を設定する。
使用方法:
finder_colors.py red /Users/daniel/src
赤であることを/ユーザ/ダニエル/ srcディレクトリを設定します。
finder_colors.py /Users/daniel/src
(ここで今、「赤」)色を返します。あなたはPythonスクリプトを書いている場合は、モジュールとしてfinder_colorsをインポートして、直接(finder_colors.get(...)、およびfinder_colors.set(...)を使用することができます。
ここでの応答に基づいて、参照記事では、私は次の関数を作り、私の~/.bash_profile
ファイルに追加します:
# Set Finder label color
label(){
if [ $# -lt 2 ]; then
echo "USAGE: label [0-7] file1 [file2] ..."
echo "Sets the Finder label (color) for files"
echo "Default colors:"
echo " 0 No color"
echo " 1 Orange"
echo " 2 Red"
echo " 3 Yellow"
echo " 4 Blue"
echo " 5 Purple"
echo " 6 Green"
echo " 7 Gray"
else
osascript - "$@" << EOF
on run argv
set labelIndex to (item 1 of argv as number)
repeat with i from 2 to (count of argv)
tell application "Finder"
set theFile to POSIX file (item i of argv) as alias
set label index of theFile to labelIndex
end tell
end repeat
end run
EOF
fi
}
これを行う一つの醜い方法は以下のようになります:
exec osascript <<\EOF
tell app "Finder"
-- [...]
-- selecting the file
-- [...]
-- 4 is Blue
set label index of thisItem to 4
end tell
基本的に色を設定するファインダを使用AppleScriptを起動します。
私はからヒントを得ました
(カラー) http://www.macosxhints.com/article.php?物語= 20070602122413306する
(シェル) http://www.macosxhints.com/article.php?物語= 20040617170055379する
osxutils のパッケージのコマンドラインツール「setlabel」もあります。これは、AppleScriptを必要としないか、Finderが実行されていること。
これは、ファインダとしての色について同じ順序を使用することになります。
#!/bin/bash
if [[ $# -le 1 || ! "$1" =~ ^[0-7]$ ]]; then
echo "Usage: label 01234567 file ..." 1>&2
exit 1
fi
colors=( 0 2 1 3 6 4 5 7 )
n=${colors[$1]}
shift
osascript - "$@" <<END > /dev/null 2>&1
on run arguments
tell application "Finder"
repeat with f in arguments
set f to (posix file (contents of f) as alias)
set label index of f to $n
end repeat
end tell
end
END
私は10.8に2012-09-06 13:50:00.965 osascript[45254:707] CFURLGetFSRef was passed this URL which has no scheme (the URL may not work with other CFURL routines): test.txt
のような警告を得たので私は、STDERRをリダイレクトしています。 osascriptを、最後の式の値を出力しますので、STDOUTがリダイレクトされます。