OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

rm: loại bỏ thư mục `lưu trữ '? y

Chúng ta sẽ thảo luận về cách đặt tùy chọn này làm mặc định trong Chương 7, thảo luận về việc tùy chỉnh môi trường shell của bạn.


hình ảnh


3.3.3. Tìm tệp


3.3.3.1. Sử dụng các tính năng của shell


Trong ví dụ về di chuyển tệp, chúng ta đã thấy cách trình bao có thể thao tác nhiều tệp cùng một lúc. Trong ví dụ đó, shell tự động tìm ra ý của người dùng bằng các yêu cầu giữa dấu ngoặc vuông "[" và "]". Shell có thể thay thế các dải số và ký tự viết hoa hoặc viết thường như nhau. Nó cũng thay thế bao nhiêu ký tự tùy thích bằng dấu hoa thị và chỉ một ký tự bằng dấu chấm hỏi.


Tất cả các loại thay thế có thể được sử dụng đồng thời; vỏ rất hợp lý về nó. Ví dụ, Bash shell không có vấn đề gì với các biểu thức như ls dirname / * / * / * [2-3].


Trong các trình bao khác, dấu hoa thị thường được sử dụng để giảm thiểu nỗ lực nhập: mọi người sẽ nhập cd dir * thay vì cd thư mục. Tuy nhiên, trong Bash, điều này là không cần thiết vì trình bao GNU có một tính năng được gọi là hoàn thành tên tệp. Nó có nghĩa là bạn có thể nhập một vài ký tự đầu tiên của lệnh (ở bất kỳ đâu) hoặc tệp (trong thư mục hiện tại) và nếu không có sự nhầm lẫn nào có thể xảy ra, trình bao sẽ tìm ra ý bạn muốn nói. Ví dụ


trong một thư mục chứa nhiều tệp, bạn có thể kiểm tra xem có tệp nào bắt đầu bằng chữ A hay không chỉ bằng cách gõ ls A và nhấn nút Tab phím hai lần, thay vì nhấn đăng ký hạng mục thi. Nếu chỉ có một tệp bắt đầu bằng "A", tệp này sẽ được hiển thị dưới dạng đối số cho ls (hoặc bất kỳ lệnh shell nào, cho vấn đề đó) ngay lập tức.


hình ảnh

3.3.3.2. Cái nào


Một cách rất đơn giản để tra cứu tệp là sử dụng cái nào , để tìm tệp được yêu cầu trong các thư mục được liệt kê trong đường dẫn tìm kiếm của người dùng. Tất nhiên, vì đường dẫn tìm kiếm chỉ chứa các đường dẫn đến các thư mục chứa các chương trình thực thi, cái nào không hoạt động đối với các tệp thông thường. Các cái nào lệnh rất hữu ích khi khắc phục sự cố "Không tìm thấy lệnh". Trong ví dụ dưới đây, người dùng tina không thể sử dụng acroread trong khi đồng nghiệp của cô ấy không gặp rắc rối nào trên cùng một hệ thống. Vấn đề tương tự như PATH vấn đề ở phần trước: Đồng nghiệp của Tina nói với cô ấy rằng anh ấy có thể xem chương trình được yêu cầu trong

/ opt / acroread / bin, nhưng thư mục này không có trong đường dẫn của cô ấy:


tina: ~> viết tắt nào

/ usr / bin / which: no acroread in (/ bin: / usr / bin: / usr / bin / X11)

tina: ~> viết tắt nào

/ usr / bin / which: no acroread in (/ bin: / usr / bin: / usr / bin / X11)

Vấn đề có thể được giải quyết bằng cách cung cấp đường dẫn đầy đủ cho lệnh để chạy hoặc bằng cách xuất lại nội dung của

Biến PATH:


tina: ~> xuất PATH = $ PATH: / opt / acroread / bin


tina: ~> echo $ PATH

/ bin: / usr / bin: / usr / bin / X11: / opt / acroread / bin

tina: ~> xuất PATH = $ PATH: / opt / acroread / bin


tina: ~> echo $ PATH

/ bin: / usr / bin: / usr / bin / X11: / opt / acroread / bin

Sử dụng cái nào lệnh cũng kiểm tra xem một lệnh có phải là bí danh cho một lệnh khác hay không:


chuột nhảy: ~> cái nào -a ls

ls được đặt bí danh là `ls -F --color = auto 'ls là / bin / ls

chuột nhảy: ~> cái nào -a ls

ls được đặt bí danh là `ls -F --color = auto 'ls là / bin / ls

Nếu điều này không hoạt động trên hệ thống của bạn, hãy sử dụng bí danh chỉ huy:


tille @ www: ~ / mail $ bí danh ls

bí danh ls = 'ls --color'

tille @ www: ~ / mail $ bí danh ls

bí danh ls = 'ls --color'


hình ảnh


3.3.3.3. Tìm và xác định vị trí


Đây là những công cụ thực sự, được sử dụng khi tìm kiếm các đường dẫn khác bên cạnh những đường dẫn được liệt kê trong đường dẫn tìm kiếm. Các tìm , được biết đến từ UNIX, rất mạnh mẽ, có thể là nguyên nhân của một cú pháp hơi khó hơn. GNU tìmtuy nhiên, giải quyết các vấn đề về cú pháp. Lệnh này không chỉ cho phép bạn tìm kiếm tên tệp mà còn có thể chấp nhận kích thước tệp, ngày thay đổi lần cuối và các thuộc tính tệp khác làm tiêu chí tìm kiếm. Việc sử dụng phổ biến nhất là để tìm tên tệp:


tìm -Tên


Điều này có thể được hiểu là "Tìm trong tất cả các tệp và thư mục con chứa trong một đường dẫn nhất định, và in tên các tệp chứa chuỗi tìm kiếm trong tên của chúng" (không có trong nội dung của chúng).


Một ứng dụng khác của tìm là để tìm kiếm các tệp có kích thước nhất định, như trong ví dụ bên dưới, nơi người dùng peter

muốn tìm tất cả các tệp trong thư mục hiện tại hoặc một trong các thư mục con của nó, lớn hơn 5 MB:


peter: ~> tìm thấy . -kích thước + 5000k

Psychotic_chaos.mp3

peter: ~> tìm thấy . -kích thước + 5000k

Psychotic_chaos.mp3


Nếu bạn tìm hiểu các trang người đàn ông, bạn sẽ thấy rằng tìm cũng có thể thực hiện các hoạt động trên các tệp được tìm thấy. Một ví dụ phổ biến là xóa tệp. Tốt nhất là thử nghiệm đầu tiên mà không có -Exec tùy chọn rằng các tệp chính xác được chọn, sau đó lệnh có thể được chạy lại để xóa các tệp đã chọn. Dưới đây, chúng tôi tìm kiếm các tệp kết thúc bằng .tmp:


peter: ~> tìm thấy . -name "* .tmp" -exec rm {} \;


peter: ~>

peter: ~> tìm thấy . -name "* .tmp" -exec rm {} \;


peter: ~>


hình ảnhTối ưu hóa!

Lệnh này sẽ gọi rm bao nhiêu lần khi một tệp trả lời các yêu cầu được tìm thấy. Trong trường hợp xấu nhất, điều này có thể là hàng nghìn hoặc hàng triệu lần. Đây là một tải khá nặng trên hệ thống của bạn.


Một cách làm việc thực tế hơn sẽ là sử dụng một đường ống (|) và xargs công cụ với rm như một lập luận. Theo cách này, rm lệnh chỉ được gọi khi dòng lệnh đầy, thay vì cho mọi tệp. Xem Chương 5 để biết thêm về cách sử dụng chuyển hướng I / O để dễ dàng thực hiện các công việc hàng ngày.

Sau đó (vào năm 1999 theo trang man, sau 20 năm tìm), xác định vị trí đã được phát triển. Chương trình này dễ sử dụng hơn, nhưng bị hạn chế hơn tìm, vì đầu ra của nó dựa trên cơ sở dữ liệu chỉ mục tệp chỉ được cập nhật một lần mỗi ngày. Mặt khác, tìm kiếm trong xác định vị trí cơ sở dữ liệu sử dụng ít tài nguyên hơn tìm và do đó hiển thị kết quả gần như ngay lập tức.


Hầu hết các bản phân phối Linux đều sử dụng định vị ngày nay, tính năng định vị được tăng cường bảo mật, phiên bản hiện đại của xác định vị trí điều đó ngăn người dùng nhận được đầu ra mà họ không có quyền đọc. Các tệp trong nguồn gốcthư mục chính của là một ví dụ như vậy, chúng thường không thể truy cập được đối với công chúng. Người dùng muốn tìm ai đó biết về C shell có thể ra lệnh xác định vị trí .cshrc, để hiển thị tất cả người dùng có tệp cấu hình tùy chỉnh cho C shell. Giả sử người dùng nguồn gốc xe cần trục đang chạy C shell, sau đó chỉ có tệp

/home/jenny/.cshrc sẽ được hiển thị, và không phải là một trong nguồn gốcthư mục chính của. Trên hầu hết các hệ thống,

định vị là một liên kết tượng trưng đến chương trình slocate:


billy: ~> ls -l / usr / bin / định vị

lrwxrwxrwx 1 root slocate 7 tháng 28 14 18:XNUMX / usr / bin / location -> slocate *

billy: ~> ls -l / usr / bin / định vị

lrwxrwxrwx 1 root slocate 7 tháng 28 14 18:XNUMX / usr / bin / location -> slocate *

người sử dang tina có thể đã sử dụng xác định vị trí để tìm ứng dụng cô ấy muốn:


tina: ~> xác định vị trí acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/ usr / local / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / bin / acroread

tina: ~> xác định vị trí acroread

/usr/share/icons/hicolor/16x16/apps/acroread.png

/usr/share/icons/hicolor/32x32/apps/acroread.png

/usr/share/icons/locolor/16x16/apps/acroread.png

/usr/share/icons/locolor/32x32/apps/acroread.png

/ usr / local / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / bin / acroread

Thư mục không chứa tên bin không thể chứa chương trình - chúng không chứa các tệp thực thi. Có ba khả năng còn lại. Tệp trong / usr / local / bin là người tina sẽ muốn: nó là một liên kết đến tập lệnh shell khởi động chương trình thực tế:


tina: ~> file / usr / local / bin / acroread

/ usr / local / bin / acroread: liên kết tượng trưng tới ../Acrobat4/bin/acroread


tina: ~> file / usr / local / Acrobat4 / bin / acroread

/ usr / local / Acrobat4 / bin / acroread: Bourne shell script text thi hành được


tina: ~> file / usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread: ELF 32-bit LSB thực thi, Intel 80386, phiên bản 1, được liên kết động (sử dụng

tina: ~> file / usr / local / bin / acroread

/ usr / local / bin / acroread: liên kết tượng trưng tới ../Acrobat4/bin/acroread


tina: ~> file / usr / local / Acrobat4 / bin / acroread

/ usr / local / Acrobat4 / bin / acroread: Bourne shell script text thi hành được


tina: ~> file / usr / local / Acrobat4 / Reader / intellinux / bin / acroread

/ usr / local / Acrobat4 / Reader / intellinux / bin / acroread: ELF 32-bit LSB thực thi, Intel 80386, phiên bản 1, được liên kết động (sử dụng


chia sẻ lib), không tước Để giữ cho đường dẫn càng ngắn càng tốt, để hệ thống không phải tìm kiếm quá lâu mỗi khi người dùng muốn thực hiện một lệnh, chúng tôi thêm / usr / local / bin đến đường dẫn chứ không phải các thư mục khác,

chỉ chứa các tệp nhị phân của một chương trình cụ thể, trong khi / usr / local / bin chứa hữu ích khác

các chương trình.


Một lần nữa, mô tả về các tính năng đầy đủ của tìm xác định vị trí có thể được tìm thấy trong các trang Thông tin.


hình ảnh

3.3.3.4. Lệnh grep


3.3.3.4.1. Lọc dòng chung


Một chương trình đơn giản nhưng mạnh mẽ, grep được sử dụng để lọc các dòng đầu vào và trả về các mẫu nhất định cho đầu ra. Thực sự có hàng nghìn ứng dụng cho grep chương trình. Trong ví dụ dưới đây, jerry sử dụng grep để xem anh ấy đã làm điều đó như thế nào với tìm:


jerry: ~> grep -a tìm .bash_history

tìm thấy . -name userinfo man find

tìm ../ -name common.cfg

jerry: ~> grep -a tìm .bash_history

tìm thấy . -name userinfo man find

tìm ../ -name common.cfg


hình ảnhLịch sử tìm kiếm

Cũng hữu ích trong những trường hợp này là chức năng tìm kiếm trong bash, được kích hoạt bằng cách nhấn Ctrl+R ngay lập tức, chẳng hạn như trong ví dụ mà chúng tôi muốn kiểm tra cách chúng tôi đã làm điều đó lần trước tìm lần nữa:


thomas ~> ^R

(ngược-i-search) `find ': find` / home / thomas` -name * .xml

thomas ~> ^R

(ngược-i-search) `find ': find` / home / thomas` -name * .xml

Nhập chuỗi tìm kiếm của bạn tại dấu nhắc tìm kiếm. Bạn nhập càng nhiều ký tự, tìm kiếm càng bị hạn chế. Điều này đọc lịch sử lệnh cho phiên trình bao này (được viết cho

.bash_history trong thư mục chính của bạn khi bạn thoát khỏi phiên đó). Lần xuất hiện gần đây nhất của chuỗi tìm kiếm của bạn được hiển thị. Nếu bạn muốn xem các lệnh trước đó chứa cùng một chuỗi, hãy nhập Ctrl+R một lần nữa.


Xem các trang Thông tin trên bash để biết thêm.

Tất cả các UNIX chỉ cần chỉnh sửa một chút đều có từ điển trực tuyến. Linux cũng vậy. Từ điển là danh sách các từ đã biết trong một tệp có tên từ, nằm ở / usr / share / dict. Để nhanh chóng kiểm tra chính tả chính xác của một từ, không cần ứng dụng đồ họa:


william: ~> grep pinguin / usr / share / dict / words


william: ~> grep penguin / usr / share / dict / words

chim cánh cụt chim cánh cụt

william: ~> grep pinguin / usr / share / dict / words


william: ~> grep penguin / usr / share / dict / words

chim cánh cụt chim cánh cụt


hình ảnhTừ điển so với danh sách từ

Một số bản phân phối cung cấp mệnh lệnh lệnh, cung cấp nhiều tính năng hơn là chỉ đơn giản là tìm kiếm các từ trong danh sách.

Ai là chủ sở hữu của thư mục chính bên cạnh tôi? Này, có số điện thoại của anh ấy!


lisa: ~> grep gdbruyne / etc / passwd

gdbruyne: x: 981: 981: Guy Debruyne, tel 203234: / home / gdbruyne: / bin / bash

lisa: ~> grep gdbruyne / etc / passwd

gdbruyne: x: 981: 981: Guy Debruyne, tel 203234: / home / gdbruyne: / bin / bash


Và địa chỉ E-mail của Arno một lần nữa là gì?


serge: ~ / mail> grep -i arno *

thư đã gửi: Đến:[email được bảo vệ]>

thư đã gửi: Thứ Hai, ngày 24 tháng 2001 năm XNUMX, [email được bảo vệ] đã viết:

serge: ~ / mail> grep -i arno *

thư đã gửi: Đến:[email được bảo vệ]>

thư đã gửi: Thứ Hai, ngày 24 tháng 2001 năm XNUMX, [email được bảo vệ] đã viết:

tìm và định vị thường được sử dụng kết hợp với grep để xác định một số truy vấn nghiêm trọng. Để biết thêm thông tin, hãy xem Chương 5 về chuyển hướng I / O.


hình ảnh

3.3.3.4.2. Ký tự đặc biệt


Các ký tự có ý nghĩa đặc biệt đối với lớp vỏ phải là trốn thoát. Ký tự thoát trong Bash là dấu gạch chéo ngược, như trong hầu hết các shell; điều này làm mất đi ý nghĩa đặc biệt của ký tự sau đây. Shell biết về một số ký tự đặc biệt, trong số các ký tự phổ biến nhất /,.,? và *. Danh sách đầy đủ có thể được tìm thấy trong các trang Thông tin và tài liệu cho trình bao của bạn.


Ví dụ: giả sử bạn muốn hiển thị tệp "*" thay vì tất cả các tệp trong một thư mục, bạn sẽ phải sử dụng


ít \*


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: