Câu hỏi này ( Làm cách nào tôi có thể xóa gnome khỏi bản cài đặt kubfox 12.04? ) Có các lệnh có dấu chấm hỏi:
sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?
Có ý nghĩa gì?
Câu hỏi này ( Làm cách nào tôi có thể xóa gnome khỏi bản cài đặt kubfox 12.04? ) Có các lệnh có dấu chấm hỏi:
sudo apt-get remove --purge ubuntu-desktop
sudo apt-get remove --purge unity?
sudo apt-get remove --purge gnome?
Có ý nghĩa gì?
Câu trả lời:
Chúng được gọi là Ký tự đại diện (mẫu hình cầu)
Ký tự đại diện chuẩn (còn được gọi là mẫu hình cầu) được sử dụng bởi các tiện ích dòng lệnh khác nhau để làm việc với nhiều tệp.
Ký tự đại diện chuẩn được sử dụng bởi gần như bất kỳ lệnh nào (bao gồm mv, cp, rm và nhiều lệnh khác).
(question mark)
điều này có thể đại diện cho bất kỳ nhân vật duy nhất. Nếu bạn đã chỉ định một cái gì đó tại dòng lệnh như "hd?" GNU / Linux sẽ tìm hda, hdb, hdc và mọi chữ cái / số khác giữa az, 0-9.
*(asterisk)
điều này có thể đại diện cho bất kỳ số lượng ký tự (bao gồm 0, nói cách khác, không hoặc nhiều ký tự). Nếu bạn đã chỉ định "cd *" thì nó sẽ sử dụng "cda", "cdrom", "cdrecord" và bất cứ thứ gì bắt đầu với siêu cd cd cũng bao gồm chính cd cd. "m * l" có thể bằng máy nghiền, mull, ml và bất cứ thứ gì bắt đầu bằng m và kết thúc bằng l.
[ ] (square brackets)
chỉ định một phạm vi. Nếu bạn đã làm m [a, o, u] m thì nó có thể trở thành: mam, mum, mẹ nếu bạn đã làm: m [ad] m nó có thể trở thành bất cứ thứ gì bắt đầu và kết thúc với m và có bất kỳ ký tự nào từ giữa. Ví dụ: những thứ này sẽ hoạt động: mam, mbm, mcm, mdm. Loại ký tự đại diện này chỉ định mối quan hệ của người dùng hoặc người dùng (bạn chỉ cần một mối quan hệ phù hợp).
{ } (curly brackets)
các thuật ngữ được phân tách bằng dấu phẩy và mỗi thuật ngữ phải là tên của một cái gì đó hoặc ký tự đại diện. Ký tự đại diện này sẽ sao chép bất cứ thứ gì khớp với (các) ký tự đại diện hoặc tên chính xác (một mối quan hệ (hoặc một mối quan hệ), một hoặc khác).
Ví dụ: điều này sẽ hợp lệ:
cp { .doc, .pdf} ~
Điều này sẽ sao chép mọi thứ kết thúc bằng .doc hoặc .pdf vào thư mục chính của người dùng. Lưu ý rằng không gian không được phép sau dấu phẩy (hoặc bất kỳ nơi nào khác).
[!]
Cấu trúc này tương tự như cấu trúc [], ngoại trừ thay vì khớp bất kỳ ký tự nào trong ngoặc, nó sẽ khớp với bất kỳ ký tự nào, miễn là nó không được liệt kê giữa [và]. Đây là một logic KHÔNG. Ví dụ: rm myfile [! 9] sẽ xóa tất cả các tệp myfiles * (ví dụ: myfiles1, myfiles2, v.v.) nhưng sẽ không xóa một tệp có số 9 ở bất kỳ đâu trong tên của nó.
\ (backslash)
được sử dụng như một nhân vật "thoát", tức là để bảo vệ một nhân vật đặc biệt tiếp theo. Do đó, "\ Tìm kiếm dấu gạch chéo ngược. Lưu ý bạn có thể cần sử dụng dấu ngoặc kép và dấu gạch chéo ngược (es).
để biết thêm ví dụ: truy cập trang này
Standard wildcards are used by nearly any command (including mv, cp, rm and many others).
=> SAI. các ký tự đại diện này đang được mở rộng bởi trình bao và những gì lệnh nhận được là kết quả của việc mở rộng (tức là các tệp khớp với mẫu) thay vì mẫu. (nếu không có bất kỳ tệp nào khớp với mẫu thì mẫu đó sẽ được chuyển trực tiếp tới lệnh)
Nói chung, trong Bash, a ?
là một mô hình toàn cầu mở rộng thành một ký tự tùy ý.
Ví dụ:
$ echo Hello1 > foo1
$ echo Hello2 > foo2
$ cat foo?
Hello1
Hello2
Nó gần giống với a *
, nhưng *
mở rộng thành 0 hoặc nhiều ký tự, trong khi đó ?
mở rộng thành chính xác một ký tự (tùy ý).
Trong trường hợp đặc biệt của bạn, ?
lệnh trong rõ ràng là một lỗi đánh máy.
apt-get
hiểu REs, nhưng nếu một tệp được gọi là gnome1
tồn tại trong thư mục hiện tại, shell sẽ mở rộng nó trước khi apt-get có bất kỳ cơ hội nhìn thấy nó.
apt-get remove
yêu cầu tên gói , không phải tên tệp, điều này làm cho việc mở rộng ký tự đại diện bằng vỏ phần lớn trở nên vô dụng. Nếu bạn muốn loại bỏ một loạt các gói bạn cần sử dụng một biểu thức chính quy đầy đủ, được trích dẫn một cách thích hợp để ngăn vỏ cố gắng diễn giải nó như một quả địa cầu (ví dụapt-get remove 'gnome.*'
).