Tốc độ Python so với bash

Tập lệnh Shell đề cập đến tệp nguồn được tạo đặc biệt cho trình thông dịch dòng lệnh như Bash. Các lập trình viên thường viết các tập lệnh Shell để tăng năng suất bằng cách tự động hóa các tác vụ mà họ thực hiện lặp đi lặp lại. Ví dụ: họ viết các tập lệnh tự động hóa để thao tác với tệp, thiết lập môi trường, chạy thử nghiệm và triển khai. Ngoài ra, chúng tôi có thể sử dụng các tập lệnh Shell bên trong các máy ảo hoặc dịch vụ CI/CD để chạy thử nghiệm hoặc triển khai rõ ràng và có thể định cấu hình. Các tập lệnh Shell thường chạy trên trình thông dịch dòng lệnh. Tuy nhiên, chúng ta có thể viết tập lệnh Shell bằng các ngôn ngữ lập trình đa năng phổ biến và vẫn gọi chúng là tập lệnh Shell

Ví dụ: bạn có thể sử dụng Python để tạo tập lệnh Shell hiện đại và thực thi chúng bằng trình thông dịch Python giống như tập lệnh Bash. Bạn có thể sinh ra các quy trình Unix khác bên trong tệp nguồn Python của mình giống như bạn làm với Bash. Ngoài ra, JavaScript là một giải pháp thay thế tuyệt vời để viết các tập lệnh tự động hóa một cách nhanh chóng, nhờ vào thời gian chạy Nodejs

Bạn thực sự có thể viết các tập lệnh Shell bằng Bash, Python và JavaScript. Tuy nhiên, giống như bất kỳ công nghệ nào khác trong phát triển phần mềm, những công nghệ này có những ưu và nhược điểm khác nhau. Trong câu chuyện này, tôi sẽ giải thích cách bạn có thể sử dụng từng ngôn ngữ để xây dựng tập lệnh Shell với những ưu và nhược điểm. Hơn nữa, tôi sẽ giải thích cách chọn ngôn ngữ phù hợp cho tập lệnh Shell tiếp theo của bạn

Sử dụng Bash để viết Shell Script

Mọi hệ điều hành phổ biến thường cung cấp CLI [Giao diện dòng lệnh] thông qua ứng dụng đầu cuối. Một ứng dụng đầu cuối chạy các lệnh thông qua một trình thông dịch dòng lệnh cụ thể như Bash, Z shell, C shell và KornShell. Chúng ta có thể đặt các lệnh cụ thể vào một tệp và thực thi nó thông qua trình thông dịch dòng lệnh ưa thích. Nói cách khác, chúng ta có thể viết Shell script với Bash, Z shell, v.v. Bash là một trình thông dịch dòng lệnh được sử dụng rộng rãi bởi vì nó được bao gồm trong hầu hết các hệ điều hành giống Unix hoặc Unix theo mặc định. Do đó, bạn có thể viết tập lệnh POSIX di động bằng Bash

Bash cho phép bạn viết các tập lệnh Shell với ngữ pháp tối thiểu. Nếu bạn cần thực thi một số lệnh, bạn chỉ cần đặt các lệnh đó trong một tập lệnh Bash theo từng dòng. Bash cũng hỗ trợ một số khái niệm lập trình cơ bản — chẳng hạn như câu lệnh if-else, vòng lặp, phép toán số học, hàm và biến. Bash vốn hỗ trợ các quy trình. Nói cách khác, bạn có thể sinh ra các tệp nhị phân khác dưới dạng lệnh. Ví dụ: nếu bạn cần thực thi mã nhị phân ping, bạn có thể viết lệnh ping trong tập lệnh Bash của mình. Có một số cách để hiển thị GUI với các tập lệnh Bash

Bash là ngôn ngữ lệnh, không phải ngôn ngữ lập trình đa năng. Do đó, khi logic của tập lệnh tự động hóa của bạn phát triển, nó sẽ trở nên phức tạp hơn và không thể đọc được. Ngoài ra, Bash luôn cố gắng coi mọi thứ là lệnh vì đó là ngôn ngữ lệnh. Xem ví dụ sau

#!/bin/bash
x=10
echo $x # prints 10
x = 10 # x: command not found
echo $x

Bash không có API tiêu chuẩn, nhưng nó đi kèm với các tính năng tích hợp đơn giản [Ví dụ:. thao tác văn bản tích hợp]. Tuy nhiên, bạn thường phải sinh ra các tiến trình để xử lý dữ liệu [Còn nhớ sed không?]. Do đó, Bash hoạt động rất chậm so với các ngôn ngữ khác mà chúng ta có thể sử dụng để viết các tập lệnh tự động hóa

Sử dụng Python để viết tập lệnh Shell

Python là một giải pháp thay thế phổ biến cho Bash để viết các tập lệnh thiết lập, xây dựng và phát hành môi trường. Tôi thấy rằng dự án Electron sử dụng Python cho một số tập lệnh tiện ích. Bạn không thể chạy lệnh trực tiếp trong Python vì nó không phải là ngôn ngữ lệnh. Nhưng việc chạy các lệnh và thu thập đầu ra là một miếng bánh với mô-đun quy trình con. Nhìn vào ví dụ sau

#!/usr/bin/python3import subprocess
o = subprocess.check_output[['node', '--version'], text = True]
print['You are using Node ' + o]

Tập lệnh Python ở trên in phiên bản Nodejs hiện tại của máy tính. Tập lệnh đó tương đương với tập lệnh Bash sau

#!/usr/bin/basho=$[node --version]
echo You are using Node $o

Giờ đây, bạn có thể viết các tập lệnh Shell phong phú hiện đại bằng cách sử dụng các tính năng tích hợp sẵn của Python. Tuy nhiên, trình thông dịch Python không hỗ trợ thực thi quy trình như Bash. Do đó, nếu chúng ta cần đơn giản hóa tập lệnh Python hơn nữa, để làm cho nó trông giống Bash hơn, chúng ta phải sử dụng một công cụ như Shellpy. Hãy xem tập lệnh Shellpy sau đây thực hiện công việc của tập lệnh trước đó

#!/usr/local/bin/shellpy3o = `node --version
print['You are using Node ' + o.stdout]

Python là một ngôn ngữ rất thân thiện với nhà phát triển. Ngoài ra, nó đi kèm với nhiều thư viện tích hợp hữu ích. Trình thông dịch Python được cài đặt sẵn trong hầu hết các hệ điều hành giống Unix. Do đó, Python cũng là một giải pháp thay thế tốt để viết các tập lệnh tự động hóa di động

Nhưng Python có thời gian thực hiện chương trình chậm hơn so với các ngôn ngữ khác. Khi bạn sử dụng một số thư viện, Python hoạt động quá chậm thậm chí so với Bash. Các công cụ như Shellpy và Plumbum cung cấp các API thuận tiện để làm việc với các quy trình và lệnh. Tuy nhiên, chúng tôi vẫn phải thiết lập và viết một số mã bổ sung

Sử dụng JavaScript để viết tập lệnh Shell

Như chúng ta đã biết, JavaScript được bắt đầu như một ngôn ngữ kịch bản cho trình duyệt web để làm cho các trang web trở nên năng động hơn một chút. Dự án Nodejs đã đưa JavaScript từ sandbox của trình duyệt lên cấp độ hệ điều hành. Nodejs đã cung cấp API quy trình con để sinh ra các quy trình mới. Ngoài ra, Nodejs đã giới thiệu một số API đa nền tảng để hoạt động với việc xử lý tệp, mạng và bảng điều khiển. Giờ đây, cả JavaScript và Nodejs đều bao gồm tất cả các tính năng cần thiết để tạo các tập lệnh tự động hóa hiện đại

Nodejs vốn không hỗ trợ các quy trình nhị phân như Python. Tuy nhiên, bạn có thể chạy các tệp thực thi nhị phân khác thông qua API tiến trình con. Hãy xem ví dụ sau cho biết kiến ​​trúc bộ xử lý

#!/usr/bin/node
let exec = require['child_process'].exec;
exec['arch', function[error, stdout, stderr] {
console.log[`Your computer's CPU architecture is ${stdout}`];
}];

Tập lệnh Nodejs ở trên trông không giống tập lệnh Shell vì chức năng gọi lại. Do đó, bạn phải thực hiện một số công việc bổ sung để làm cho nó trông giống như một tập lệnh Shell đơn giản. Dự án zx của Google gần đây đã được giới thiệu để giải quyết vấn đề này với các tập lệnh Shell dựa trên JavaScript. Chúng ta thực sự có thể đơn giản hóa cú pháp của đoạn mã trên và viết đoạn mã sau với zx

#!/usr/bin/env zx
$.verbose = false
let arch = await $`arch`
console.log[`Your computer's CPU architecture is ${arch}`]

Công cụ zx cung cấp gần như tất cả các tính năng mà bạn cần để viết Shell script. Hỗ trợ JSON gốc của JavaScript là một tính năng tuyệt vời để tạo các tập lệnh Shell phong phú và hiện đại. Tuy nhiên, mọi công cụ CI/CD và hệ điều hành giống Unix hoặc Unix phổ biến không cung cấp thời gian chạy Nodejs và trình quản lý gói theo mặc định

Cái nào tốt hơn?

Có rất nhiều ngôn ngữ lập trình đa năng ngoài kia. Mặc dù chúng tôi xếp hạng các ngôn ngữ đó dựa trên mức độ phổ biến, chúng tôi không thể xếp hạng dựa trên các tính năng tổng thể. Nếu có thứ gọi là ngôn ngữ lập trình tốt nhất, thì các lập trình viên luôn sử dụng một ngôn ngữ lập trình để xây dựng mọi thứ. Tuy nhiên, chúng ta có thể chọn một ngôn ngữ lập trình phù hợp theo yêu cầu của mình

Do đó, bạn có thể chọn Bash, Python hoặc JavaScript để viết tập lệnh Shell dựa trên các sự kiện và điều kiện sau

Bash hay Python nhanh hơn là gì?

Bash là một ngôn ngữ có mục đích chung giống như Python, nhưng cả hai đều có điểm mạnh và điểm yếu. Lập trình shell Bash là thiết bị đầu cuối mặc định trong hầu hết các bản phân phối Linux; . Nhưng điều đó có nghĩa là nó có thể thay thế Python? . it will always be faster in terms of performance. But does that mean it can replace Python? Nope.

Bash hay Python tốt hơn?

Bash khó viết và không mạnh bằng python. Nó được thiết kế đặc biệt để phát triển web và ứng dụng. Nó được tìm thấy trên các bản phân phối Linux và macOS. Python hiệu quả hơn và được biết đến với tính nhất quán và dễ đọc .

Các tập lệnh bash có chậm không?

Các vòng lặp Shell chậm và bash chậm nhất . Shell không có nghĩa là làm công việc nặng nhọc trong các vòng lặp. Shell nhằm khởi chạy một vài quy trình bên ngoài, được tối ưu hóa trên các lô dữ liệu.

Bash có nhanh như C không?

C cho đến nay là nhanh nhất trong số họ. BASH [Bourne Again Shell] được viết bằng C, bổ sung thêm một bước dịch và giảm tốc độ . Tương tự với bất kỳ vỏ nào khác.

Chủ Đề