Mac Bash Script - говорит, скрытая папка скрыта или нет - PullRequest
0 голосов
/ 31 августа 2011

Я использую Mac OSX Lion, и я хотел бы иметь скрипт, который сообщает мне, является ли каталог скрытым или видимым.каталог: whatyoulookingatfool.

Это то, что у меня сейчас ...

#!/bin/bash

#Check for dir
if test -d /Users/NSutton/Documents/.whatyoulookingatfool; then
    echo "go go go"
else
    echo "well shit"
fi

Ответы [ 3 ]

2 голосов
/ 31 августа 2011

У меня сейчас нет машины osx, но я предполагаю, что у mac есть команда basename и достаточно новый bash.

#!/bin/bash

dir=$1
bn=$(basename $dir)

if [[ -d $dir && $bn == .* ]]
then
   echo yep
else
   echo nay
fi

Обратите внимание, что это не работает с каталогами . и ...

0 голосов
/ 31 августа 2011

Итак, если имя существует, переименуйте в .name, и наоборот?

#!/bin/sh

name=whatyoulookingatfool

for f in . ''; do
    test -d "$f$name" || continue
    mv "$f$name" "${f:-.}$name"
    break
done
0 голосов
/ 31 августа 2011

Хорошо, вы говорите о файлах, которые скрыты Finder, или файлах, которые начинаются с точки, поэтому они скрыты в таких командах, как ls, если вы не укажете параметр (например, -a) чтобы увидеть их?

Если вы в основном говорите о точке, вы можете сделать это различными способами. Один из них обозначен Ahe . Еще один способ:

if [[$ {fileName %%. *} = ""] затем echo "Имя файла начинается с точки" еще echo "Имя файла не начинается с точки" фи

Кстати, квадратные скобки являются эквивалентом команды test и обычно являются предпочтительными.

Таким образом:

if test -d /Users/NSutton/Documents/.whatyoulookingatfool; then

совпадает с

if [ -d /Users/NSutton/Documents/.whatyoulookingatfool ]; then

Обратите внимание на пробелы вокруг квадратных скобок. Есть еще больше тестов, встроенных в программу Bash с использованием двойных квадратных скобок, которые могут выполнять сопоставление с образцом. Для получения дополнительной информации см. Справочную страницу BASH .

Теперь, если вы хотите узнать, является ли файл скрытым в Finder. Например, $HOME/Library отображается в инструменте командной строки, но обычно невидимо в Finder, вам придется использовать команду GetFileInfo . Он встроен в Mac OS X и позволяет определить, не является ли файл невидимым для Finder.

Существует также каталог /.hidden, в котором перечислены все скрытые файлы, которые использовались до Mac OS X 10.4 (Tiger).

К сожалению, у меня нет Mac передо мной для запуска каких-либо тестов, поэтому я не могу дать вам точную команду, но проверь man-страницу GetFileInfo и поиграюсь немного и посмотрите, как это работает.

Кстати, вы можете включить или выключить скрытие файлов с помощью следующей команды:

defaults write com.apple.finder AppleShowAllFiles TRUE  #Shows hidden files
defaults write com.apple.finder AppleShowAllFiles FALSE #Hides hidden files

Возможно, вам придется перезапустить Finder:

killAll Finder
...