Bash vs Python для DevOps инженеров и системных администраторов
Mục lục:
- Kiểm tra nếu tệp tồn tại
- Kiểm tra nếu thư mục tồn tại
- Kiểm tra nếu tệp không tồn tại
- Kiểm tra xem có tồn tại nhiều tệp không
- Toán tử kiểm tra tệp
- Phần kết luận
Nhiều khi viết kịch bản Shell, bạn có thể thấy mình trong tình huống cần thực hiện một hành động dựa trên việc tệp có tồn tại hay không.
Trong Bash, bạn có thể sử dụng lệnh kiểm tra để kiểm tra xem một tệp có tồn tại hay không và xác định loại tệp.
Lệnh kiểm tra có một trong các hình thức cú pháp sau:
Kiểm tra nếu tệp tồn tại
Khi kiểm tra xem một tệp có tồn tại không, các toán tử FILE được sử dụng phổ biến nhất là
-e
và
-f
. Cái đầu tiên sẽ kiểm tra xem một tệp có tồn tại bất kể loại nào không, trong khi tệp thứ hai sẽ trả về true chỉ khi FILE là một tệp thông thường (không phải là thư mục hoặc thiết bị).
Tùy chọn dễ đọc nhất khi kiểm tra xem một tệp có tồn tại hay không là sử dụng lệnh test kết hợp với câu lệnh if. Bất kỳ đoạn mã nào dưới đây sẽ kiểm tra xem tệp
/etc/resolv.conf
có tồn tại không:
FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if; then echo "$FILE exist" fi
FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi
Nếu bạn muốn thực hiện một hành động khác dựa trên việc tệp có tồn tại hay không chỉ đơn giản là sử dụng cấu trúc if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Luôn sử dụng dấu ngoặc kép để tránh các vấn đề khi xử lý tệp có chứa khoảng trắng trong tên của chúng.
Bạn cũng có thể sử dụng lệnh test mà không cần câu lệnh if. Lệnh sau toán tử
&&
sẽ chỉ được thực thi nếu trạng thái thoát của lệnh kiểm tra là đúng,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Đối diện với
&&
, tuyên bố sau
||
toán tử sẽ chỉ được thực thi nếu trạng thái thoát của lệnh kiểm tra là
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Kiểm tra nếu thư mục tồn tại
Toán tử
-d
cho phép bạn kiểm tra xem một tập tin có phải là một thư mục hay không.
Ví dụ: để kiểm tra xem thư mục
/etc/docker
có tồn tại không, bạn sẽ sử dụng:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Bạn cũng có thể sử dụng dấu ngoặc kép
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Kiểm tra nếu tệp không tồn tại
Tương tự như nhiều ngôn ngữ khác, biểu thức kiểm tra có thể được phủ định bằng cách sử dụng
!
(dấu chấm than) logic không phải toán tử:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Giống như trên:
&& echo "$FILE does not exist"
Kiểm tra xem có tồn tại nhiều tệp không
Thay vì sử dụng các cấu trúc if / other lồng nhau phức tạp, bạn có thể sử dụng
-a
(hoặc
&&
với
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Các biến thể tương đương mà không sử dụng câu lệnh IF:
&& echo "both files exist"
Toán tử kiểm tra tệp
Lệnh kiểm tra bao gồm các toán tử FILE sau đây cho phép bạn kiểm tra các loại tệp cụ thể:
-
-bFILE- Đúng nếu TẬP_TIN tồn tại và là một tệp đặc biệt khối.-cFILE- Đúng nếu TẬP_TIN tồn tại và là một tệp ký tự đặc biệt.-dFILE- Đúng nếu FILE tồn tại và là một thư mục.-eFILE- Đúng nếu FILE tồn tại và là một tệp, bất kể loại (nút, thư mục, ổ cắm, v.v.).-fFILE- Đúng nếu FILE tồn tại và là một tệp thông thường (không phải là thư mục hoặc thiết bị).-GFILE- Đúng nếu FILE tồn tại và có cùng nhóm với người dùng đang chạy lệnh.-hFILE- Đúng nếu TẬP_TIN tồn tại và là một liên kết tượng trưng.-gFILE- Đúng nếu TẬP_TIN tồn tại và có cờ set-group-id (sgid).-kFILE- Đúng nếu FILE tồn tại và có cờ bit dính.-LFILE- Đúng nếu FILE tồn tại và là một liên kết tượng trưng.-OFILE- Đúng nếu FILE tồn tại và được sở hữu bởi người dùng đang chạy lệnh.-pFILE- Đúng nếu FILE tồn tại và là một đường ống.-rFILE- Đúng nếu FILE tồn tại và có thể đọc được.-SFILE- Đúng nếu FILE tồn tại và là socket.-sFILE- Đúng nếu FILE tồn tại và có kích thước khác không.-uFILE- Đúng nếu cờ tồn tại và set-user-id (suid) được đặt.-wFILE- Đúng nếu FILE tồn tại và có thể ghi.-xFILE- Đúng nếu FILE tồn tại và có thể thực thi được.
Phần kết luận
Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách kiểm tra xem một tệp hoặc thư mục có tồn tại bằng Bash không.
thiết bị đầu cuối bashChơi nhiều trò chơi hơn bao giờ bạn mơ ước tồn tại với trình biên dịch phần mềm miễn phí này. một phần của Windows từ những ngày đầu tiên, khi có ít, nếu có, phần mềm khác chạy trực tiếp trong môi trường. Kể từ đó, một hoặc hai chương trình hữu ích đã xuất hiện trên nền tảng này, nhưng mọi người vẫn chơi Solitaire, rất nhiều. Nếu bạn thích Solitaire, nhưng muốn một biến thể hoặc hai ... trăm ... bạn nên kiểm tra các chương trình phần mềm miễn phí PySolFC.
PySolFC là một bộ sưu tập khổng lồ của trò chơi Solitaire, đi tốt hơn so với hỗn hợp thông thường. Ngoài các trò chơi bài truyền thống, có các trò chơi xếp gạch Mah-Jongg và các trò chơi Hanfuda Châu Á. Trong mỗi danh mục, có các danh mục phụ và các danh mục phụ phụ - ví dụ: trong trò chơi Pháp, bạn có thể chọn "Loại quạt" và trong "Loại quạt", trò chơi Cloverleaf cụ thể.
Bản tin thứ ba địa chỉ một lỗ hổng quan trọng trong Windows Media Format có thể bàn giao quyền kiểm soát của một máy tính dễ bị tổn thương nếu bạn xem một tập tin media .mp3, .wma hoặc .wmv bị nhiễm độc, theo Symantec. Bản vá MS09-047 rất quan trọng đối với nhiều kết hợp Windows Media Format Runtime hoặc Windows Media Services trên Windows 2000, XP, Server 2003, Vista và Server 2008. Bản tin của Microsoft liệt kê đầy đủ các kết hợp hệ điều hành và phần mềm tiềm năng, nhưng Itanium- các hệ thống
[ĐọC thêm: Cách gỡ bỏ phần mềm độc hại khỏi PC Windows của bạn]
Làm thế nào để kiểm tra nếu một tập tin hoặc thư mục tồn tại trong python
Khi viết tập lệnh Python, bạn có thể muốn thực hiện một hành động nhất định chỉ khi tệp hoặc thư mục tồn tại hoặc không. Ví dụ: bạn có thể muốn đọc hoặc ghi dữ liệu vào tệp cấu hình hoặc chỉ tạo tệp nếu nó không tồn tại.







