なんやかんやの検索に役立つ基本コマンド・テクニック
おはようございます、こんにちは、こんばんは。
スペースマーケットでWebエンジニアをしています、s0arです。
グラコロうまい
日頃の開発で覚えておくとはかどるコマンドやテクニックを書いていきます。
(随時更新予定です)
globパターン
正直これだけのためにこの記事を書いてるところはある。
でもこれだけだと3秒で読み終わる記事になるのでね。
ワイルドカードを組み合わせてパスのパターンを指定できます。
https://docs.oracle.com/ja-jp/iaas/Content/devops/using/glob-patterns.htm
git grepやVisual Studio Codeの検索で使うのが便利です。
詳しくはgit grepの項で書きます。
grep
だいぶ基本です。でもめっちゃ便利。
ぶっちゃけこれでこの記事終わっていいぐらいめっちゃ使う。
パイプでコマンドの結果に対してgrepをよく使います。
以下個人的によく使う使い方。
grep単体
自分は大体以下のオプションを指定して使います。
- r(サブディレクトリ内のファイルも含める)
- n(行番号を表示する)
❯ grep -rn grep articles
articles/64e66a8a5a9a45.md:26:git grepやVisual Studio Codeの検索で使うのが便利です。
articles/64e66a8a5a9a45.md:27:詳しくはgit grepの項で書きます。
articles/64e66a8a5a9a45.md:29:## grep
articles/64e66a8a5a9a45.md:33:パイプでコマンドの結果に対してgrepをよく使います。
articles/64e66a8a5a9a45.md:36:### grep単体
find
grep単体でも使えますが、findとの組み合わせが便利です。
以下は拡張子が.md
のファイルからfind
を含む行を検索しています。
❯ find . -name "*.md" | xargs grep -n find
./articles/64e66a8a5a9a45.md:52:### find
./articles/64e66a8a5a9a45.md:54:grep単体でも使えますが、findとの組み合わせが便利です。
history
コマンド実行履歴を検索。
自分はコマンド覚えるの苦手なので重宝します。
❯ history | grep git
1083 git add .
1084 git commit --amend
1085 git push --force-with-lease origin feature/20241223
1087 git status
1088 git fetch
1089 git reset --hard origin/main
1090 git switch -c 20241224-1
ps
プロセスの検索。
プロセス止めたり、プロセスが動いてるか確認するときに使います。
❯ ps aux | grep postman
s0ar 54602 0.0 0.0 410802608 2912 ?? S< 201124 0:00.09 /Applications/Postman.app/Contents/Frameworks/Squirrel.framework/Resources/ShipIt com.postmanlabs.mac.ShipIt /Users/s0ar/Library/Caches/com.postmanlabs.mac.ShipIt/ShipItState.plist
s0ar 536 0.0 0.0 410199728 1152 s001 R+ 8:55AM 0:00.00 grep postman
git grep
git管理されているファイルを検索できます。
git grepは前述のglobパターンとの組み合わせで強くなります。
オプションなし
❯ git grep "zenn"
README.md:* [📘 How to use](https://zenn.dev/zenn/articles/zenn-cli-guide)
articles/1f224ed381eece.md:![](https://storage.googleapis.com/zenn-user-upload/44951e6c5bf1-20221028.png =250x)
articles/4a6ceabcc5109c.md:https://zenn.dev/s0ar/scraps/52f5fc8e523f93
articles/4a6ceabcc5109c.md:https://zenn.dev/link/comments/d40a61bdfb3e1c
package-lock.json: "name": "zenn-articles",
package-lock.json: "name": "zenn-articles",
package-lock.json: "zenn-cli": "^0.1.158"
package-lock.json: "node_modules/zenn-cli": {
package-lock.json: "resolved": "https://registry.npmjs.org/zenn-cli/-/zenn-cli-0.1.158.tgz",
package-lock.json: "zenn": "dist/server/zenn.js"
package.json: "name": "zenn-articles",
package.json: "url": "git+https://github.com/s-0-a-r/zenn-articles.git"
package.json: "url": "https://github.com/s-0-a-r/zenn-articles/issues"
package.json: "homepage": "https://github.com/s-0-a-r/zenn-articles#readme",
package.json: "zenn-cli": "^0.1.158"
-i
オプション付き
大文字・小文字を区別せず検索します。
❯ git grep -i "zenn"
README.md:# Zenn CLI # これが検索に引っかかるようになる
README.md:* [📘 How to use](https://zenn.dev/zenn/articles/zenn-cli-guide)
articles/1f224ed381eece.md:![](https://storage.googleapis.com/zenn-user-upload/44951e6c5bf1-20221028.png =250x)
articles/4a6ceabcc5109c.md:https://zenn.dev/s0ar/scraps/52f5fc8e523f93
articles/4a6ceabcc5109c.md:https://zenn.dev/link/comments/d40a61bdfb3e1c
package-lock.json: "name": "zenn-articles",
package-lock.json: "name": "zenn-articles",
package-lock.json: "zenn-cli": "^0.1.158"
package-lock.json: "node_modules/zenn-cli": {
package-lock.json: "resolved": "https://registry.npmjs.org/zenn-cli/-/zenn-cli-0.1.158.tgz",
package-lock.json: "zenn": "dist/server/zenn.js"
package.json: "name": "zenn-articles",
package.json: "url": "git+https://github.com/s-0-a-r/zenn-articles.git"
package.json: "url": "https://github.com/s-0-a-r/zenn-articles/issues"
package.json: "homepage": "https://github.com/s-0-a-r/zenn-articles#readme",
package.json: "zenn-cli": "^0.1.158"
.mdファイルのみ
--
のあとにglobパターンを指定すると対象ファイルを指定できます。
❯ git grep -i zenn -- **/*.md
README.md:# Zenn CLI
README.md:* [📘 How to use](https://zenn.dev/zenn/articles/zenn-cli-guide)
articles/1f224ed381eece.md:![](https://storage.googleapis.com/zenn-user-upload/44951e6c5bf1-20221028.png =250x)
articles/4a6ceabcc5109c.md:https://zenn.dev/s0ar/scraps/52f5fc8e523f93
articles/4a6ceabcc5109c.md:https://zenn.dev/link/comments/d40a61bdfb3e1c
.mdファイルを除く
否定(!
)で除外できます。
❯ git grep -i zenn -- ':!*.md'
package-lock.json: "name": "zenn-articles",
package-lock.json: "name": "zenn-articles",
package-lock.json: "zenn-cli": "^0.1.158"
package-lock.json: "node_modules/zenn-cli": {
package-lock.json: "resolved": "https://registry.npmjs.org/zenn-cli/-/zenn-cli-0.1.158.tgz",
package-lock.json: "zenn": "dist/server/zenn.js"
package.json: "name": "zenn-articles",
package.json: "url": "git+https://github.com/s-0-a-r/zenn-articles.git"
package.json: "url": "https://github.com/s-0-a-r/zenn-articles/issues"
package.json: "homepage": "https://github.com/s-0-a-r/zenn-articles#readme",
package.json: "zenn-cli": "^0.1.158"
対象ファイルの拡張子を複数指定する
❯ git grep -i zenn -- **/*.{md,json}
README.md:# Zenn CLI
README.md:* [📘 How to use](https://zenn.dev/zenn/articles/zenn-cli-guide)
articles/1f224ed381eece.md:![](https://storage.googleapis.com/zenn-user-upload/44951e6c5bf1-20221028.png =250x)
articles/4a6ceabcc5109c.md:https://zenn.dev/s0ar/scraps/52f5fc8e523f93
articles/4a6ceabcc5109c.md:https://zenn.dev/link/comments/d40a61bdfb3e1c
package-lock.json: "name": "zenn-articles",
package-lock.json: "name": "zenn-articles",
package-lock.json: "zenn-cli": "^0.1.158"
package-lock.json: "node_modules/zenn-cli": {
package-lock.json: "resolved": "https://registry.npmjs.org/zenn-cli/-/zenn-cli-0.1.158.tgz",
package-lock.json: "zenn": "dist/server/zenn.js"
package.json: "name": "zenn-articles",
package.json: "url": "git+https://github.com/s-0-a-r/zenn-articles.git"
package.json: "url": "https://github.com/s-0-a-r/zenn-articles/issues"
package.json: "homepage": "https://github.com/s-0-a-r/zenn-articles#readme",
package.json: "zenn-cli": "^0.1.158"
まとめ
今回は諸々の検索に使えるコマンド・テクニックを簡単に紹介しました。
まずは本当に基礎的なものだけを挙げてみました。
思いついたら随時更新します。
スペースを簡単に貸し借りできるサービス「スペースマーケット」のエンジニアによる公式ブログです。 弊社採用技術スタックはこちら -> whatweuse.dev/company/spacemarket
Discussion