HomeLập trìnhPythonCách thay thế...

Cách thay thế Bash bằng Python làm ngôn ngữ dòng lệnh của bạn


Tôi có một chút mối quan hệ yêu và ghét với bash. Tôi dành nhiều thời gian trong thiết bị đầu cuối và bash là “ngôn ngữ lập trình” mặc định của tôi. Đôi khi tôi nói với mọi người rằng find, grep và xargs điều hành cơ sở hạ tầng của họ, và họ cười cho đến khi nhận ra tôi đang nghiêm túc.

Chọn một số Python là một lựa chọn hoàn hảo cho quản trị viên hệ thống. Nó cũng tuyệt vời cho bất kỳ ai phải xử lý bất kỳ thứ gì trong thiết bị đầu cuối nhưng không muốn sử dụng bash hoặc có nhu cầu quá phức tạp đối với bash. Khi một nhiệm vụ vượt quá

find $(pwd) -name "*.txt" | xargs -I {} echo "do stuff with {}"

đã đến lúc thoát khỏi Python!

Có rất nhiều lợi ích khi sử dụng Python khi bạn chuyển sang ngôn ngữ dòng lệnh.

  • Python có rất nhiều thư viện hay để trợ giúp hầu hết mọi thứ. Điều đó bao gồm xử lý các hoạt động của hệ thống, đọc tệp, liệt kê các thư mục, viết các vòng lặp, kiểm tra mã thoát, v.v.
  • Tự động hoàn thành với IDE. Nghiêm trọng. Ai muốn phải ghi nhớ bất cứ điều gì?
  • Bộ thử nghiệm mạnh mẽ nếu đó là sở thích của bạn (và nếu không, bạn nên cân nhắc biến nó thành sở thích của mình).
  • Bảng điều khiển iPython. Rất tuyệt vời. Ngạc nhiên. TÔI THÍCH NÓ.
  • Python có sẵn trên hầu hết các hệ thống và nếu không, bạn có thể lấy nó bằng Miniconda.
  • Kiểm tra lỗi mạnh mẽ với các khối thử và bắt.
  • Nếu bạn làm việc trên các hệ điều hành khác nhau, bạn có thể sử dụng các thư viện Python sẽ giải quyết tất cả những vấn đề đó.
  • Ngay cả khi bạn không có khả năng lập trình thì Python vẫn là một ngôn ngữ dễ bắt đầu.
Đọc thêm  Nguyên tắc cơ bản về Python cho Khoa học dữ liệu

Bắt đầu nào

Để bắt đầu, trước tiên bạn cần cài đặt Python hoặc cài đặt nó với Miniconda.

Kiểm tra xem bạn đã cài đặt iPython chưa

which python
which ipython

Nếu cả hai đều thành công, bạn đang kinh doanh! Nếu bạn có Python, nhưng không có iPython, bạn sẽ phải cài đặt nó. Bạn có thể cài đặt nó như một gói hệ thống, nhưng tôi thực sự khuyên bạn chỉ nên cài đặt nó với Miniconda.

Cài đặt Miniconda

Lấy trình cài đặt cho hệ điều hành của bạn tại đây. Tôi khuyên bạn nên cài đặt Python3.

Sau đó, nó chỉ là một cài đặt đơn giản.

bash Miniconda3-latest-Linux-x86_64.sh

Làm theo lời nhắc và bạn sẽ cài đặt Miniconda3. Khi bạn đã cài đặt xong, bạn sẽ muốn chạy bản cập nhật, vì đây là công nghệ và tất nhiên bạn muốn chạy bản cập nhật. 😉

conda update conda
conda config --add channels conda-forge
conda update -y --all
conda install -y ipython

Xử lý sự cố

Nếu bạn gặp sự cố khi cài đặt bất kỳ gói nào thì đây là một số mẹo.

  • Chạy conda clean --all và thử lại.
  • Đảm bảo bạn đang sử dụng đúng kênh.
  • Chạy conda update -y --all
  • Cố gắng cài đặt ít nhất có thể vào không gian conda toàn cầu của bạn. Thay vào đó, hãy tạo môi trường cho các nhiệm vụ và dự án khác nhau mà chúng ta sẽ thực hiện tiếp theo.

Tạo môi trường với Conda

Nếu bạn đã từng sử dụng virtualenv, pipenv (có phải vậy không?), Rbenv, plenv, anyenv hoặc bất kỳ env nào khác đã xuất hiện trong nhiều năm, thì điều này nghe có vẻ rất quen thuộc với bạn. Ý tưởng là các dự án khác nhau nên có môi trường phần mềm biệt lập của riêng chúng.

conda create -n my-project ipython package1 package2 package2

Nếu bạn giống tôi và muốn có sẵn iPython, hãy đảm bảo rằng bạn đã cài đặt nó vào bất kỳ môi trường mới nào!

Thư viện Python dành cho quản trị hệ thống

Trước khi đi vào các ví dụ, chúng ta hãy liệt kê một số gói tiện dụng cùng với tài liệu của chúng.

Gói đi của tôi là gói os. Bạn có thể sử dụng nó để liệt kê các thư mục, kiểm tra xem các tệp có tồn tại hay không, kiểm tra xem các liên kết tượng trưng có tồn tại hay không, tạo các thư mục, chạy các lệnh hệ thống, nhận và đặt các biến môi trường, v.v. Thật tuyệt vời!

Đọc thêm  25 dự án Python cho người mới bắt đầu – Ý tưởng dễ dàng để bắt đầu viết mã Python

Gói thứ hai của tôi để chạy các lệnh hệ thống không tồn tại dưới dạng thư viện python tiện dụng là mô-đun quy trình con.

Shutil có các thao tác tệp không có trong thư viện os.

Thư viện pprint in ra các cấu trúc dữ liệu phức tạp với thụt đầu dòng đẹp mắt.

Thư viện pytest cho phép bạn kiểm tra mã Python của mình, bởi vì hãy đối mặt với nó, không có gì hoạt động chính xác trong (vài) lần đầu tiên.

Làm cách nào để tôi thực thi mã của mình?

Cuối cùng! Mã số!

Ảnh chụp màn hình-2019-12-13-10.33.52

Khi bạn đang sử dụng Python để quản trị hệ thống, bạn có thể đi thẳng vào bảng điều khiển iPython hoặc viết các tập lệnh rồi thực thi chúng với python name-of-script.py.

Nếu bạn thích viết kịch bản của mình, bạn có rất nhiều lựa chọn và đó thực sự là vấn đề sở thích cá nhân. Tôi sử dụng PyCharm, được trả phí, nhưng Visual Studio Code và Atom là những lựa chọn miễn phí tuyệt vời không kém.

Tôi thấy rằng nó phụ thuộc vào những gì tôi đang làm việc. Đôi khi, tôi chỉ cần mở bảng điều khiển iPython và bắt đầu nhập, và những lúc khác, tôi cần thứ gì đó mạnh mẽ hơn với các bài kiểm tra và những thứ khác.

Nếu bạn đang sử dụng bảng điều khiển iPython hoặc bất kỳ trình chỉnh sửa nào tôi đã liệt kê ở trên, bạn sẽ có tính năng tự động hoàn thành. Tự động hoàn thành thật tuyệt vời! Với iPython, bạn chỉ cần bắt đầu nhập chức năng của mình và nhấn tab để nhận danh sách các chức năng tiềm năng mà bạn có thể muốn.

Ảnh chụp màn hình-2019-12-13-10.49.07

Tôi không thể diễn tả mức độ tôi thích tính năng tự động hoàn thành. 😉

Được trợ giúp

Bạn có thể truy cập bất kỳ trang tài liệu nào cho bất kỳ thư viện nào, nhưng nếu bạn biết tên của thư viện hoặc chức năng, bạn có thể hiển thị nó trong iPython.

Đọc thêm  Nhận dạng giọng nói trong Python

Ảnh chụp màn hình-2019-12-13-10.55.14

Ảnh chụp màn hình-2019-12-13-10.55.55

Bạn cũng có thể hiển thị menu trợ giúp trong hầu hết các IDE và trình soạn thảo văn bản, nhưng điều đó sẽ dành riêng cho trình soạn thảo của bạn.

ví dụ

Trước tiên, bạn sẽ cần nhập các gói của mình

import os
import subprocess
import shutil
from pprint import pprint

Dưới đây là một số ví dụ về hoạt động tập tin và thư mục phổ biến.

# Get your current working directly
# This returns a string
my_cwd = os.getcwd()
print(my_cwd)
# List the contents of a directory
# This returns a list
dir_list = os.listdir()
for item in dir_list:
    print(item)
# Get the Absolute Path name of a file (file + current working dir)
os.path.abspath('some-file')
#Get the basename - returns file
os.path.basename('/path/to/file')
# Split a directory path - platform independent
os.path.split(os.getcwd())
# Out[17]: ('/Users', 'jillian')
# Check if a path exists
os.path.exists('/path/on/filesystem')
# Check if a path is a symlink
os.path.islink()

Di chuyển các tập tin và thư mục xung quanh

# Copy a directory
# cp -rf
shutil.copytree('src', 'dest')
# Copy a file
# cp -rf
shutil.copyfile('file1', 'file2')
# Move a directory
# mv
shutil.move('src', 'dest')

Không phải mọi thứ đều có sẵn thông qua thư viện python, chẳng hạn như cài đặt thư viện hệ thống, vì vậy hãy chạy một vài lệnh hệ thống!

# Run an arbitrary system command
command = "echo 'hello'"
result = subprocess.run(command.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
#Print the stdout and stderr
print(result.stdout)
print(result.stderr)

Ghi vào tập tin!

# Write to a file (and create it if it doesn't exist)
# echo "hello" > hello.txt
f= open("hello.txt","w+")
f.write("hello!")
f.close()
# Append to a file
# echo "hello" >> hello.txt
f = open("hello.txt", "a+")
f.write("hello again!")
f.close()

Viết một số bài kiểm tra!

Các thử nghiệm chủ yếu hoạt động bằng cách sử dụng một chức năng gọi là khẳng định, về cơ bản là nói rằng hãy đảm bảo rằng điều này là đúng và nếu không sẽ chết ầm ĩ.

def test_system_command():
    """Test the exit code of a system command"""
    command = "echo 'hello'"
    result = subprocess.run(command.split(' '), stdout=subprocess.PIPE)
    assert result.returncode == 0

Đặt chức năng này trong một tệp có tên test_my_code.py và chạy như pytest test_my_code.py.

Gói (lại

Đó là những mẹo và thủ thuật chính của tôi để sử dụng Python làm công cụ thay thế bash của bạn. Lần tới khi bạn cần viết một vòng lặp trong bash, hãy xem xét việc mở bảng điều khiển iPython và xem bạn có thể nghĩ ra điều gì thay thế!



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status