Można oznaczać pliki i foldery kolorem w programie Mac OS X Finder. Czy można to zrobić ze skryptu powłoki?Oznaczanie plików kolorami w programie OS X Finder ze skryptów powłoki
Odpowiedz
Ten skrypt bierze nazwę pliku lub folderu jako pierwszy argument i indeks etykiety (0 oznacza bez etykiety, 1 dla czerwonego, ..., 7 dla szarego) jako drugi argument.
#!/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"
Bardziej bezpośrednio, jeśli $ nazwa_pliku jest zmienna powłoki bezwzględną nazwę ścieżki pliku lub folderu, aby być oznakowane i $ label jest zmienna powłoki z numerem indeksu etykieta,
osascript -e "tell application \"Finder\" to set label index of alias POSIX file \"$filename\" to $label"
jest poleceniem powłoki, które przypisuje etykietę do pliku lub folderu.
Jeden brzydki sposób to zrobić byłoby:
exec osascript <<\EOF
tell app "Finder"
-- [...]
-- selecting the file
-- [...]
-- 4 is Blue
set label index of thisItem to 4
end tell
Zasadniczo uruchomienia AppleScript, który używa celownika ustawić kolor.
mam podpowiedzi z:
(kolor) http://www.macosxhints.com/article.php?story=20070602122413306
(shell) http://www.macosxhints.com/article.php?story=20040617170055379
podstawie tutejszych odpowiedzi oraz w odnośnych stanowisk, zrobiłem następującą funkcję i dodaje go do mojego ~/.bash_profile
pliku:
# 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 - "[email protected]" << 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
}
Istnieje również narzędzie linii poleceń „setLabel” w pakiecie osxutils. Nie wymaga AppleScript ani uruchamiania Findera.
Użyłoby to tej samej kolejności dla kolorów, co Finder.
#!/bin/bash
if [[ $# -le 1 || ! "$1" =~ ^[0-7]$ ]]; then
echo "Usage: labelfile ..." 1>&2
exit 1
fi
colors=(0 2 1 3 6 4 5 7)
n=${colors[$1]}
shift
osascript - "[email protected]" <<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
Mam przekierowanie standardowego wyjścia błędów, ponieważ dostałem ostrzeżenia jak 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
na 10,8. STDOUT jest przekierowywane, ponieważ osascript wypisuje wartość ostatniego wyrażenia.
Oto krótki skrypt Pythona I napisał:
https://github.com/danthedeckie/finder_colors
który ustawia kolory folderów i plików z linii poleceń.
Zastosowanie:
finder_colors.py red /Users/daniel/src
ustawia katalog/Users/Daniel/src być czerwony.
finder_colors.py /Users/daniel/src
zwraca kolor (w tym przypadku teraz "czerwony"). Jeśli piszesz skrypt Pythona, możesz zaimportować finder_colors jako moduł i użyć go bezpośrednio (finder_colors.get (...) i finder_colors.set (...).
Pomoże ci więcej, jeśli wytłumaczysz jak to robisz, np. poprzez odpowiednie przykłady kodu twojego rozwiązania – Pfitz
Dzięki @Pfitz - dodałem Sposób działania wewnętrznie wykorzystuje wbudowaną bibliotekę Pythona do edycji rozszerzonych atrybutów pliku: Nie mogłem znaleźć eleganckiego natywnego skryptu, aby to zrobić, i nie lubię rozwiązania skryptowe. – Daniel
- 1. Czy podpisywanie aplikacji do pakowania skryptów powłoki jest uszkodzone w systemie OS X 10.11?
- 2. Podświetlanie składni w emacs. Oznaczanie różnych typów danych różnymi kolorami
- 3. Polecenie powłoki w celu uzyskania adresu mac w OS X
- 4. Dlaczego porównania skryptów powłoki często używają x $ VAR = xyes?
- 5. Testowanie jednostek dla skryptów powłoki
- 6. Kontrola wersji dla skryptów powłoki
- 7. Zapisywanie w dziennikach konsoli Mac OS X ze skryptu powłoki lub wiersza poleceń
- 8. Zarządzanie obsługą błędów podczas uruchamiania sqlplus ze skryptów powłoki
- 9. Regex do partii zmieniać nazwy plików w OS X Terminal
- 10. Wiele instrukcji, jeśli else w skryptów powłoki
- 11. Mac OS X - uruchom skrypt powłoki z GUI na komputerze stacjonarnym
- 12. Debugowanie skryptów powłoki o numerach linii
- 13. assembler w os x
- 14. Używanie skryptów JavaScript w programie Excel
- 15. Specyfikacja podpisanych plików binarnych w systemie OS X
- 16. Jak mogę zaimplementować system rozpoznawania gestów w systemie OS X?
- 17. mongod, Mac OS X - rlimits ostrzegawcze
- 18. Jak przekazać zmienną w poleceniu zwinięcie w skryptów powłoki
- 19. OS X: Lista i usuwać pliki ze spacjami
- 20. Możliwe mieszanie skryptów powłoki i python?
- 21. Jak zmienić kodowanie znaków skryptów powłoki?
- 22. Jak korzystać ze skryptów AutoHotKey?
- 23. Łatwy sposób uruchamiania skryptów w języku Python za pomocą myszy w systemie OS-X
- 24. przesyłanie wielu plików ze skryptu powłoki za pomocą standardowego wejścia
- 25. muzyka ze skryptem powłoki
- 26. Os x terminal, ssh i zbyt wiele otwartych plików
- 27. Dylibs i OS X
- 28. OS X dzyń -pthread
- 29. TClientDataset w OS X Firemonkey App
- 30. JNotify w systemie Mac OS X?
To się nie powiedzie, jeśli nazwa pliku zawiera podwójne cudzysłowy lub końce ukośnikiem odwrotnym –
@Kevin: Jakiekolwiek rozwiązanie tego problemu? – Svish
@Kevin: Również ... dlaczego miałbyś plik zawierający podwójne cytaty? Myślałem, że jest nieważny ...a może tylko w systemie Windows ... – Svish