2009-11-20 15 views
8

Tôi đã dành đôi khi cố gắng để chọn một, trên so sánh net là cho zsh vs bash và cá vs bash. Nhưng, tôi không thể tìm thấy bất kỳ so sánh cho zsh vs cá. Tôi lập trình trong C và C++, ngoài các loại hello-world, không bao giờ thực hiện bất kỳ kịch bản chính nào. Nhưng bây giờ cố gắng tay của tôi tại python và shell-script. Vỏ nào giữ nhiều nước hơn về năng suất trước và sau đó phát triển? Hoặc cuối cùng, sức mạnh và khả năng sử dụng của bất kỳ trình bao nào đi kèm với các tệp _rc của nó. Vì vậy, tôi đủ tốt với bash?Đề xuất - Zsh vs FishShell. Scripting, năng suất và poweruser perse

+0

'fish' để sử dụng tương tác,' zsh' để tạo tập lệnh - nếu nó chỉ nằm giữa hai loại đó. Cá nhân, tôi nghĩ rằng giữ trong thói quen tốt lại: POSIX sh tuân thủ là quan trọng, đủ để gắn bó với bash, hoặc ksh nếu tôi quan tâm nhiều hơn về hiệu suất. –

+0

... mà nói, câu hỏi này là rõ ràng chống lại các quy tắc ở đây; có một lý do gần gũi cụ thể cho các yêu cầu đề xuất-công cụ, * và * một lý do khác cho các câu hỏi tập trung vào ý kiến. –

+0

So sánh tốt các loại vỏ khác nhau - http://hyperpolyglot.org/unix-shells – valentt

Trả lời

10

Trước đây, có một loại thiết bị lửa giữa các vỏ C (CSH và TCSH) và Bash. Khiếu nại chống lại các biến thể CSH là chúng không tốt cho việc viết kịch bản.

Trong những năm tôi đã là một người nghiện CLI, tôi đã không bao giờ thực hiện bất kỳ tập lệnh độc lập nào mà ngôn ngữ kịch bản đã được chọn vì đó là nội dung của trình duyệt của tôi.

Tôi đã viết nhiều kịch bản rộng rãi có thể được chia thành hai loại:

  1. Những người giúp năng suất dòng lệnh của tôi
  2. Những người không liên quan trực tiếp đến năng suất dòng lệnh của tôi.

Các tập lệnh trong thể loại 1. hầu như luôn được viết bằng ngôn ngữ kịch bản lệnh shell của tôi (thường là chức năng như tôi đang sử dụng ZSH và trước đó sử dụng BASH cả hai chức năng hỗ trợ).

Các tập lệnh trong thể loại 2. được viết bằng bất kỳ thứ gì có vẻ hiệu quả nhất (cả thời gian phát triển và thời gian chạy được xem xét). Tôi thường thấy mình viết kịch bản nhỏ trong Perl, C (biên dịch, rõ ràng), BASH/ZSH/SH hoặc những gì tôi muốn. Tôi đã thực hiện một kịch bản Python nhỏ (nhưng không nhiều), và thậm chí cả khu nghỉ mát để Java nhân dịp (biên dịch-ish, một lần nữa).

Vì vậy, tôi đang bập bẹ về điều gì? Không căn cứ bạn lựa chọn vỏ trên khả năng kịch bản độc lập của nó. Chọn vỏ của bạn cho nó tiện ích cho bạn như một vỏ. Script trong bất cứ điều gì khác mà bạn chọn. Có thể bạn sẽ đủ tốt với BASH làm vỏ của bạn (mặc dù tôi thích ZSH hơn một chút, **/* globbing rất đẹp và một vài thứ nhỏ khác, nhưng hầu hết các kịch bản tôi viết cho ZSH đều sớm giống với BASH của họ đối tác).

+2

Re: '**/*' - phiên bản hiện đại (4.x) của bash cũng hỗ trợ các bóng đệ quy; xem 'shopt -s globstar'. Điều đó là một sự khác biệt lớn trong quan điểm của tôi là hành vi phân chia chuỗi trên các mở rộng không được kiểm duyệt; zsh hiện nó theo cách sane, trong khi bash hiện nó theo cách tương thích với POSIX. Chắc chắn có rất nhiều chỗ cho sự khác biệt hợp pháp về những gì người ta thích ở đây; cá nhân, tôi đi theo sự phù hợp với tiêu chuẩn không có tư tưởng nhưng phổ biến. –

4

nếu bạn không thể tìm thấy bất kỳ so sánh nào giữa zsh so với cá, sau đó tự mình thử. Đó là cách duy nhất bạn có thể nói cái nào bạn thích, không ai khác có thể nói với bạn điều đó. Ngoài ra, xác định ý nghĩa của năng suất. Đối với tôi, sự phong phú của các mô-đun và khả năng nội bộ của ngôn ngữ. Nếu bạn đã bắt đầu với Python, hãy tìm nó. Đối với vỏ, bạn có thể học ít hơn (không nói hoàn toàn quên nó), liên quan đến việc có thể hiểu các kịch bản rc của bạn và các hệ thống khác vv. Ngoài ra, Python có thể làm những gì trình bao làm.

3

Bạn sẽ làm việc hiệu quả nhất trong môi trường bạn đã biết. Tôi sử dụng bash trong nhiều năm và tiền phạt của nó. Nó completes almost everything, có thể là used with git, mercurial ...

+4

* mọi * vỏ có thể được sử dụng với GIT, Mercurial, etc :-) – Brian