20210308のMacに関する記事は4件です。

.DS_storeファイルの個別削除

.DS_storeファイルとは

Mac特有で、GitHubにcommitした拍子なんかに自動で生成される嬉しくないファイル。
メタデータを記録する不可視ファイルなので、要は不要なファイルです。

削除方法をググると親の仇ばりに、蛇蝎の如く嫌われている印象を感じます。
前述の自動生成、一回消しても再度誕生するなど、嫌われる理由に枚挙に暇がありません。

.DS_storeファイルは複数生成される事もあり、まとめて削除する方法は結構見つかります。
存在している全ての.DS_storeファイルの確認と削除ならば下記コマンドで処理が行えます。

.DS_store確認コマンド

$ find . -name ".DS_Store" #確認コマンド

.DS_store一括削除コマンド

$ find . -name ".DS_Store" | xargs rm #まとめて削除コマンド

削除に関する参考記事
[macOS][小ネタ] すべての.DS_Storeをコマンド一発で削除する

全部まとめてじゃなく個別に削除したい

自分の場合は、既にGitにcommitしており、作業ブランチで.DS_storeファイルまとめて削除してしまうと、自身のタスクと関係ない.DS_storeファイルまで削除される事がネックでした。必要のない変更点が出来る事が問題で、まとめて削除コマンドは使えませんでした。

自分にはappディレクトリ直下、及び隠しファイルの2箇所に.DS_storeファイルが生成されていました。その為、appディレクトリ直下の.DS_storeファイルの削除は容易でした。単純にターミナルでcdコマンドでappディレクトリへ移動し、前述の削除コマンドでappディレクトリ直下だけの.DS_storeファイルだけを狙い撃ちしました。

が、問題なのは隠しファイルの方。
普通にlsコマンドを叩いても出てこないので、何処に消すべきファイルが居るのか分かりませんでした。

そこで使用したのが、

$ sudo ls

でした。

このコマンドを使ってMacに設定しているパスワードを入力すれば、隠しファイルも表示されます。そうして通常のrmコマンドでファイル名を指定する事で個別の削除が出来ます。

削除に関する参考記事2
Macのターミナルコマンド一覧(基本編)

基本的には.DS_storeファイルは不要なので、まとめて削除してしまうのが一番早いです。
しかし、何らかの理由で全部消えては困る、部分的に削除したい場合に参考になれば幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Mac版】MySQLインストール方法

ミックさんの書籍「ゼロから始めるデータベース操作」を学習するにあたり、この本ではWindowsでPostgreSQLをインストールして読み進めるように書かれていますが、MacでMySQLをインストールして読み進めたかったので方法を記事にします。
51MqhDGZFlL._SX260_.jpg

1. Homebrewのインストール

「Homebrew」を用いてMySQLをインストールするため、以下のコマンドでインストールされているか確認。

brew -v

Homebrew 3.0.4のように表示された場合はインストールされているため、「2. MySQLのインストール」に進んで下さい。
brew: command not foundと表示された場合はHomebrewがインストールされていないので、この後の手順にしたがってインストールをしましょう。

インストール

以下のコマンドを実行

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

インストールの途中で「Enterキー」を押すことを求められますので、その際はEnterを押す。
途中でPCにログインする時に使用しているパスワードの入力も求められるので、入力後Enter。(この際入力文字は何も表示されませんが入力できています)

brew -v

再度このコマンドで確認します。
Homebrew 3.0.4のように表示されたらOK。

2. MySQLのインストール

今回はバージョン5.7をインストールします。

brew install mysql@5.7

以下のように表示されたら成功。

mysql@5.7 is keg-only, which means it was not symlinked into /usr/local,
because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH, run:
  echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql@5.7 you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql@5.7/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql@5.7/include"

For pkg-config to find mysql@5.7 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig"


To have launchd start mysql@5.7 now and restart at login:
  brew services start mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysql.server start
==> Summary
?  /usr/local/Cellar/mysql@5.7/5.7.32: 319 files, 234.4MB
==> Caveats

表示されている画面から、
If you need to have mysql@5.7 first in your PATH, run:
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

となっている部分を探し、echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrcの部分をコピーしておく。~/.zshrcの部分は人によって表示が異なります。

3. パスの設定

MySQLを使用可能にするためにパスを通します。
先程コピーした内容をターミナルで実行。

echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

設定を反映させるために以下を実行。

source ~/.zshrc

最後にパスが正しく設定されたかを確認。

mysql --version

mysql Ver 14.14 Distrib 5.7.32, for osx10.15 (x86_64) using EditLine wrapperのように表示されればOK。

4. パスワードの設定

MySQLを起動。

brew services start mysql@5.7

パスワード設定

mysql_secure_installation

実行すると以下のように表示されるが今回はEnterでスキップ。

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: 

次に以下のように表示されるので任意のパスワードを入力。

Please set the password for root here.

New password: 

Re-enter new password: #New passwordと同様のパスワードを入力

この後にいくつか質問されますが全てEnterでスキップ。
最後にAll done!と表示されれば完了です。

5. MySQLにログイン

MySQLの起動

brew services start mysql@5.7

ログイン

mysql --user=root --password

パスワードを求められるので設定したパスワードを入力してEnter。
mysql>と表示されれば成功。

ログアウト

「ctrl + D」でログアウトできます。

MySQLの停止

brew services stop mysql@5.7

さいごに

以上です!ありがとうございました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

通知が来たときにMacのアプリのアイコンがバウンドするのを防ぐ方法

defaults write com.apple.dock no-bouncing -bool TRUE
killall Dock

この二つのコマンドをTerminalから実行すると、通知が来てもMacのアプリがバウンドしなくなります

1つ目のコマンドでアプリのアイコンがバウンドする設定を無効化し、
2つ目のコマンドでDockを再起動させて変更を反映させます

参考
https://www.macworld.com/article/1138403/dockbounce.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac の Automator で「親フォルダ名_連番」の一括リネームを行う

はじめに

iMac 2011 mid がトラブルに見舞われ M1 mini を購入し、とうとう Sandy おじさんを卒業する事となったが、前準備なく 32bit アプリケーション難民となったため代替アプリ探しに四苦八苦していた。

高機能リネームソフト Shupapan もそのひとつで、ある程度は Path Finder 付属のリネーム機能で代用できたが、親フォルダ名を使ったリネームは Path Finder には無かった。(サイト製作時、パーツ毎に連番画像を作る際などに便利)
Shupapan 代替として紹介されているいくつかのアプリはその機能を備えていたが、残念ながら動作など今ひとつしっくり来るものが無かった。

そこで macOS 標準の自動化機能作成アプリ Automator である。

こんな仕上がり

  • リネームしたいファイルの入ったフォルダを選択してコンテクストメニューから実行
  • 複数のフォルダに対する同時実行が可能
  • フォルダの入れ子には非対応(入れ子フォルダの中は無視される)
  • プレビューやアンドゥなど気の利いた機能は無いので、慎重に扱うファイルは複製後の実行を推奨
  • 数十程度なら問題無いが、フォルダ・ファイル数が増えると重いのであくまで簡易的なもの

Automator で製作する

Automator の基本的な解説は図解入りの分かりやすいページが多く存在しているので省略。
複数のフォルダを選択した際の動作のために2段階で処理を行う形となる。
設定やスクリーンショットは ver.2.10 (509) のもの。

コア部分:リネーム処理本体

新規書類で「ワークフロー」を下記の通り作成して保存する。
ここで作成したものを次で呼び出す。

  • シェルスクリプトの内容は basename "$1"
  • 各変数はテキスト形式
  • 「Finder項目を並べ替える」や「Finder項目の名前を変更」のオプション「ワークフローの実行時にこのアクションを表示」をオンにするとリネーム時にダイアログが表示されるので、作成の古いものから連番にする、今回は数値を4桁揃えにするなど、その都度調整可能な汎用型を作る事もできる
  • リネーム対象を限定したい場合は「Finder項目を並べ替える」の前に「Finder項目にフィルタを適用」を追加してフィルタリングを行う 1

am_001.png

実行部分:先程のワークフローをバッチで実行

こちらがコンテクストメニューの表示名になるので、分かりやすい名前をつける。
新規書類で「クイックアクション」を下記の通り作成して保存する。
なおクイックアクションは /Users/ユーザ名/Library(隠しフォルダ)/Services/ に保存される。

  • Path Finder など標準以外のファイルブラウザを利用している場合は、検索対象を「すべてのアプリケーション」または自分が利用しているファイルブラウザにしないとコンテクストメニューに表示されないので注意。

am_002.png

「使用するワークフロー数」について

この数値は複数のフォルダに対して実行した際の「リネーム処理の『初回』同時実行数」となる。
内部処理を追った訳ではなく挙動を観察した上での推測となるが、複数実行の場合「親フォルダ名の収集や並び替え等の前処理 → 各フォルダ内のファイルを実際にリネーム」の順番で処理が行われていると思われる。
そして後者のリネーム処理は「まずワークフロー数と同じ数のフォルダ内のファイルを一気にリネーム、それ以降は1フォルダづつリネーム」という流れになるようだ。
超過分は1つづつの処理となるため16にしているが、同時実行の予定があまり無いなら小さくても構わないと思う。

Automator メモ

製作中に気づいたことのメモ。
Automator を触るのは今回がほぼ初めてで、触った感じこれっぽい的な内容なので勘違いなどあるかも。ver. 2.10 (509) における話で、バージョンによって挙動が違う可能性もあるので注意。

  • Finder でファイルを選択した状態でサービスメニューを起動した場合、Automator はそのファイルのパスを取得した状態から処理を開始する。
  • そのため、最初に「選択された Finder項目を取得」を置く必要はない。
  • 同様にパス取得のために何か処理を行う必要はなく「変数の値を設定」「クリップボードにコピー」などで、そのままパスを取り出す事ができる。2
  • Automator は最初に取得したパスを対象に処理を行うため、それを変更した場合は対象項目を再指定する必要がある。3
  • 対象項目の再指定は「選択されたFinder項目を取得」で可能 4 で、ひとつのワークフローで処理が完結するならその方法で問題ないが、今回のように別のフローから呼び出してバッチ処理させた場合は挙動がおかしくなるため「パスを変数へ格納 → その変数を呼び出す」形式で対象項目を再指定する必要がある。

おまけ:同階層のファイルを「定型_連番」にリネーム

同じフォルダ内のファイルを定型連番にリネームしたい場合に。
選択したファイルではなく、同階層のファイル・フォルダを全てリネームするので注意。
新規書類で「クイックアクション」を下記のように作成して保存する。

  • シェルスクリプトの内容は dirname "$1"
  • リネーム対象を限定したい場合は「Finder項目を並べ替える」の前に「Finder項目にフィルタを適用」を追加してフィルタリングを行う 1

am_003.png


  1. フィルタリングには Spotlight 情報を利用するため、リネームしたいファイルが「システム環境設定 > Sporlight > プライバシー」に登録されている場所にある場合はリネームを実行できないので注意。 

  2. 例えば「クリップボードにコピー」を1つ置くだけで選択項目のパスをコピーするサービスメニューを作る事ができる。 

  3. 今回の場合シェルスクリプトでパスをファイル名に変換した時点で Automator は現在位置を見失う形となる。これに気づかずしばらくハマった。 

  4. ただし Path Finder など macOS 標準以外のファイルブラウザの場合、この方法では再指定する事はできない。 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む