2 điểm bởi GN⁺ 2024-06-24 | 2 bình luận | Chia sẻ qua WhatsApp

Cách tránh xung đột lệnh tự định nghĩa

Vấn đề

  • Có khả năng xảy ra xung đột tên giữa script shell tự định nghĩa và lệnh hệ thống
  • Đặc biệt, trên các hệ thống hỗ trợ rất nhiều lệnh như Debian, khả năng xung đột càng tăng

Giải pháp

  • Thêm dấu phẩy (,) vào trước các lệnh tự định nghĩa để phân biệt với lệnh hệ thống
  • Dấu phẩy không mang ý nghĩa đặc biệt trong tên tệp, nên có thể dùng an toàn

Ưu điểm

  • Dùng dấu phẩy giúp tránh xung đột lệnh
  • Có thể dễ dàng xem danh sách lệnh tự định nghĩa thông qua tính năng tab completion

Ví dụ

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

Ý kiến của GN⁺

  • Cách này có thể ngăn chặn hiệu quả xung đột giữa lệnh tự định nghĩa và lệnh hệ thống.
  • Việc dùng dấu phẩy là một giải pháp đơn giản nhưng mạnh mẽ, ngay cả kỹ sư mới vào nghề cũng có thể áp dụng dễ dàng.
  • Kỹ thuật này đặc biệt hữu ích trên các hệ thống sử dụng rất nhiều lệnh.
  • Một cách khác cũng có thể cân nhắc là thêm một tiền tố cụ thể trước lệnh.
  • Dùng phương pháp này có thể giúp việc quản lý lệnh trở nên có hệ thống và hiệu quả hơn.

2 bình luận

 
GN⁺ 2024-06-24
Ý kiến trên Hacker News
  • Cái tên comma_nds khá thú vị. Ý tưởng hay nên tôi định sẽ thử dùng.
  • Ban đầu tôi nghĩ chắc không hay lắm, nhưng đặc biệt thích phần dùng tab để liệt kê danh sách công cụ. Gần đây hầu như không có xung đột namespace.
  • Tên shell script ngắn gọn, súc tích nên có khả năng xung đột với lệnh hệ thống. Có thể giải quyết bằng cách đặt thư mục bin lên đầu $PATH.
  • Trong Vim, phím , cũng được dùng rất nhiều. Nó thường được dùng vì lý do tương tự.
  • Tôi chưa thực sự hiểu rõ vấn đề, nhưng ý tưởng tự động hoàn thành các lệnh của riêng mình thì rất hay.
  • Tôi dùng các lệnh tùy biến ngắn. Dù có xung đột với lệnh hệ thống cũng không sao. Khi xung đột thì đặt alias bằng tên khác.
  • Trên Windows có thể chạy script Python khá dễ, nhưng trên Linux thì khó hơn. Linux không có khái niệm chương trình liên kết nên khá bất tiện.
  • Có cách dùng tên file thực thi dài để tránh xung đột rồi đặt alias ngắn. Nhược điểm là tính năng hoàn thành bằng tab trở nên bất tiện.
  • Trong cộng đồng text expander/text replacement, kỹ thuật bắt đầu bằng dấu phẩy cũng khá phổ biến.
  • Trong ~/.local/bin có rất nhiều file thực thi mà tôi không nhớ nổi. Nếu tên script bắt đầu bằng dấu phẩy thì hẳn sẽ hữu ích hơn cho việc ghi nhớ.
 
kayws426 2024-06-24

Dùng '_' thì sao?