Laptop

Hướng dẫn 9 cách thực tế để sử dụng lệnh seq của Linux

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 1

Lệnh seq không chỉ là một máy in số đơn giản. Nó là một khối xây dựng cơ bản mà bạn có thể sử dụng để tạo tệp kiểm tra, kiểm soát vòng lặp, thực hiện quét mạng và chạy các phép tính toán học. Dưới đây là một số cách sử dụng lệnh seq phổ biến.

Xem thêm: Hướng dẫn cách đăng ký nhận bản cập nhật bảo mật mở rộng (ESU) miễn phí sau khi hỗ trợ Windows 10 kết thúc

1. Tạo số cơ bản

Về cơ bản, seq in ra các số theo một chuỗi. Bạn chỉ cần cung cấp cho nó một số duy nhất, và nó sẽ đếm từ 1 lên đến số đó. Ví dụ:

seq 5

Lệnh này in các số từ 1 đến 5. Đó là hình thức đơn giản nhất, nhưng điều kỳ diệu bắt đầu khi bạn điều chỉnh điểm bắt đầu, bước nhảy, định dạng, hoặc truyền đầu ra (pipe the output) sang các lệnh khác.

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 8

Ví dụ, nếu bạn muốn bắt đầu từ một số cụ thể, hãy cung cấp số bắt đầu làm đối số đầu tiên và số kết thúc làm đối số thứ hai.

seq 3 7

Lệnh này sẽ tạo ra các số từ 3 đến 7 (tức là 3, 4, 5, 6, 7).

Đôi khi, bạn cần bỏ qua một số số trong một chuỗi, chẳng hạn như chỉ tạo các số chẵn hoặc đếm theo bội số của năm. Đối số bước nhảy (increment), được đặt giữa giá trị bắt đầu và kết thúc, sẽ xử lý việc này. Ví dụ, để tạo các số lẻ từ 1 đến 10, hãy sử dụng bước nhảy là 2:

seq 1 2 10

Lệnh này yêu cầu seq bắt đầu tại 1, đi lên đến 10, nhưng thực hiện các bước nhảy là 2, tạo ra 1, 3, 5, 7, và 9.

Bạn cũng có thể đếm ngược. Để làm như vậy, hãy cung cấp giá trị bước nhảy âm như sau:

seq 10 -1 1

Lệnh này in các số từ 10 xuống 1 với bước nhảy là .

Tạo số thập phân

seq không chỉ giới hạn ở các số nguyên; nó xử lý các số thập phân (floating-point/decimal) dễ dàng không kém. Điều này hữu ích cho các tính toán khoa học hoặc khi làm việc với dữ liệu yêu cầu độ chính xác thập phân.

Ví dụ, để đếm từ 0.5 đến 2.0 với bước nhảy là 0.3, chạy:

seq 0.5 0.3 2.0

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 7

Và bạn sẽ nhận được một chuỗi các số thập phân với kích thước bước nhảy cụ thể.

Sử dụng dấu phân cách tùy chỉnh

Theo mặc định, seq tách biệt mỗi số bằng một ký tự xuống dòng (newline character). Cờ -s (separator) cho phép bạn xác định một dấu phân cách tùy chỉnh. Ví dụ, để tạo các số từ 1 đến 5 trên một dòng duy nhất được phân tách bằng dấu phẩy và một khoảng trắng, chạy:

seq -s ", " 1 5

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 6

Ngoài ra, bạn có thể truyền đầu ra (pipe the output) sang xargs để đặt tất cả các số trên một dòng duy nhất được phân tách bằng khoảng trắng. xargs đọc các mục từ đầu vào tiêu chuẩn và chuyển chúng thành đối số cho một lệnh khác (theo mặc định là echo).

seq 1 10 | xargs

2. Tạo chuỗi số được định dạng

Giả sử bạn muốn tạo các số từ 1 đến 10, nhưng bạn muốn tất cả chúng đều có hai chữ số với số 0 đứng đầu. Để đạt được điều này, bạn có thể sử dụng tùy chọn -f cùng với một bộ chỉ định định dạng như sau:

seq -f "%02g" 1 10

Trong đó, %g là định dạng số tiêu chuẩn, và 02 yêu cầu seq đệm số để có độ rộng 2 chữ số với các số không đứng đầu.

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 5

Đối với tác vụ phổ biến là chỉ cần đệm tất cả các số bằng số 0 đứng đầu để chúng có cùng độ rộng, seq cung cấp cờ -w (equal width) đơn giản hơn nhiều.

seq -w 1 100

Lệnh này đảm bảo tất cả các số đều có độ rộng bằng nhau bằng cách thêm số 0 đứng đầu, tạo ra 001, 002, và 099 đến 100.

Kiểu định dạng này cũng hoàn hảo để tạo các tệp được đệm số 0 sao cho chúng được sắp xếp đúng thứ tự. Bằng cách kết hợp seq với touchxargs, bạn có thể tạo nhiều tệp rỗng. Ví dụ, để tạo 5 tệp văn bản rỗng, được đệm số 0, chạy lệnh sau:

seq -f "text_%02g.txt" 1 5 | xargs touch

Sau khi chạy lệnh này, bạn sẽ có một danh sách các tệp (text_01.txt, text_02.txt, v.v.) sẽ luôn được sắp xếp theo đúng thứ tự số. Bạn cũng có thể tạo các tệp với tên dựa trên ngày:

seq -f "2025-03-%02g.txt" 1 31 | xargs touch

Vòng lặp này sẽ cung cấp cho bạn các tệp cho mọi ngày trong tháng 3 năm 2025.

3. Tạo tệp thử nghiệm với văn bản

Ngoài việc tạo số, bạn có thể sử dụng seq để tạo các tệp thử nghiệm với dữ liệu giả (dummy data). Chỉ cần kết hợp seq với tính năng truyền dữ liệu (piping) và chuyển hướng (redirection) cùng với vòng lặp for.

Ví dụ, để kiểm tra một script, bạn có thể cần các tệp giả với một số nội dung. Đoạn script này tạo ra năm tệp, mỗi tệp chứa một dòng văn bản cho biết số thứ tự của nó:

for i in $(seq 1 5); do
  echo "This is test file number $i" > testfile_$i.txt
done

Hơn nữa, tôi cũng khuyên bạn nên sử dụng tùy chọn -w (seq -w 1 5) để đệm số, giúp các tệp được sắp xếp gọn gàng.

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 4

Bạn cũng có thể tạo các tệp với nhiều dòng nội dung. Đoạn script sau tạo ra năm tệp, mỗi tệp chứa 100 dòng được đánh số duy nhất:

for i in $(seq 1 5); do
  for line in $(seq 1 100); do
    echo "File $i, Line $line: Some random content here"
  done > "file_$i.txt"
done

Ở đây, vòng lặp ngoài lặp qua các số từ 1 đến 5 cho tên tệp, trong khi vòng lặp trong tạo ra 100 dòng trên mỗi tệp, với đầu ra được chuyển hướng đến một tệp có tên dựa trên bộ đếm của vòng lặp ngoài.

4. Lặp lại lệnh một số lần cụ thể

Đôi khi bạn cần chạy một lệnh nhiều lần mà chỉ quan tâm đến sự lặp lại, không phải các con số thực tế. Ví dụ: bạn có thể đang kiểm tra độ trễ mạng vớiping hoặc chạy một script nhiều lần để kiểm tra lỗi. seq cung cấp một cách rõ ràng để thực hiện điều này mà không cần viết một vòng lặp for truyền thống.

Ví dụ, bạn có thể sử dụng seq với xargs để kiểm tra khả năng chịu tải của ứng dụng (stress-testing) hoặc kiểm tra xem một dịch vụ có khởi động đúng cách không.

seq 10 | xargs -I {} curl -s http://mywebsite.com > /dev/null

Lệnh này truy cập trang web mười lần, điều này có thể giúp bạn xác minh liệu máy chủ web của bạn có xử lý các yêu cầu đồng thời một cách chính xác hay không.

seq cũng kết hợp tuyệt vời với vòng lặp for để lặp lại các hành động. Để in “Hello, World!” năm lần, bạn có thể sử dụng:

for i in $(seq 1 5); do 
  echo "Hello, world!"; 
done

Lệnh này in thông báo năm lần.

5. Tạo dấu thời gian hoặc khoảng thời gian

Một trường hợp sử dụng tuyệt vời khác của seq là tạo ra một chuỗi các dấu thời gian (timestamps), đặc biệt khi xây dựng dữ liệu thử nghiệm hoặc mô phỏng nhật ký hệ thống (logs). Chúng có thể đại diện cho số giây, phút hoặc ngày.

Giả sử bạn cần một danh sách mọi khoảng thời gian 15 phút trong một giờ cho một báo cáo.

seq -f "%02g" 0 15 59

Lệnh này tạo ra 00, 15, 30 và 45.

Bạn cũng có thể tạo các dấu thời gian chính xác. Ví dụ này in một dấu thời gian cho mỗi phút trong 10 phút tiếp theo:

start=$(date +%s)
for i in $(seq 0 9); do
  echo "$(date -d "@$((start + i*60))" +"%Y-%m-%d %H:%M:%S")"
done

Script này in tất cả 10 dấu thời gian tương lai ngay lập tức. Nó không chờ đợi một phút giữa các lần xuất. Nếu bạn muốn một bộ đếm thời gian thực in một dòng mỗi phút, hãy thêm sleep 60 vào bên trong vòng lặp.

Để tạo dấu thời gian ở định dạng HH:MM cho cả một giờ, bạn có thể sử dụng một vòng lặp đơn giản:

for minute in $(seq -f "%02g" 0 59); do
  echo "14:$minute"
done

Lệnh này sẽ liệt kê 14:00, 14:01, cho đến 14:59. Đây là một cách mạnh mẽ để tạo dữ liệu chuỗi thời gian có cấu trúc ngay từ terminal của bạn.

6. Kiểm tra cổng khả dụng

Nếu bạn là quản trị viên hệ thống hoặc nhà phát triển, bạn cũng có thể sử dụng seq để quét một dải cổng và kiểm tra tính khả dụng của chúng. Ví dụ, bạn có thể cần triển khai một ứng dụng nhưng không chắc cổng nào còn trống. Hãy quét một dải cổng trên máy cục bộ của bạn để xem cổng nào đang mở.

Chúng ta có thể sử dụng seq để tạo số cổng và truyền chúng đến một tiện ích mạng như nc  (netcat) để kiểm tra kết nối.

for port in $(seq 8000 8010); do
  nc -z -v -w 1 localhost $port &> /dev/null && echo "Port $port is OPEN"
done

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 3

Dưới đây là giải thích chi tiết lệnh:

  • for port in $(seq 8000 8010): Lặp qua từng số cổng.
  • nc -z -v -w 1 localhost $port: Lệnh cốt lõi cố gắng tạo kết nối.
    • -z: Quét các dịch vụ đang lắng nghe mà không gửi dữ liệu.
    • -v: Cung cấp đầu ra chi tiết (mà chúng ta ẩn đi).
    • -w 1: Đặt thời gian chờ là 1 giây.
  • &> /dev/null: Chuyển hướng tất cả đầu ra từ nc để chúng ta chỉ thấy thông báo cuối cùng của mình.
  • && echo "Port $port is OPEN": Toán tử && đảm bảo lệnh echo chỉ chạy nếu lệnh nc thành công (tức là cổng đang mở).

Các phương pháp này đòi hỏi các đặc quyền và công cụ thích hợp. Hãy sử dụng chúng một cách có trách nhiệm và chỉ trên các hệ thống bạn sở hữu hoặc có quyền kiểm tra.

Ngoài ra, bạn có thể sử dụng một tính năng dành riêng cho Bash mà không cần nc:

for port in $(seq 8000 8100); do
  (echo > /dev/tcp/localhost/$port) &> /dev/null && echo "Port $port is open"
done

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 2

Đối với việc quét cổng nghiêm túc, bạn nên sử dụng các công cụ chuyên dụng như nmap, nhưng đối với các kiểm tra nhanh trong quá trình phát triển, phương pháp seq này hoạt động rất tốt.

7. Lặp qua các phạm vi trong Script

Mặc dù Bash có những cách riêng để tạo vòng lặp, việc sử dụng seq thường dễ di chuyển (portable) và dễ đọc hơn, đặc biệt đối với các phạm vi phức tạp hoặc số thập phân. Khi viết script, seq làm cho việc lặp lại trên các phạm vi số trở nên rõ ràng và sạch sẽ.

Ví dụ, để xử lý một loạt các mục giữa hai điểm, bạn có thể định nghĩa các biến STARTEND. Vòng lặp sẽ xử lý phần còn lại:

#!/bin/bash
START_ITEM=25
END_ITEM=75
echo "Starting to process items from $START_ITEM to $END_ITEM..."
for item_number in $(seq $START_ITEM $END_ITEM); do
  echo "Processing item #$item_number..."
  sleep 0.1 # simulate work
done
echo "All items processed!"

Script này dễ bảo trì, bạn chỉ cần thay đổi các biến ở trên cùng.

Ngoài ra, bạn có thể áp dụng ý tưởng tương tự cho các tình huống thực tế như xử lý dữ liệu hàng loạt. Ví dụ, bạn có thể kiểm tra mức sử dụng đĩa cho một loạt các thư mục được đánh số bằng cách sử dụng:

for i in $(seq 1 10); do
  du -sh /var/log/archive_$i 2>/dev/null
done

seq hỗ trợ đệm số, bạn có thể giữ mọi thứ được sắp xếp gọn gàng. Việc tạo các bản sao lưu hàng ngày cho cả tháng trở nên đơn giản với:

for day in $(seq -w 1 31); do
  tar -czf backup_2025-09-$day.tar.gz /data
done

Lệnh một dòng này tạo ra 31 kho lưu trữ nén với tên được định dạng chính xác (backup_2025-09-01.tar.gz, v.v.), điều này giúp việc sắp xếp và truy xuất dễ dàng hơn nhiều.

8. Chia tệp dựa trên số dòng

Nếu bạn cần chia một tệp lớn thành các phần nhỏ hơn, seq có thể giúp bạn tính toán phạm vi dòng cho mỗi phần. Mặc dù lệnh split được thiết kế cho việc này, việc sử dụng seq cung cấp kiểm soát chi tiết hơn đối với quy trình và đặt tên tệp.

Ví dụ, để chia bigfile thành các khối 100 dòng mỗi khối, chạy:

lines=$(wc -l < bigfile)
for start in $(seq 1 100 $lines); do
  end=$((start + 99))
  sed -n "${start},${end}p" bigfile > chunk_$(printf "%04d" $start).txt
done

Script này đầu tiên lấy tổng số dòng. Vòng lặp for sau đó sử dụng seq để tạo số dòng bắt đầu cho mỗi khối (1, 101, 201, v.v.). Bên trong vòng lặp, sed trích xuất khối dòng đó và lưu nó vào một tệp có tên duy nhất.

9. Thực hiện phép toán

seq là một công cụ hỗ trợ tuyệt vời cho các máy tính dòng lệnh như bcawk. Bạn có thể truyền một chuỗi các số trực tiếp vào một chương trình khác để thực hiện phép tính.

Để tính tổng tất cả các số từ 1 đến 100, sử dụng:

seq -s "+" 1 100 | bc

Ở đây, thay vì phân tách các số bằng ký tự xuống dòng, chúng ta đặt dấu + giữa chúng. Đầu ra là một chuỗi duy nhất được gửi làm đầu vào cho bc, chương trình này đánh giá biểu thức.

Với awk, bạn có thể đạt được kết quả tương tự:

seq 1 100 | awk '{s+=$1} END{print s}'

Huong dan 9 cach thuc te de su dung lenh seq cua Linux 1

Mô hình tạo, định dạng và tính toán này cực kỳ hữu ích cho việc phân tích dữ liệu nhanh chóng trên dòng lệnh.

Mặc dù seq có vẻ là một tiện ích nhỏ, nhưng nó giải quyết nhiều vấn đề lặp đi lặp lại nhỏ một cách thanh lịch. Nó kết hợp với các lệnh Linux khác để tạo ra các lệnh một dòng và script mạnh mẽ, làm cho nó trở thành một công cụ thiết yếu cho bất kỳ người dùng dòng lệnh nào.

10. Kết luận

Lệnh seq trong Linux là một công cụ nhỏ nhưng mạnh mẽ, và 9 cách sử dụng thực tế được hướng dẫn trong bài viết đã chứng minh khả năng linh hoạt của nó, từ tạo dãy số, tự động hóa script đến hỗ trợ các tác vụ lập trình và quản lý hệ thống. Với cú pháp đơn giản và ứng dụng đa dạng, seq giúp tiết kiệm thời gian và nâng cao hiệu quả cho cả người dùng mới lẫn chuyên gia Linux. Hy vọng bài viết này đã giúp bạn khám phá và làm chủ lệnh seq, sẵn sàng áp dụng vào các dự án Linux của mình để đạt hiệu suất tối ưu!

Xem thêm: Giữ bí mật an toàn với mẹo mã hóa tài liệu trên Google Drive cực đơn giản

Nếu bạn cần laptop hoặc PC cấu hình mạnh để lập trình và làm việc với Linux mượt mà, hoặc muốn nâng cấp setup với phụ kiện công nghệ chất lượng cao, hãy ghé qua COHOTECH – địa chỉ uy tín cung cấp thiết bị công nghệ và dịch vụ hỗ trợ kỹ thuật chuyên nghiệp. Đội ngũ COHOTECH cam kết mang đến giải pháp tối ưu và những ưu đãi hấp dẫn để bạn chinh phục mọi thử thách công nghệ. Theo dõi chúng tôi để khám phá thêm nhiều mẹo hay và sản phẩm độc quyền!

Bạn đã sử dụng lệnh seq trong Linux theo cách nào thú vị? Hãy chia sẻ kinh nghiệm hoặc đặt câu hỏi trong phần bình luận bên dưới nhé! Nếu bài viết này hữu ích, đừng quên like, share và lan tỏa đến bạn bè để cùng khám phá sức mạnh của Linux. Cảm ơn bạn đã đọc và hẹn gặp lại!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *