2 ポイント 投稿者 GN⁺ 2024-06-24 | 2件のコメント | WhatsAppで共有

ユーザー定義コマンドの衝突を防ぐ方法

問題点

  • ユーザー定義のシェルスクリプトとシステムコマンドの間で名前が衝突する可能性
  • 特に Debian のように多くのコマンドを備えたシステムでは衝突の可能性が高まる

解決策

  • ユーザー定義コマンドの先頭にカンマ (,) を付けてシステムコマンドと区別する
  • カンマはファイル名の中で特別な意味を持たないため、安全に使える

利点

  • カンマを使うことでコマンドの衝突を防げる
  • タブ補完機能によってユーザー定義コマンドの一覧を簡単に確認できる

$ ,«tab»
,complete-scp    ,go-thpgp      ,range
,complete-ssh    ,gr            ,svn-store-password
,coreoff         ,hss           ,umount
,coreon          ,mount-thpgp   ,find
,mount-twt

GN⁺の意見

  • この方法は、ユーザー定義コマンドとシステムコマンドの衝突を効果的に防げる。
  • カンマを使うのはシンプルでありながら強力な解決策で、初級エンジニアでも簡単に導入できる。
  • この手法は、特に多くのコマンドを使うシステムで有用である。
  • 別の方法として、コマンドの前に特定の接頭辞を付けることも検討できる。
  • この方法を使えば、コマンド管理をより体系的かつ効率的に行える。

2件のコメント

 
GN⁺ 2024-06-24
Hacker Newsのコメント
  • comma_nds という名前が面白い。良いアイデアなので使ってみようと思う。
  • 最初はいまいちだと思ったが、特にタブでツール一覧を列挙する部分が気に入った。最近は名前空間の衝突もほとんどない。
  • シェルスクリプト名が短く簡潔なので、システムコマンドと衝突する可能性があった。$PATH の先頭に bin ディレクトリを置けば解決できる。
  • Vim でも , キーはよく使われる。同じような理由で頻繁に使われている。
  • 問題をあまりよく理解できなかったが、自分のコマンドを自動補完するというアイデアは良い。
  • 短いカスタムコマンドを使っている。システムコマンドと衝突しても気にしない。衝突したら別名でエイリアスを設定する。
  • Windows では Python スクリプトを簡単に実行できるが、Linux では難しい。Linux には関連付けプログラムの概念がないので不便だ。
  • 衝突を避けるために長い実行ファイル名を使い、短い別名を設定する方法がある。欠点はタブ補完が不便なこと。
  • テキストエキスパンダー/テキスト置換コミュニティでも、カンマで始める技法は一般的だ。
  • ~/.local/bin に覚えていない実行ファイルがたくさんあった。カンマで始まるスクリプト名は記憶を助けるのに役立っただろう。
 
kayws426 2024-06-24

'_' を使うのはどうでしょうか?