Học bằng cách đọc theo thứ tự

Xuất có định dạng — printf

Khác với echo, printf không tự thêm dòng mới ở cuối, nên bạn tự viết \n. Học cách chèn giá trị bằng %s/%d, căn cột bằng \t, và tạo tệp nhiều dòng — thực hành ngay trên terminal trong trình duyệt.

printf khác echo thế nào — Không tự xuống dòng

printf in văn bản giống như echo, nhưng khác với echo, nó không tự thêm một dòng mới ở cuối.

Bạn tự viết \n ở bất cứ chỗ nào cần ngắt dòng.

Vì bạn có thể dựng đầu ra đúng như mong muốn, nó cũng tiện để tạo các tệp nhiều dòng.

printf 'hello\n' in hello và một dòng mới.

Bỏ \n đi thì đầu ra tiếp theo sẽ nối tiếp trên cùng một dòng.

Viết printf 'a\nb\nc\n' > file thì bạn tạo trực tiếp một tệp 3 dòng.

echo và printf xử lý dòng mới thế nào
echo hellohello + dòng mới(tự động)printf 'hello\n'hello + dòng mới(\n rõ ràng)
echo tự thêm một dòng mới ở cuối; printf chỉ ngắt dòng tại nơi bạn viết \n.
echo hello                       # hello + dòng mới tự động
printf 'hello\n'                 # hello + dòng mới bạn tự viết
printf 'a\nb\nc\n' > letters.txt   # tạo một tệp 3 dòng
cat letters.txt                  # 3 dòng a / b / c
Cách viếtDòng mới ở cuốiKết quả
echo 'hi'Tự thêmhi + dòng mới
printf 'hi'Không thêmchỉ hi (không dòng mới)
printf 'hi\n'Không thêmhi + dòng mới vì bạn đã viết \n

① Tạo một tệp 3 dòng bằng printf 'a\nb\nc\n' > letters.txt.

② Xác nhận bằng cat letters.txt rằng a, b, c hiển thị trên 3 dòng.

③ Chạy printf 'no newline' và xác nhận không có dòng mới ở cuối, nên prompt tiếp theo nối tiếp trên cùng một dòng.

④ Chạy printf 'with newline\n' và xác nhận rằng viết \n thì có ngắt dòng. (Chạy đúng thì phần giải thích sẽ hiện ra.)

Linux console
0 / 4 đã hoàn thành
Loading Linux Terminal...

Chèn giá trị và căn cột — %s %d \t

Viết %s (chuỗi) hoặc %d (số nguyên) trong định dạng, thì các giá trị liệt kê sau đó được chèn vào những vị trí ấy.

printf 'name=%s\n' alice in name=alice.

Nó tốt hơn việc nối chuỗi đơn giản bằng echo khi cần đặt giá trị vào một khuôn cố định.

\t là một tab, dùng khi bạn muốn căn cột.

Định dạng được áp dụng lặp lại, một lần cho mỗi nhóm giá trị theo sau.

In tiêu đề và dữ liệu, mỗi cái theo định dạng phân tách bằng tab, như printf '%s\t%d\n' alice 30, thì các cột thẳng hàng.

Chèn bằng %s, căn cột bằng \t
alice vào %schèn một chuỗi(hi=alice)42 vào %dchèn một sốnguyên (42)%s \t %scăn cột bằngmột tab
%s chèn một chuỗi, %d một số nguyên, và \t căn cột bằng một tab.
printf 'name=%s\n' alice        # name=alice
printf '%s\t%s\n' name age      # tiêu đề, phân tách bằng tab
printf '%s\t%d\n' alice 30      # một dòng dữ liệu, đã căn cột
Ký hiệuÝ nghĩaVí dụ → đầu ra
%sChèn một chuỗiprintf '%s\n' hihi
%dChèn một số nguyênprintf '%d\n' 4242
\tTab (căn cột)printf 'a\tb\n'a + tab + b
\nDòng mớiprintf 'x\n'x + dòng mới

① Chạy printf 'name=%s\n' alice và xác nhận alice được chèn vào vị trí %s.

② Chạy printf '%s\t%s\n' name age và xác nhận \t xếp hai từ thẳng hàng, phân tách bằng tab.

③ Sau đó chạy printf '%s\t%d\n' alice 30 và xác nhận các cột tiêu đề và dữ liệu thẳng hàng.

Linux console
0 / 3 đã hoàn thành
Loading Linux Terminal...
QUIZ

Kiểm tra kiến thức

Hãy trả lời từng câu hỏi một.

Câu 1printf khác echo ở điểm nào?

Câu 2printf 'name=%s\n' alice in ra gì?

Câu 3\t biểu thị điều gì?