Câu hỏi Tại sao Ubuntu Terminal không chấp nhận ký tự “\”?


Tôi không thể lấy vỏ thiết bị đầu cuối của mình để chấp nhận \ khi tôi gõ nó vào. Không có gì xảy ra. Tôi đã Googled nhưng chưa thấy bất cứ điều gì mà dường như địa chỉ này. Tôi không biết tôi sẽ bắt đầu gặp rắc rối khi quay ở đâu.

CHỈNH SỬA:

Tôi có thể sử dụng \ trong nhật thực, bất kỳ trình soạn thảo văn bản (bao gồm cả nano hoặc các công cụ dòng lệnh khác). Lệnh chính xác được đề cập là:

find -type f -exec chmod -x {} \;    

Nếu tôi sao chép và dán dòng đó vào, \ ký tự biến mất. Nếu tôi sau đó thử và gõ nó vào, không có gì xảy ra.

Nơi duy nhất này là một vấn đề là int ông thực tế dòng lệnh shell.

Cảm ơn.

CHỈNH SỬA HAI:

Dường như có một số nhầm lẫn. Nếu tôi sao chép lệnh trên vào dòng lệnh của tôi, KHÔNG PRESSING ENTER (I.E không thực hiện) Đây là những gì nằm trong shell của tôi:

$find -type f -exec chmod -x {} ;    

Nếu sau đó tôi thử và nhập \ để thoát khỏi ; biểu tượng không xuất hiện. Nếu tôi nhấn enter bất cứ lúc nào trong khi lệnh này đã được nhập trong các trường hợp trên, nó KHÔNG thực thi, do; không được truyền vào lệnh.

Chỉnh sửa 3:

Tôi đang sử dụng GNOME 3.4.1.1 trên Ubuntu 12.04 LTS


4
2017-09-09 16:51


gốc


Điều gì về bất kỳ trình soạn thảo văn bản? Nó hoạt động tốt ..? - Saurav Kumar
Chào mừng bạn đến với Hỏi Ubuntu! Chính xác thì ý bạn là gì "bạn không thể lấy thiết bị đầu cuối để chấp nhận \"? Bạn có ý gì bởi "không có gì xảy ra"? Chính xác thì lệnh bạn đang cố làm là gì? - Alaa Ali
Bạn đang nói rằng khi bạn nhấn phím \ nó không nhập ký tự? hoặc cái gì khác? Các cửa sổ khác có chấp nhận nhấn phím và hiển thị phím \ không? Làm các chương trình khác? - Thomas Ward♦
Thans, xem chỉnh sửa. - user2757729
Hiện nay! Điều đó làm cho một số ý nghĩa .. :) - Saurav Kumar


Các câu trả lời:


Một khả năng là phím backslash đã trở thành ràng buộc với một số lệnh readline (readline là thư viện cho phép chỉnh sửa các lệnh shell tại chỗ, ví dụ như ràng buộc Ctrl+h đến backward-delete-char hoạt động).

Để kiểm tra xem trường hợp đó có xảy ra hay không, bạn có thể thử bắt đầu một bash subshell với chỉnh sửa readline bị vô hiệu hóa

bash --noediting

Nếu phím backslash hoạt động trong subshell đó thì các địa điểm tìm kiếm định nghĩa keybinding rogue sẽ là /etc/inputrc cho cấu hình toàn cục và ~/.inputrc cho cấu hình cho mỗi người dùng. Bạn cũng có thể thử in ra và tìm kiếm các keybindings hiện đang được xác định từ dòng lệnh bằng cách sử dụng

bind -P | grep '\\\\'

Các dấu gạch chéo ngược phụ được yêu cầu vì dấu gạch chéo ngược chữ sẽ xuất hiện trong cấu hình readline \\, mỗi một trong số đó cần một lối thoát xa hơn trong vỏ. Rõ ràng bạn chỉ có thể làm điều đó trong subshell, nếu dấu gạch chéo ngược đang bị ràng buộc trong shell thông thường.

FYI có một bind tùy chọn lệnh để loại bỏ ràng buộc, nhưng không rõ cách nhập keyseq đối số khi nó đã bị ràng buộc

-r  keyseq         Remove the binding for KEYSEQ.

Để biết thêm thông tin, xem help bind trong dòng lệnh bash


3
2017-09-10 00:12





\ thoát khỏi bất cứ nhân vật nào theo sau nó. ; kết thúc một lệnh rõ ràng. \; có nghĩa là thoát khỏi ; và chuyển nó vào lệnh bạn đang gọi bên trong tìm (mọi thứ sau -exec. Với \ dấu chấm phẩy áp dụng cho chmod trong khi không có dấu chấm phẩy sẽ áp dụng cho find.

Thiết bị đầu cuối của bạn không nhận ra \. Khi bạn gõ nó vào thiết bị đầu cuối của bạn, bạn nói với thiết bị đầu cuối của bạn để thoát khỏi ký tự tiếp theo - mà bạn không cung cấp.

Nếu bạn muốn hiển thị \ như một ký tự, hãy thoát khỏi nó. Kiểu \\.


1
2017-09-09 18:01



Xin lỗi, tôi không nghĩ bạn hiểu. Nó không phải là tôi có thể nhập lệnh, và tất cả mọi thứ hoạt động. Nhân vật trốn thoát không bao giờ biến nó thành nhà ga. Xem vòng chỉnh sửa thứ hai. - user2757729
Ồ xin lỗi. Bạn đang sử dụng Gnome Terminal? - Jack
Tôi đang ở trên ubuntu 12.04, nội dung mặc định. Tôi nghĩ đó là Gnome? Làm thế nào tôi sẽ kiểm tra. - user2757729
Trong trình đơn, nhấp vào Trợ giúp -> Giới thiệu. - Jack
Đã thêm chi tiết đó vào quesiton dưới dạng chỉnh sửa 3. - user2757729


Không có ý tưởng nếu đó là nguyên nhân gốc rễ trong trường hợp của bạn nhưng tôi có thể tái tạo một hành vi tương tự bằng cách nhập lệnh này:

stty eof \\

Nó có thể được sửa chữa với:

stty sane

Bạn có thể muốn thử lệnh sau để xem điều đó có khắc phục được sự cố của bạn hay không.


0
2017-09-09 19:34



Cảm ơn, đã cho rằng một shot. Không may mắn. - user2757729


Tôi đang làm việc trên một "macbook Air" 2015, với "Parallels 11" và một máy ảo "Ubuntu". Bàn phím của tôi là "không dây" Apple không dây. Tôi đã chọn, "Tiếng Pháp Macintosh" (vì tôi là người Pháp ...!) Cho keybord trong MENU, nhưng trong Terminal của Ubuntu, ban đầu, tôi không thể thực hiện một "\" cũng không phải là một "|". Vì vậy, tôi đi đến "Paramètres Système", "Saisie de texte" ("gõ văn bản"?) Và nhấp vào nút "Paramètres du clavier" (Thông số bàn phím) ở góc dưới bên phải của cửa sổ. Trong cửa sổ mới thứ hai, tôi chọn "Saisie" ("Đánh máy"?) Và sau đó dòng "Touche de caractères alternatifs" ("khoá ký tự thay thế"?); bây giờ nhấp vào đầu bên phải của dòng đó, có thể tạo ra sự lựa chọn giữa nhiều phím đặc biệt ... Trong trường hợp của tôi, khóa NO đã được xác định ban đầu và tôi đã chọn "Alt Left" để mô phỏng hành động bình thường trong Mac OS X. Dài để giải thích, nhưng nhanh chóng và dễ dàng để làm! Guy de Pernon


0
2018-02-02 15:24