/ Dev / null là gì và nó có thể giúp gì cho bạn?

Nếu chúng ta đã có một số khái niệm về cây thư mục GNU / Linux, ít nhất chúng ta nên quen thuộc với / dev / tham chiếu, đây là nơi thực sự có tất cả các tệp liên quan đến thiêt bị ổ cưng.

Nếu chúng ta tìm trong danh bạ / Dev / chúng ta sẽ thấy một "tệp" có tên vô giá trị, nhưng nếu chúng tôi muốn mở nó để xem nội dung của nó, hệ thống sẽ cho chúng tôi biết rằng điều đó là không thể vì nó không phải là nội dung thông thường. Tôi đã đính kèm tệp word bởi vì, như các bạn đã biết đối với Linux, mọi thứ (phần cứng và phần mềm) đều được biểu diễn dưới dạng tệp.

Đây là đóng góp của Daniel Durante, do đó trở thành một trong những người chiến thắng trong cuộc thi hàng tuần của chúng tôi: «Chia sẻ những gì bạn biết về Linux«. Xin chúc mừng Daniel!

/ Dev / null tương ứng với thiết bị nào?

Đối với các mục đích thực tế, hãy tưởng tượng một thùng rác, một cái hố không đáy hoặc không gian bên ngoài để ném bất cứ thứ gì vào đó mà không có khả năng thu hồi nó (bất kể những người từ NASA cố gắng thế nào).

Nhưng nếu tôi đã có các lệnh như rm, tại sao tôi muốn một cái gì đó mới mà tôi xóa?

Bởi vì cách thức hoạt động của cả hai "lỗ đen" là hoàn toàn khác nhau: bạn sẽ làm thế nào về việc ghi đè đầu ra chuẩn của một lỗi trong một lệnh trong tập lệnh shell khi chạy? Đây là nơi / dev / null xuất hiện.

Hãy xem nó với một ví dụ.

Chúng tôi đã tạo một tệp có tên là các bài kiểm tra có chứa chuỗi "Hello World". Nếu chúng ta muốn thể hiện nội dung của tệp đó trên dòng lệnh, chúng ta có thể thực hiện theo cách sau:

user @ laptop: ~ $ cat test
Chào thế giới

Nếu tệp không tồn tại hoặc được đặt tên là các bài kiểm tra (với 's' ở cuối), chúng tôi sẽ gặp lỗi sau trong bảng điều khiển:

user @ laptop: ~ $ cat tests
cat: tests: Tệp hoặc thư mục không tồn tại

Chúng tôi có thể làm gì để tránh thông báo lỗi? Chà, chỉ cần chuyển hướng đầu ra của lệnh, trong trường hợp có lỗi, đến "thùng rác", nghĩa là / dev / null

Làm thế nào để chúng tôi chỉ định nó trong trường hợp có lỗi? Tại đây, bạn nhập giá trị đầu vào, đầu ra và giá trị lỗi tiêu chuẩn cho chương trình: STDIN, STDOUT và STDERR (có thể được thay thế cho 0, 1 và 2 tương ứng). Theo cách này, nếu chúng ta đặt ...

user @ laptop: ~ $ cat tests 2> / dev / null
user @ laptop: ~ $

… Chúng ta sẽ thấy rằng thông báo lỗi sẽ không được tạo trên bảng điều khiển.

Bạn phải cẩn thận vì cú pháp rất cần thiết: giữa các ký tự 2 và> không được có khoảng trắng. Nếu không, nó sẽ cung cấp những điều sau:

user @ laptop: ~ $ cat tests 2> / dev / null
cat: tests: Tệp hoặc thư mục không tồn tại
cat: 2: Tệp hoặc thư mục không tồn tại

Ngược lại, khoảng trắng giữa> và / dev / null sẽ không ảnh hưởng tiêu cực đến kết quả.

Ví dụ: chúng tôi cũng có thể sử dụng chuyển hướng lỗi để ghi lại lỗi trong tệp nhật ký như sau:

user @ laptop: ~ $ cat tests 2> err.log

Một trường hợp thú vị khác sẽ là tập hợp các kết quả trong một tệp khác, miễn là lỗi không xảy ra, chúng tôi sẽ đặt:

user @ laptop: ~ $ cat test 1> output_result 2> err.log

Cuối cùng, nên đặt biểu thức «> / dev / null 2> & 1» trong đó kết quả đầu ra chuẩn và đầu ra lỗi được kết hợp, chuyển hướng chúng để không có trường hợp nào thu được thông tin đầu ra.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Guido Ignatius Ignatius dijo

    À, nhưng một trong những tiện ích được sử dụng nhiều nhất mà / dev / null có, đó là làm trống các tệp: $ cat / dev / null> file.log Theo cách này, tệp file.log sẽ trống. Thêm nó!

    1.    Edward H. dijo

      Đó chính xác là lời giải thích mà anh ấy đang tìm kiếm.
      Mình ủng hộ chuyển động thêm vào =)

      Saludos!

  2.   Pablo dijo

    Xin chào, trước hết bài viết rất hay! thứ hai tôi muốn đóng góp một cái gì đó với liên kết này về chủ đề cron job trong php từ Cpanel và lời chúc mừng thứ ba cho blog!

  3.   Pablo dijo

    Bài viết hay trên dev / null, thật đáng tiếc khi tôi nghĩ mình đã nhận xét nhầm chỗ trước đây! tôi xin lỗi

  4.   Vô danh dijo

    cảm ơn đóng góp tốt

  5.   áo đấu dijo

    Xin chào Tôi đang nhận được cuộc tấn công vô hiệu. Tôi sử dụng andrirc và tôi nhận được một biệt hiệu riêng của mình với từ Null. 2 giây sau khi chương trình đóng, tôi đã đọc và từ những gì tôi thấy, điều này chỉ có thể được thực hiện bởi Shell, không phải ai đó bên ngoài. Tôi đã cố gắng bỏ qua bản thân / bỏ qua -lrpcntikd và Không có gì làm tôi ngạc nhiên khi lệnh tiếp tục đến. Nếu bạn có bất kỳ cách nào để cố gắng chặn nó, tôi sẽ đánh giá cao nó. Chúc mừng

  6.   Sofia martinez dijo

    Điều gì xảy ra nếu khi thực hiện câu, ký hiệu> không được đặt?

    Ai đó có thể hướng dẫn tôi không?

  7.   Hư không dijo

    Chào buổi sáng, tôi đã cài đặt Debian netinst trong ACER Extensa 5620Z - 32 bit. Sau khi quá trình cài đặt từ USB hoàn tất và ổ đĩa được tháo ra để nó khởi động từ đĩa cứng (không cài đặt lại từ bút) nhưng tại thời điểm khởi động hệ thống cô ấy hỏi tôi:
    đăng nhập debian: xxxxxxxx (ok)
    Mật khẩu: xxxxxxxx (ok)
    nil @ debian: ~ $ ???? Cái này là cái gì? Tôi nên đặt cái gì ở đó?

    Nếu không có lệnh này, tôi không thể tiến hành khởi động hệ thống.
    Bạn có thể giúp tôi được không? Tôi không biết mình nên tiếp tục như thế nào.
    Cảm ơn rât nhiêu. Trân trọng.