Triết học về CLI app
Cli
3
posix
1
gnu
1
White

huydx viết ngày 04/08/2016

alt text

Mở đầu

CLI App là viết tắt của Command Line Interface App, tức là những app sử dụng trên terminal. Có lẽ những ai quen thuộc về hệ thống chạy trên unix sẽ quen thuộc với CLI hơn với những ai đang sử dụng window machine. Tác giả là unix user, thế nên bài viết sẽ dựa trên những khái niệm mà ít nhiều sẽ quen thuộc hơn với những ai đã và đang sử dụng unix.

Triết học về CLI app

Các built-in tool của unix như là top, find... đều có thể coi là các CLI app. Để tìm hiểu một app chạy thế nào thì thông thường bạn dùng câu lệnh man. Mình ví dụ kết quả từ man của câu lệnh top là câu lệnh để tìm hiểu các thông số liên quan đến hệ thống hay được dùng

top(1)                                                                   top(1)



NAME
       top - display and update sorted information about processes

SYNOPSIS
       top    [-a | -d | -e | -c <mode>]
              [-F | -f]
              [-h]
              [-i <interval>]
              [-l <samples>]
              [-ncols <columns>]
              [-o <key>] [-O <skey>]
              [-R | -r]
              [-S]
              [-s <delay>]
              [-n <nprocs>]
              [-stats <keys>]
              [-pid <processid>]
              [-user <username>]
              [-U <username>]
              [-u]

Thử với một vài các câu lệnh khác như là find hay là awk, các bạn có thể thấy một vài đặc điểm rất "đồng nhất" của CLI app đó là:

  • Chỉ tập trung vào một thứ duy nhất (thể hiện bằng việc usage bao giờ cũng rất ngắn gọn)
  • Có thể sử dụng một cách "trực quan" (không cần nhiều suy nghĩ từ user)
  • Có thể liên kết tốt với các CLI app khác (thông qua xuất output ra stdout để có thể pipe)
  • Setting các giá trị default một cách hợp lý
  • Có thể install một cách dễ dàng (thông qua binary)
  • Có thể "giúp đỡ" người dùng khi họ gõ các câu lệnh sai (thông qua help detail)

Các qui chuẩn

alt text

Tham khảo với ví dụ là câu lệnh grep ở trên bạn có thể thấy một CLI app thông thường có 3 phần

  • Executable : tên binary / executable file để chạy app
  • Options : Các option (optional) mà app có thể nhận
  • Arguments : Các giá trị chính không thể thiếu mà app phải xử lý

Options thông thường còn được gọi là flag. Chắc bạn nào đã sử dụng quen CLI app sẽ biết là không chỉ có một kiểu duy nhất, có thể có "2 gạch" (ví dụ: --x y), có thể có "1 gạch" (ví dụ -x y), có thể có 2 gạch và không có gía trị gì cả (ví dụ --). Bạn sẽ thấy băn khoăn và không hiểu là những cách viết đó đến từ đâu.

Có một qui chuẩn (hay chính xác hơn là các qui tắc được khuyến khích) từ GNU và POSIX qui định về "kiểu cách" và "ý nghĩa" của flag cho CLI app nằm tại :

Các qui chuẩn đó có thể tóm tắt gồm có

  • Argument là option (có thể có, có thể không) nếu bắt đầu bằng -
  • Nhiều option có thể gộp lại (ví dụ -abc sẽ tương đương với -a -b -c)
  • Option name nên là một chữ cái abc
  • Option và argument của option đó có thể nằm liền nhau (ví dụ -o foo-ofoo là một)
  • Sử dụng 2 dấu gạch ngang đứng riêng -- để dừng việc parse option lại. Tất cả các kí tự đứng sau -- ngay cả bắt đầu bằng dấu gạch ngang cũng không được coi là option
  • Option có thể theo bất kì thứ tự nào
  • Sử dụng 2 dấu gạch ngang cho cac option với tên dài (ví dụ --name=value)

Kết luận

Chắc một chút lý thuyết bên trên đã đủ để bạn viết một CLI app "tốt" cho riêng mình và cho cả người khác rồi chứ :D.

Happy hacking

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

huydx

116 bài viết.
963 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
153 14
Introduction (Link) là một cuộc thi ở Nhật, và cũng chỉ có riêng ở Nhật. Đây là một cuộc thi khá đặc trưng bởi sự thú vị của cách thi của nó, những...
huydx viết gần 2 năm trước
153 14
White
126 15
Happy programmer là gì nhỉ, chắc ai đọc xong title của bài post này cũng không hiểu ý mình định nói đến là gì :D. Đầu tiên với cá nhân mình thì hap...
huydx viết hơn 3 năm trước
126 15
White
98 10
(Ảnh) Mở đầu Chắc nhiều bạn đã nghe đến khái niệm oauth. Về cơ bản thì oauth là một phương thức chứng thực, mà nhờ đó một web service hay một ap...
huydx viết 3 năm trước
98 10
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
116 bài viết.
963 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!