Mac OSXでls
にhidden
ファイルフラグを認識させることは可能ですか?
現在、単純な_ls -lO
_は以下を生成します。
_$ ls -lO
total 0
drwxr-xr-x@ 84 danielbeck staff - 2856 29 Mai 22:44 Applications
drwx------+ 158 danielbeck staff - 5372 29 Mai 15:27 Desktop
drwx------@ 250 danielbeck staff - 8500 30 Mai 20:40 Documents
drwx------+ 11 danielbeck staff - 374 29 Mai 22:21 Downloads
drwx------@ 84 danielbeck staff - 2856 29 Mai 22:48 Library
drwx------@ 3 danielbeck staff hidden 102 3 Apr 20:45 Movies
drwx------@ 5 danielbeck staff hidden 170 3 Apr 20:45 Music
drwx------+ 215 danielbeck staff - 7310 29 Mai 22:54 Pictures
drwxr-x---@ 7 danielbeck staff hidden 238 3 Apr 20:45 Public
drwxr-xr-x@ 4 danielbeck staff hidden 136 24 Apr 23:25 Sites
_
したがって、3種類の可視性があります。通常の可視ファイル、ターミナルで実際には非表示にされていないhidden
ファイルフラグの付いたファイル、および本当に名前がドット。
方法はありますか?エイリアスまたは信頼性の高いシェル関数を使用して、ls
がhidden
フラグ付きファイルと_.dothidden
_ファイルを同じように処理するようにします。つまり、デフォルトで非表示にし、_ls -A
_または_ls -a
_、_defaults read com.Apple.Finder AppleShowAllFiles
_の値に応じてFinderがどのように動作するかと同様ですか?
_man chflags
_がhidden
フラグについて具体的に言及しているのは、GUI、つまりFinderからのみ非表示になっていることを知っています。
これらは、-a/-A
オプションが指定されていない限り、hiddenフラグでファイルを非表示にするOS X ls
を取得する手順です。 、ドットファイルに似ています。
libutil
およびfile_cmds
を http://www.opensource.Apple.com からダウンロードします。各パッケージリストエントリの右側にダウンロードボタンがあります。このガイドは、OS X 10.8.2、YMMV向けに作成されており、別のバージョンを使用している場合は、以下の正確な手順を使用します。Xcodeでfile_cmds.xcodeproj
を開き、ls
ターゲットのビルドを選択します。
左側のfile_cmds
Xcodeプロジェクトを選択し、メインエリアでls
ターゲットを選択します。 ビルド設定タブで、ヘッダー検索パスをHeadersカテゴリを作成し、libutil
を抽出したフォルダへのパスを追加します。
左側のls
フォルダーにあるファイルprint.c
を開き、#include <membershipPriv.h>
という行を削除します。後でファイルを保存します。このshouldは何かを壊すはずです。なぜなら、インクルードには理由があるからですが、それが何であるかはまだわかりません。
同じフォルダにあるファイルls.c
を開き、display
関数で/* Only display dot file if -a/-A set. */
というコメントを探します。それとその下の状態を次のように置き換えます。
/* Only display dot file and file with hidden flag if -a/-A set. */
sp = cur->fts_statp;
if (((sp != NULL && (sp->st_flags & 0x8000)) || cur->fts_name[0] == '.') && !f_listdot) {
cur->fts_number = NO_PRINT;
continue;
}
押す Cmd-B 構築する。
左側(フォルダリストの最後)でProductsを選択し、ls
を右クリックします。 Finderに表示を選択します。
ls
実行可能ファイルを便利な場所に移動します。あなたのホームディレクトリ。次に、ターミナルを開いてSudo mv $HOME/ls /bin/ls
を実行するか、ホームディレクトリにbin
という名前の新しいフォルダを作成してそこに移動します。その後、そのフォルダをPATH
に追加します。
結果のテスト:
$ mkdir test
$ cd test
$ touch foo bar
$ chflags hidden bar
$ /bin/ls -lO
total 0
-rw-r--r--@ 1 danielbeck staff hidden 0 25 Okt 22:25 bar
-rw-r--r-- 1 danielbeck staff - 0 25 Okt 22:25 foo
$ $HOME/bin/ls -lO
total 0
-rw-r--r-- 1 danielbeck staff - 0 25 Okt 22:25 foo
$ $HOME/bin/ls -A
bar foo