Làm việc trên dòng lệnh Linux đòi hỏi phải học cách thực hiện nhanh một số tác vụ lặp đi lặp lại. Một trong những tác vụ mà bạn có thể thấy mình tham gia sớm hay muộn là chuyển đổi khoảng trống thành tab hoặc ngược lại. Trong hướng dẫn này, chúng ta sẽ thảo luận về một tiện ích dòng lệnh - được gọi là unexpand - sẽ rất hữu ích trong những tình huống như vậy.
Nhưng trước khi bắt đầu, 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 LTS.
Và đây là cách trang hướng dẫn mô tả lệnh:
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 unexpand hoạt động.
Ví dụ:
Công cụ tạo ra đầu ra đã chuyển đổi trên stdout. Vì vậy, để lưu đầu ra, bạn có thể chuyển hướng đầu ra đó đến một tệp nào đó. Ví dụ:
Cần đề cập rằng theo mặc định, công cụ này chỉ hoạt động trên các khoảng trắng ban đầu. Bạn có thể sử dụng tùy chọn -a để cho tiện ích biết rằng bạn muốn chuyển đổi tất cả các khoảng trắng/khoảng trắng thành tab.
Ví dụ: để công cụ nén các khoảng trắng thành các tab sau mỗi 3 vị trí, hãy sử dụng tùy chọn này theo cách sau:
Mặt khác, nếu tùy chọn này được cung cấp danh sách các số được phân tách bằng lệnh, công cụ sẽ đặt các điểm dừng tab tại các vị trí cụ thể đó.
Đây là những gì tôi đang nói đến:
Nhưng trước khi bắt đầu, 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 LTS.
Lệnh unexpand của Linux
Lệnh unexpand cho phép bạn chuyển đổi khoảng trắng thành tab. Sau đây là cú pháp của lệnh:
Mã:
unexpand [OPTION]... [FILE]...
Mã:
Chuyển đổi các khoảng trống trong mỗi FILE thành các tab, ghi vào đầu ra chuẩn. Nếu không có FILE hoặc khi FILE là -, hãy đọc đầu vào chuẩn.
Câu hỏi 1. Làm thế nào để sử dụng lệnh unexpand?
Giả sử bạn có một tệp có văn bản chứa các tab. Bây giờ, vì lý do nào đó, bạn chuyển đổi các tab đó thành khoảng trắng bằng lệnh expand, và bây giờ bạn muốn chuyển đổi khoảng trắng thành tab một lần nữa, thì trong trường hợp này, bạn có thể sử dụng lệnh unexpand.Ví dụ:
Mã:
unexpand file1
Mã:
unexpand file1 > file2
Câu 2. Làm thế nào để buộc unexpand chỉ chuyển đổi khoảng trắng đầu/đầu dòng?
Công cụ cung cấp tùy chọn buộc công cụ chỉ chuyển đổi khoảng trắng hoặc khoảng cách đầu dòng (kể cả khi có tùy chọn -a). Tùy chọn được đề cập là --first-only.
Mã:
unexpand --first-only -a file1 > file2
Câu hỏi 3. Tùy chọn -t có tác dụng gì?
Vâng, tùy chọn -t có nhiều vai trò. Nó chấp nhận một số duy nhất hoặc một danh sách các số được phân tách bằng dấu phẩy. Khi bạn truyền một số duy nhất (giả sử là 'n'), lệnh unexpand đảm bảo nén các khoảng trắng trong tệp thành các tab sau mỗi 'n' vị trí.Ví dụ: để công cụ nén các khoảng trắng thành các tab sau mỗi 3 vị trí, hãy sử dụng tùy chọn này theo cách sau:
Mã:
unexpand -t 3 file1 > file2
Mã:
unexpand -t 1,2,3 file1 > file2
Câu hỏi 4. Làm thế nào để unexpand đọc đầu vào từ STDIN?
Điều này khá dễ - chỉ cần chạy lệnh mà không có bất kỳ tên tệp nào làm đầu vào (sử dụng ctrl+D để báo cho tiện ích biết rằng bạn đã hoàn tất).Đây là những gì tôi đang nói đến:
Mã:
unexpand