Đôi khi, bạn bắt gặp một công cụ dòng lệnh cung cấp chức năng hạn chế riêng lẻ, nhưng khi sử dụng với các công cụ khác, bạn nhận ra tiềm năng thực sự của nó. Một khi công cụ đó là seq, công cụ này in ra một chuỗi số. Trong hướng dẫn này, chúng ta sẽ thảo luận về những điều cơ bản của tiện ích dòng lệnh này bằng các ví dụ dễ hiểu.
Nhưng trước khi đi sâu vào vấn đề đó, cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 16.04.
Và đây là cách trang hướng dẫn của công cụ giải thích về nó:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh seq hoạt động.
Ví dụ:
Tất nhiên, bạn cũng có thể chỉ định số mà bạn muốn đầu ra bắt đầu.
Ví dụ:
Tiếp theo, bạn cũng có thể đặt chênh lệch gia tăng, theo mặc định là 1. Ví dụ: nếu bạn muốn seq in từ 1 đến 9, nhưng chênh lệch là 2, thì đây là cách bạn có thể thực hiện:
Ví dụ, lệnh sau đây có ý định sử dụng dấu phẩy (,) làm dấu phân cách:
Ví dụ, bạn có thể sử dụng tùy chọn này theo cách sau:
Đây là lệnh trên đang hoạt động:
touch $(seq -f "file%g" 1 10)
Nhưng trước khi đi sâu vào vấn đề đó, cần lưu ý rằng tất cả các ví dụ trong bài viết này đều đã được thử nghiệm trên máy Ubuntu 16.04.
Lệnh seq của Linux
Như đã đề cập, lệnh seq cho phép bạn in một chuỗi số. Sau đây là cú pháp của nó:
Mã:
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
Mã:
In các số từ FIRST đến LAST, theo các bước INCREMENT. Nếu FIRST hoặc
INCREMENT bị bỏ qua, mặc định là 1. Nghĩa là, một INCREMENT
bị bỏ qua sẽ mặc định là 1 ngay cả khi LAST nhỏ hơn FIRST.
Chuỗi số kết thúc khi tổng của số hiện tại và
INCREMENT sẽ lớn hơn LAST. FIRST, INCREMENT và LAST
được hiểu là các giá trị dấu phẩy động. INCREMENT thường là số dương nếu
FIRST nhỏ hơn LAST và INCREMENT thường là số âm nếu FIRST
lớn hơn LAST. FORMAT phải phù hợp để in một đối số?
kiểu 'double'; mặc định là %.PRECf nếu FIRST, INCREMENT và
LAST đều là số thập phân dấu phẩy cố định với độ chính xác tối đa PREC,
và là %g nếu không.
Câu hỏi 1. Lệnh seq hoạt động như thế nào?
Cách sử dụng cơ bản rất dễ. Tất cả những gì bạn phải làm là truyền một số cho seq và công cụ sẽ tạo ra các số đầu ra từ 1 đến số đầu vào.Ví dụ:
Mã:
seq 8
Tất nhiên, bạn cũng có thể chỉ định số mà bạn muốn đầu ra bắt đầu.
Ví dụ:
Mã:
seq 3 8
Tiếp theo, bạn cũng có thể đặt chênh lệch gia tăng, theo mặc định là 1. Ví dụ: nếu bạn muốn seq in từ 1 đến 9, nhưng chênh lệch là 2, thì đây là cách bạn có thể thực hiện:
Mã:
seq 1 2 9
Câu 2. Làm thế nào để thêm dấu phân cách?
Nếu muốn, bạn cũng có thể có dấu phân cách để làm cho đầu ra seq trông đẹp hơn. Tính năng này có sẵn thông qua tùy chọn dòng lệnh -s.Ví dụ, lệnh sau đây có ý định sử dụng dấu phẩy (,) làm dấu phân cách:
Mã:
seq -s, 1 9
Câu hỏi 3. Làm thế nào để chỉ định định dạng đầu ra?
Lệnh seq cho phép bạn sử dụng printf stylefloating-point FORMAT. Tính năng này có thể truy cập thông qua tùy chọn dòng lệnh -f. Trang hướng dẫn của công cụ không có nhiều thông tin về cách sử dụng tùy chọn này, nhưng trang thông tin có chứa các chi tiết cần thiết. Đây là những gì trang thông tin nói:
Mã:
`-f FORMAT'
`--format=FORMAT'
In tất cả các số bằng FORMAT. FORMAT phải chứa chính xác một
trong các thông số chuyển đổi dấu phẩy động theo kiểu `printf'
`%a', `%e', `%f', `%g', `%A', `%E', `%F', `%G'. `%' có thể được
theo sau bởi không hoặc nhiều cờ lấy từ tập hợp `-+#0 '', sau đó
một chiều rộng tùy chọn chứa một hoặc nhiều chữ số, sau đó là độ chính xác tùy chọn bao gồm `.' theo sau bởi không hoặc nhiều chữ số.
FORMAT cũng có thể chứa bất kỳ số lượng thông số chuyển đổi `%%' nào. Tất cả các thông số chuyển đổi đều có cùng một ý nghĩa như với `printf'.
Định dạng mặc định được bắt nguồn từ FIRST, STEP và LAST. Nếu
tất cả những lệnh này đều sử dụng biểu diễn thập phân dấu phẩy cố định, thì định dạng
mặc định là `%.Pf', trong đó P là độ chính xác tối thiểu có thể
biểu diễn chính xác các số đầu ra. Nếu không, thì định dạng
mặc định là `%g'.
Mã:
seq -f "%02g" 6
Câu hỏi 4. Làm thế nào để sử dụng seq với các lệnh khác? (Trường hợp sử dụng 1)
Giả sử bạn muốn thực hiện phép cộng một số số, chẳng hạn từ 111 đến 121. Sau đây là cách bạn có thể thực hiện việc này bằng cách sử dụng seq:
Mã:
expr `seq -s " + " 111 121`
Câu hỏi 5. Làm thế nào để sử dụng seq với các lệnh khác? (Trường hợp sử dụng 2)
Giả sử bạn muốn tạo một loạt các tệp mới có tên chỉ thay đổi giá trị số nguyên. Ví dụ: file1, file2, file3, v.v. Sau đây là cách bạn có thể thực hiện việc này bằng seq.touch $(seq -f "file%g" 1 10)