【zsh】realpathでファイルの絶対パスをクリップボードにコピーする
最近 realpath というコマンドを知りました。Claude にファイルを渡すときに絶対パスを書くのが面倒で、realpath と pbcopy の組み合わせに落ち着いた話です。
はじめに
こんにちは、とりかつ(@torikatsu923)です。
最近 realpath というコマンドを知りました。
きっかけは、Claude にメモやファイルを渡す機会が増えたことです。ファイルパスを全部書くのは面倒ですし、pwd | pbcopy でディレクトリをコピーしてからファイル名を書き足すのも億劫でした。
realpathの使い方
realpath と pbcopy を組み合わせます。
realpath <filename> | pbcopy
このコマンドでファイルの絶対パスがクリップボードにコピーされます。
pwdを使う場合との違い
realpath はファイル名を引数に取るので、pwd | pbcopy のあとにファイル名を書くのと変わらない、という指摘はありそうです。
ただ、zsh のファイル名のタブ補完が使えるので、タイプミスがなくなり、タイプ量も減ります。私はここが便利だと感じています。
realpathの挙動
macOS では /bin/realpath にあります。オプションは -q だけです。
以下は /Users/you/notes で実行した例です。# で始まる行が出力です。
which realpath
# /bin/realpath
相対パスは絶対パスに直され、./ や ../ も解決されます。
realpath docs/memo.md
# /Users/you/notes/docs/memo.md
realpath ./docs/../docs/memo.md
# /Users/you/notes/docs/memo.md
シンボリックリンクは、リンク先の実体のパスになります。次は link.md が docs/memo.md へのリンクの場合です。
realpath link.md
# /Users/you/notes/docs/memo.md
存在しないファイルを渡すとエラーになり、終了コードは 1 です。
realpath nothing.md
# realpath: nothing.md: No such file or directory
出力の末尾には改行が付き、pbcopy に渡すとクリップボードにも改行ごと入ります。取り除きたい場合は tr -d '\n' を挟みます。
realpath <filename> | tr -d '\n' | pbcopy