はじめに
ln
がリンクを貼る為のコマンドというのは多くの方がご存知と思いますが、特にCLIに馴染みが薄い方はあまり使いこなせていないように感じています。今回は、ln
の挙動や使い方ではなく、私のよくやる活用法を幾らか紹介します。何となくln
を使うイメージができると幸いです。
WSL2でWindows側のdirにリンクを貼る
$ ln -s /mnt/c/Users/username/Documents ~/Documents
これでWindows側のDocumentsにWSL側のホームディレクトリから簡単にアクセスできるようになります。勿論DownloadsやVideosに対しても同じ事ができます。Windowsを使うときは基本的にWSL2上での作業なので助かってます。wget
等を使ってwindows側に大量にファイルを落としてくることもできます。
fishの設定ファイルをホームディレクトリに置く
$ ln -s ~/.config/fish/config.fish ~/.fish
fishをメインで使っていてよく弄るのでvim ~/.fish
で編集できると嬉しいです。alias
を設定しても良いのですが、個人的にはこっちを採用することが多いです。
gitでdotfilesを管理し、リンクを貼る
$ ln -s ~/dotfiles_repo/.vimrc ~/.vimrc
$ ln -s ~/dotfiles_repo/.bashrc ~/.bashrc
stow
使う人もいるかもしれません。
スクリプトのコマンド化
$ ln -s ~/project/run.sh /usr/local/bin/myscript
$ myscript
スクリプトを何処からでもコマンドとして名前だけで叩けるようになります。シェルスクリプトでなくても実行可能ファイルなら何でも良いです。かなり頻度は高め。
ROS2のバージョンを変える
# .bashrc
source ~/ros2_current.bash
$ ln -sf /opt/ros/humble/setup.bash ~/ros2_current.bash # to humble
$ ln -sf /opt/ros/jazzy/setup.bash ~/ros2_current.bash # to jazzy
書き換えないのでgitで同じ.bashrc
を管理できるのが良いですね。
パラメータを読む用のYAML切り替え
$ ln -sf config/robotA.yaml config/current.yaml
$ ln -sf config/robotB.yaml config/current.yaml
なんだかんだよく叩くのでJustfile
やシェルスクリプトからすぐ切り替えられるようにしてます。
ログ無効化
$ ln -snf /dev/null ~/ros_ws/log
普通やりません。
おわりに
systemd-timer
で日ごと、一定時間ごとにシェルスクリプト走らせてニュースか何か取ってきたり、ログとか記録してDesktopにリンク置いとくとか、ありかなって思いました。発想次第で色々できると思います。