0

Mac OSX Lion を使用しています。ディレクトリが非表示か表示かを示すスクリプトが必要です。ディレクトリは .whatyou lookingatfool です。

これは私が今持っているものです...

#!/bin/bash

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

3 に答える 3

2

ここにはosxマシンはありませんが、macにはbasenameコマンドと十分に新しいbashがあると思います。

#!/bin/bash

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

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

.これはと..ディレクトリでは機能しないことに注意してください。

于 2011-08-31T13:35:16.893 に答える
0

それで、名前が存在する場合は.nameに名前を変更し、その逆も同様ですか?

#!/bin/sh

name=whatyoulookingatfool

for f in . ''; do
    test -d "$f$name" || continue
    mv "$f$name" "${f:-.}$name"
    break
done
于 2011-08-31T17:23:53.957 に答える
0

さて、Finder によって非表示になっているファイル、またはピリオドで始まるファイルについて話しているので、パラメータ ( など) を指定して表示しない限り、コマンドで非表示になりますか?ls-a

主にドットについて話している場合は、これをさまざまな方法で行うことができます。1つはAheによって示されています。別の方法は次のとおりです。

if [[ ${fileName%%.*} = "" ] then echo "ファイル名はピリオドで始まります" else echo "ファイル名はピリオドで始まりません" fi

ところで、角括弧は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 に表示されないと想定されているかどうかを確認します。

また、/.hiddenMac OS X 10.4 (Tiger) より前に使用されていた非表示のすべてのファイルを一覧表示するディレクトリもあります。

残念ながら、私の前にはテストを実行するための Mac がありません。そのため、正確なコマンドを示すことはできませんが、GetFileInfo のマンページを確認し、少し遊んで、それがどのように機能するかを確認してください。

ところで、次のコマンドを使用して、ファイルの非表示をオンまたはオフにすることができます。

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

Finder を再起動する必要がある場合があります。

killAll Finder
于 2011-08-31T17:02:59.013 に答える