とことんDevOps | 日本仮想化技術のDevOps技術情報メディア

DevOpsに関連する技術情報を幅広く提供していきます。

日本仮想化技術がお届けする「とことんDevOps」では、DevOpsに関する技術情報や、日々のDevOps業務の中での検証結果、TipsなどDevOpsのお役立ち情報をお届けします。
主なテーマ: DevOps、CI/CD、コンテナ開発、IaCなど
読者登録と各種SNSのフォローもよろしくお願いいたします。

zshシェル環境でalias -sとsetoptを指定したら便利だった

普段使いのmacOS環境ではzshシェルを現在は常用しています。 使っているうちにこれはどうするんだろうと思っては調べて.zshrcに書いて設定を適用みたいに、zshrcを日々温めています。

最近追加して便利だった設定をご紹介しようと思います。

ファイルを指定して実行すると任意のテキストエディターでファイルを開く

仕事柄、macOSだろうがLinuxだろうがコマンドラインベースで作業することが多いです。 ファイルを開くときは通常、どのソフトウェアやコマンドで開くか指定して、その後に開きたいファイルを指定します。

例えばこんな感じですね。

cat /etc/os-release
less /var/log/audit/audit.log
firefox http://www.google.co.jp

基本的にめんどくさがりな性格なので、できる限りタイプ数を減らしたいって思ってしまいます。 そんな時に便利なのが、このようなエイリアスの設定です。

例えばこんな設定を行うと、指定した拡張子を持つファイルを任意のエディターで開いてくれます。

alias -s {md,markdown,txt}='vim'
alias -s {json,log}='cat'

これを~/.zshrcに書いてsource ~/.zshrcを実行したあとはその設定で操作できるようになります。 ちなみにaliasコマンドの実態は/usr/bin/aliasですが、実際はシェルのビルドインコマンドが使われるので、上記はzshでしか有効ではありません。

設定後に試すとこんな感じ。catを指定したファイルはcatで、vimを指定したファイルはvimで開かれます。emacs派の人はvimのところをemacsにすればにっこり。

% package.json
{}

% jmeter.log
2024-12-27 16:45:17,712 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2024-12-27 16:45:17,722 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
2024-12-27 16:45:17,724 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
2024-12-27 16:45:17,730 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2024-12-27 16:47:43,373 INFO o.a.j.s.FileServer: Default base='/Users/user'
2024-12-27 16:47:43,375 INFO o.a.j.s.FileServer: Set new base='/Users/user/working/jmeter/logs'

autocd

次はautocdという設定です。名前からなんとなく想像がつく通り、cdコマンドを指定せずにパスを指定すると、そのパスにchange directoryしてくれるという設定です。

~/.zshrcに書いてsource ~/.zshrcを実行したあと、設定が有効化されます。

setopt auto_cd

例えばこんな感じですかね。

% ~/Downloads 
% ls
Oracle_VirtualBox_Extension_Pack-7.1.4.vbox-extpack
VirtualBox-7.1.4-165100-OSX.dmg

ちなみにこの設定はbashでも使えるようで、.bashrcなどに次のように書いてsource .bashrcみたいに実行するだけで同じように使えるようです。その環境が自分専用なら/etc/bashrcとかに書けば良いかもしれませんね。

//設定前 
$ /var/log/
-bash: /var/log/: ディレクトリです

//設定後
$ /var/log/
cd -- /var/log/

autocdは便利なので、普段検証に使っているLinux環境に設定してもいいかもしれません。