Computer >> Máy Tính >  >> Hệ thống >> Windows

Powershell trên Linux - Trải nghiệm ban đầu

Ngày xửa ngày xưa, tôi đã viết một bài báo trên Powershell để ngưỡng mộ các đặc tính giống như Linux của nó. Tôi thậm chí đã có một hoạt hình đẹp trong đó, để mọi người vui vẻ. Vài năm sau, Microsoft đã quyết định mã nguồn mở Powershell và cung cấp nó trên Linux (!), và hiện tại nó đã sẵn sàng để thử nghiệm sớm.

Tôi thích ý tưởng này vì nhiều lý do. Nó cho phép một nền tảng chung hơn trong việc phát triển và bảo trì hệ thống, đặc biệt là vì cũng có Bash cho Windows, vì vậy chúng ta có thể thấy một sự phản ánh tốt đẹp về những nỗ lực. Về lâu dài, điều này sẽ làm cho hai hệ điều hành hợp tác hiệu quả hơn và những người chiến thắng thực sự sẽ là những người làm quản trị, nhà phát triển, cũng như người dùng cuối. Hãy xem nó hoạt động như thế nào.

Thiết lập Powershell

Hệ thống thử nghiệm của tôi là hộp CentOS 7.2 Xfce và nó là một trong những phiên bản Linux được hỗ trợ. Microsoft hiện cung cấp các trình cài đặt cho Ubuntu, hai thế hệ LTS của chúng và CentOS. Việc thiết lập khá đơn giản, ngay cả khi việc tìm kiếm các gói để tải xuống hơi phức tạp. Cài đặt với yum cục bộ và khởi chạy từ dòng lệnh.

yum cài đặt powershell-6.0.0_alpha.9-1.el7.centos.x86_64.rpm


Bây giờ thì sao?

Tôi không phải là người dùng Powershell thực sự tiên tiến. Nhưng nó là một trình bao, vì vậy bạn chỉ cần học cú pháp và bắt đầu sử dụng nó. Bây giờ, nó có thể thay thế BASH hay giống nhau không? Chà, không hẳn, nhưng đó không phải là vấn đề. Nhưng dù sao đi nữa, tôi đã bắt đầu gõ một vài lệnh cơ bản, chỉ để hiểu rõ cách thức hoạt động của nó.

Lúc đầu, mô hình sử dụng có thể hơi phản trực giác đối với người dùng Linux. Nhưng ý chính vẫn giữ nguyên. Một nhược điểm đối với cách Powershell hiện đang được thực hiện là mã màu. Màu vàng trên nền trắng không hoạt động tốt, vì vậy bạn có thể muốn sử dụng một chủ đề thiết bị đầu cuối khác.

Nếu gặp khó khăn, bạn luôn có thể gọi trợ giúp bằng:help , hoặc tốt hơn, get-help - ví dụ, để thực sự thấy cú pháp thích hợp và cách nó được sử dụng. Điều này khá hữu ích. Các lệnh không phân biệt chữ hoa chữ thường, mặc dù chúng có ký hiệu chữ hoa chính thức ở đây và ở đó.

Một số lệnh (cmdlet) cũng có một phiên bản ngắn. Ví dụ, Get-ChildItem là một cái tên khá không trực quan cho chức năng tương đương với UNIX find, ngoài ra nó cũng có thể được viết tắt là gci. Điều này có thể hơi khó hiểu lúc đầu. Nhưng không nhiều.

gci -path /* -include "igor" -recurse

Một điều khác có thể làm bạn bối rối là - gốc tất nhiên được đánh dấu bằng dấu gạch chéo, nhưng để hầu hết các lệnh phụ thuộc vào đường dẫn hoạt động chính xác, bạn thực sự nên thêm dấu hoa thị sau dấu gạch chéo. Đi hình. Tuy nhiên, tôi cũng đang bước đi nhiều như bạn.

Tất cả đều ở đó. Hơi khác một chút về giao diện - và chắc chắn là về tên gọi, nhưng có vẻ như nó hoạt động tốt. Lớp vỏ khá ổn định. Một ngoại lệ là Powershell bị treo khi đo thời gian tìm kiếm tệp đệ quy rất dài. Nó chỉ dừng lại, nhưng tôi đã có thể làm gián đoạn việc thực hiện.

Lỗi

Powershell rất dài dòng và dễ bị lỗi, điều này có vẻ đáng báo động do màu đỏ và thực tế là các lỗi trở thành các khối văn bản rất dài, giống như trên Windows. Nhưng chúng ta đang nói về những điều vô hại, những thứ như lỗi từ chối quyền trong quá trình tìm kiếm tệp trên dòng lệnh.

Sau đó, để cung cấp cho bạn một ví dụ khác, lệnh ghép ngắn đo lường (tương đương với thời gian của Linux theo một cách nào đó) yêu cầu các đối số được đặt trong dấu ngoặc nhọn. Nếu bạn bỏ lỡ những điều này, bạn sẽ gặp phải một lỗi lớn trông khá hoảng sợ nhưng thực tế lại vô hại. Điều tương tự cũng xảy ra với rất nhiều cmdlet khác.

Đây chỉ là nửa trên của lỗi. Còn nữa.

Còn người dùng Fedora thì sao?

Chà, chúng tôi biết rằng Microsoft đã phát hành Powershell cho Ubuntu và CentOS. Tôi tự hỏi nếu Fedora phân loại. Thật ra tôi không thắc mắc. Tôi đã thử nghiệm. Khi nó diễn ra, thí nghiệm nhỏ này không suôn sẻ như tôi mong đợi. Ngay sau khi cài đặt và cố gắng chạy Powershell, tôi gặp một lỗi rất hay:

vỏ bọc quyền lực
Không thể khởi chạy CoreCLR, HRESULT:0x80131500

Đây là một lỗi khá chung chung và có một cuộc thảo luận khá dài về chủ đề này trên GitHub. Tuy nhiên, thay vì chỉ mù quáng làm theo các đề xuất, trước tiên tôi muốn xác nhận rằng vấn đề là do các phụ thuộc libicu. Nói một cách dí dỏm, tôi đã sử dụng sức mạnh của strace, đây là một trong những công cụ hữu ích hơn trong kho vũ khí gỡ lỗi ngày càng phát triển của tôi.

open("/usr/lib64/libicuuc.so.50", O_RDONLY|O_CLOEXEC) =-1 ENOENT (Không có tệp hoặc thư mục như vậy)

Thật vậy, chúng tôi có một vài thư viện bị thiếu. Vấn đề là, gói này có sẵn trên Fedora, chỉ có điều nó là phiên bản mới hơn so với phiên bản mà Powershell mong đợi. Tôi đã cố gắng giải quyết vấn đề bằng cách tạo các liên kết tượng trưng và điều này đã giúp ích một chút.

ln -s /usr/lib64/libicui18n.so.56 /usr/lib64/libicui18n.so.50

Cuối cùng, lỗi đã chuyển từ sự cố khởi động chung thành sự cố với các biểu tượng bên trong đối tượng được chia sẻ. Và đây là điều bạn không thể giải quyết một cách tùy tiện.

vỏ bọc quyền lực
powershell:lỗi tra cứu biểu tượng:/opt/microsoft/powershell/6.0.0-alpha.9/System.Globalization.
Native.so:ký hiệu không xác định:uloc_getDefault_50

Giải pháp là tải xuống phiên bản libicu cũ hơn, giải nén nó ở đâu đó, sau đó đặt đường dẫn thư viện theo cách cho phép Powershell tìm và chọn các phụ thuộc libicu trước, ví dụ:

xuất LD_LIBRARY_PATH=/:$LD_LIBRARY_PATH

Kết luận

Chúng ta đây. Bây giờ là Năm 2016 và bạn có thể chạy BASH trên Windows một cách tự nhiên và bạn có thể chạy Powershell trên Linux một cách tự nhiên. Bob không chỉ là chú của bạn mà bạn còn là chú của Bob nữa! Tôi hài lòng với sự phát triển này. Nó sẽ chỉ có lợi cho tất cả mọi người trong thời gian dài.

Powershell không phải là lựa chọn ngay lập tức của tôi cho một công cụ viết kịch bản, ngôn ngữ và khung, nhưng nó có những ưu điểm của nó và đối với những người cần duy trì môi trường đa hệ điều hành, nó có thể đơn giản hóa đáng kể các nỗ lực quản trị. Bản dựng alpha ban đầu đủ ổn định để thử nghiệm, nhưng tôi thực sự khuyên bạn không nên thử nghiệm nhiều, đặc biệt là không có quyền root và trên các hệ thống sản xuất. Chỉ cần được ở bên an toàn. Tất cả trong tất cả, khá ổn. Dù sao đi nữa, bạn đi đi. Thời gian để mân mê bàn ​​phím của bạn.

Chúc mừng.