Là dấu tick và hay tiếng gay của giọng nói, ký tự (không phải `) được sử dụng cho bất cứ thứ gì trong Linux shell?


11

Chúng tôi biết rằng ký tự backtick được sử dụng để thay thế lệnh :

chown `id -u` /mydir

Điều này làm tôi tự hỏi: là ký tự đánh dấu ´được sử dụng cho bất cứ thứ gì trong shell Linux?


Lưu ý: tình cờ, thay thế lệnh cũng có thể được viết dễ đọc hơn như
chown $(id -u) /mydir


3
Tôi đã không chắc chắn về tên, nhưng tôi nghĩ chỉ ´được gọi là giọng cấp tính khi được sử dụng như một dấu phụ (và ngược lại, `được gọi là trọng âm ). Khi được sử dụng một mình, vì cái sau là một backtick , có vẻ như tự nhiên cái trước được gọi là đánh dấu hoặc đánh dấu chuyển tiếp (xin vui lòng không gọi nó là backtick ngược ). Tôi đã sửa đổi câu hỏi tiêu đề để bao gồm ghi chú của bạn.
dr_

1
đủ công bằng. Tôi đã xóa bình luận.
Stéphane Chazelas

1
@ dr01 Có thể đáng để đặt tiêu đề giống như "(không phải`) "để giúp đỡ với sự nhầm lẫn.
Thuyền trưởng Man

Một ký tự trông tương tự, dấu nháy đơn ( ', ASCII 39, U + 0027) có ý nghĩa trong nhiều hệ vỏ Unix (ví dụ: vỏ Bourne /bin/sh) và vỏ Linux (ví dụ /bin/bash). Nó ngăn chặn các từ chia tách và tất cả các mở rộng. Vì vậy, ls '$foo [bar]'trả về một lỗi trừ khi có một tệp có tên $foo [bar]trong thư mục hiện tại. Nó tương đương với ls "\$foo [bar]"ls \$foo\ \[bar\].
pts

1
Có nhiều ký tự trông giống nhau trong Unicode, xem cl.cam.ac.uk/~mgk25/ucs/quotes.html để biết danh sách không đầy đủ và xem en.wikipedia.org/wiki/Prime_(symbol) để biết thêm các biểu tượng . Trong số tất cả các, chỉ có các ký tự ASCII ( ', ", `) có ý nghĩa đặc biệt trong vỏ Unix.
pts

Câu trả lời:


28

Các bộ ký tự được sử dụng trong lịch sử với Unix, bao gồm ASCII , không có ký tự đánh dấu, vì vậy nó không được sử dụng. Theo như tôi biết thì không có cách sử dụng chung nào cho nhân vật đó đã được giới thiệu kể từ khi nó trở nên có sẵn; cũng như không, vì nó không được bao gồm trong bộ ký tự di động của POSIX .

`ban đầu rõ ràng được bao gồm trong ASCII (cùng với ^ và ~) để phục vụ như là một dấu phụ. Khi ASCII được xác định, dấu nháy đơn thường được biểu thị bằng glyph kiểu ((Prime Prime, như được sử dụng trong vài phút hoặc phút) chứ không phải là dấu nháy đơn 'và cũng được sử dụng như một dấu cấp tính phụ.

Trong lịch sử, trong tài liệu shell Unix, `được gọi là một trọng âm , không phải là một backtick. Việc thiếu dấu tích phía trước sẽ không làm nhướn mày, đặc biệt là vì 'được sử dụng làm ký tự bổ sung (xem roffcú pháp).


5
"Có lẽ là không được coi là đủ phổ biến để cắt giảm (mặc dù nó được sử dụng rộng rãi trong các ngôn ngữ không phải của Mỹ)." Touché.
dr_

6
Các ký tự bên ngoài bộ ký tự di động POSIX (một tập hợp con của ASCII) sẽ không được sử dụng theo cú pháp của shell, vì mã hóa của chúng thường khác nhau giữa các địa phương (và có thể không được tìm thấy trong một số bao gồm cả ngôn ngữ C). Ví dụ, trên một hệ thống GNU, ´là 0xB4 trong một miền địa phương fr_FR.iso88591, 0xC2 0xB4 trong một fr_FR.UTF-8 và không tồn tại trong locale C.
Stéphane Chazelas

@ StéphaneChazelas Những gì bạn nói vẫn đúng ngay cả khi fr_FRđược thay thế bằng bất kỳ ngôn ngữ nào khác. Mã hóa của ký tự là một thuộc tính của mã hóa (ISO-8859-1 hoặc UTF-8).
kasperd

2
@kasperd, vâng, tôi không có ý ám chỉ rằng ngôn ngữ đã tạo ra sự khác biệt. Sự lựa chọn fr_FRlà tùy ý, nó chỉ xảy ra tôi có các địa điểm như vậy trên hệ thống của tôi. Tất nhiên nó sẽ giống với en_GB.UTF-8...
Stéphane Chazelas

12

Mặc dù ủy ban ASCII nghĩ rằng 'như một dấu phụ và' như một dấu nháy đơn, nhưng truyền thống Unix là coi chúng như các trích dẫn đơn trái và phải (các ký tự hiện có trong Unicode là U + 2018 và U + 2019). Điều này là rõ ràng nhất từ ​​quy ước TeX mà bạn viết `` văn bản được trích dẫn '' trong nguồn đánh dấu và bạn nhận được văn bản trích dẫn văn bản tả trong tài liệu được định dạng. Điều này cũng có thể được nhìn thấy trong các phông chữ đơn cách cũ hơn, chẳng hạn như các phông chữ bitmap được gửi cùng với X11R5 và X11R6, trong đó hai ký tự được cung cấp glyphs hình ảnh phản chiếu.

Như vậy, `và 'được coi là nghịch đảo của nhau, và ọ không cảm thấy bị thiếu.


3
À đúng rồi, tôi nhớ cú pháp LaTeX đó!
dr_

1
@ dr01: Điều này đột nhiên có ý nghĩa khi bạn phát hiện ra một số phông chữ cũ có chúng là gương của nhau.
Joshua

2
'đã được định nghĩa rõ ràng trong ASCII là APOSTROPHE, RIGHT SINGLE QUOTATION Mark, ACUTE_ACCENT bởi ANSI, nó không chỉ là một thứ Unix. Không có dấu ngoặc đơn bên phải nào khác trong ASCII.
Stéphane Chazelas

2
@Joshua: Việc thay đổi phông chữ đã nói là vấn đề gây tranh cãi / phản ứng dữ dội lớn khi nó xảy ra (có thể là cuối thập niên 90 hoặc ngay sau năm 2000). Đó không chỉ là phông chữ xterm, mà tất cả các phông chữ bitmap X11 tiêu chuẩn, bao gồm bitmap Times / Helvetica / vv. được sử dụng trong các trình duyệt và các ứng dụng khác với phông chữ theo tỷ lệ.
R .. GitHub DỪNG GIÚP ICE

1
Không đủ phản ứng dữ dội để ngăn chặn nó không may! Những người ủng hộ Unicode chạy xung quanh nói với mọi người rằng dấu nháy đơn ASCII là một đường thẳng đứng, mâu thuẫn trực tiếp với glyph mẫu trong tiêu chuẩn ASCII thực tế ... và bây giờ hầu như mọi phông chữ đều có thứ ngu ngốc đó ở vị trí 0x27 thay vì dấu nháy đơn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.