Tôi lưu ý rằng câu trả lời đúng đã được đưa ra, nhưng tôi đang cố tóm tắt thành câu trả lời ngắn gọn hơn.
1. Không có gì để ngăn bạn không có các ký tự tab theo ngữ cảnh trong tài liệu tại đây.
Để nhập một tab chữ vào lời nhắc Bash, bạn cần phải thoát khỏi nó. Ký tự thoát là ctrl-V (trừ khi bạn có các ràng buộc tùy chỉnh để ghi đè điều này).
$ echo -n 't<ctrl-v><tab>ab' | hexdump -C
00000000 74 09 61 62 |t.ab|
00000004
Trong hầu hết các biên tập viên của bất kỳ lập trình viên, nó phải là tầm thường để chèn một ký tự tab chữ (mặc dù một số biên tập viên có thể muốn thoát, quá. Trong Emacs, ctrl-Q TAB chèn một tab đen).
Để rõ ràng, có thể tốt hơn nên sử dụng loại thoát nào đó thay vì ký tự tab theo nghĩa đen. Trong Bash, cú pháp chuỗi $ '...' thuận tiện cho việc này.
2. Để ngăn việc mở rộng biến, báo giá tất cả các ký hiệu đô la hoặc đặt dấu kết thúc tài liệu tại đây trong dấu ngoặc kép.
$ hexdump -C <<HERE
> t<ctrl-v><tab>\$ab
HERE
00000000 74 09 24 61 62 0a |t.$ab.|
00000006
$ hexdump -C <<'HERE'
> t<ctrl-v><tab>$ab
HERE
00000000 74 09 24 61 62 0a |t.$ab.|
00000006
Trong bối cảnh này, việc bạn sử dụng dấu ngoặc đơn hoặc dấu ngoặc kép không quan trọng.
3. Tôi không chắc mình hiểu được câu hỏi con này. Mục đích của tài liệu ở đây là nhúng nó vào một tập lệnh. Ví dụ trước minh họa cách chuyển một tài liệu ở đây sang hexdump trong một kịch bản lệnh hoặc tại dòng lệnh.
Nếu bạn muốn sử dụng cùng một tài liệu ở đây nhiều lần, không có cách nào đơn giản để làm điều đó trực tiếp. Tập lệnh có thể viết một tài liệu ở đây vào một tệp tạm thời, sau đó chuyển tệp tạm thời đó cho nhiều lệnh, sau đó xóa tệp tạm thời. (Hãy cẩn thận sử dụng trap
để xóa tệp tạm thời cũng trong trường hợp tập lệnh bị gián đoạn.)
Bạn cũng có thể đặt nội dung của tài liệu này vào biến và nội suy đó.
# Note embedded newlines inside the single quotes,
# and the use of $'...\t...' to encode tabs
data=$'coffee\t$1.50
tea\t$1.50
burger\t$5.00'
# Run Word Count on the data using a here document
wc <<HERE
$data
HERE
# Count number of tab characters using another here document with the same data
grep -c $'\t' <<HERE
$data
HERE
Bạn tương đương có thể sử dụng echo -E "$data" | wc; echo -E "$data" | grep -c $'\t'
nhưng sử dụng tiếng vang không phải là rất thanh lịch và có thể ít di động (mặc dù nếu mục tiêu của bạn là bash, tất cả echos nên giống nhau. Nếu mục tiêu của bạn là Bourne shell nói chung, có lẽ bạn cũng dành một quá trình bên ngoài cho mỗi tiếng vang).
trang web này cũng thú vị: http: //tldp.org/LDP/abs/h tml/abs-guide.html # GENERATESCRIPT –