Những tính năng nào của kịch bản lệnh shell có liên quan đến phát triển PHP / Python? [đóng cửa]


28

Tôi là một lập trình viên PHP / Python học Java và C # (. NET).
Hệ điều hành phát triển chính của tôi là windows 7 nhưng tôi đã sử dụng Linux và tôi hiện đang khởi động kép với Ubuntu. Kiến thức Linux của tôi tuy nhiên khá hạn chế. Tôi có thể làm việc với dòng lệnh trên các tác vụ đơn giản nhưng đó là khá nhiều. Tôi không thực hiện bất kỳ kịch bản shell nào và tôi không biết nhiều lệnh quan trọng.

Sở thích của tôi là phát triển web, ứng dụng di động và có thể một số nội dung được nhúng trong tương lai. Kỹ năng viết kịch bản shell sẽ hữu ích cho những sở thích này và nếu vậy, làm thế nào?


9
Bất cứ ai nói với tôi 5 năm trước "Đàn ông đích thực thông thạo C ++, đàn ông thực sự sử dụng dòng lệnh và khởi động Linux của họ từ một hình ảnh mềm" - fvck bạn! Tôi muốn nói với họ "những người đàn ông thực sự" sử dụng đầu của họ và chọn công cụ tốt nhất họ có thể tìm thấy cho công việc. Họ cũng biết cách vui chơi trong cuộc sống ngoài công việc. Thưa, xin lỗi cho câu trả lời trung tâm của người đàn ông. "Đàn ông" tôi có nghĩa là lập trình viên, nhưng đó không phải là cách nó được nói vào thời điểm đó.
Công việc

3
Bất cứ ai bắt đầu một cuộc tranh cãi với "Đàn ông đích thực" đều là những trò đùa, hoặc đầy sh * t. Tuy nhiên, những kẻ ngốc như thế này không làm mất đi giá trị của việc hiểu những điều mà ban đầu, có vẻ khó khăn, lập trình shell so với việc kéo GUI mọi thứ xung quanh thường là một địa ngục hiệu quả hơn rất nhiều. Và nếu một số yếu tố trung tâm C ++ là hoàn toàn cần thiết, thì C ++ là con đường để đi. (ví dụ: hiệu suất cao, hoặc về cơ bản hơn là việc sử dụng thư viện C hoặc C ++ / cơ sở mã hiện có ... vv) - về cơ bản, nếu bạn không thực dụng, hãy quên dòng công việc này.
ocodo

6
@Slomojo: Đàn ông đích thực yêu vợ con và đối xử tốt với họ. ;)
Mason Wheeler

@Mason, bạn là một hoàng tử thưa ngài.
ocodo

1
PHP / Python thường được triển khai trên các hộp Linux vì chúng rẻ hơn các hộp Windows. Do đó, nếu bạn cần chăm sóc những người đó, bạn sẽ tốt hơn bằng cách biết mọi thứ hoạt động như thế nào và bạn làm gì.

Câu trả lời:


35

Nếu tôi đang mã hóa một ứng dụng windows (hoặc ứng dụng mac) thì tại sao tôi cần biết Linux? Một thợ máy Ford có nên biết máy kéo John Deer? Tất cả phụ thuộc vào những gì bạn đang làm, một cách chuyên nghiệp hoặc vào thời gian "sở thích" của riêng bạn.

Bây giờ, nó không đau để biết điều đó. Trên thực tế, tôi là một người tin tưởng vững chắc vào "bạn càng biết nhiều, bạn càng có lợi"


Lý do tôi hỏi là vì Linux được coi là 'phải học' cho các lập trình viên thuộc mọi loại ngày nay. Tôi có thể sai tuy nhiên.
Maxtor

@Max: Nó sẽ chỉ làm cho bạn thông minh nếu bạn biết cách sử dụng nó và biết làm thế nào và tại sao Linux làm điều đó. Mã nguồn Linux có kiến ​​thức rộng lớn được nhúng trong nó nhưng như Muad đã nói, nó không phải là PHẢI.
Geek

1
Anh ta sẽ cần phải học linux nếu anh ta tự mình triển khai các chương trình của mình trên một môi trường sản xuất, có thể là phần lớn thời gian của linux.
dukeofgaming

@dukeofgaming, bạn có thể chạy IIS và PHP không có vấn đề gì. linux sẽ TỐT để học, nhưng cần thiết? không thực sự
Muad'Dib

@dukeofgaming Tôi chưa bao giờ phải triển khai các ứng dụng ASP.NET của mình lên máy chủ linux và tôi nghi ngờ là mình sẽ làm như vậy!
Kirk Broadhurst

29

Nếu bạn là một lập trình viên PHP, bạn chắc chắn nên biết Linux. PHP được tạo trên Linux và PHP là một phần quan trọng của ngăn xếp LAMP: Linux + Apache + MySQL + PHP. Ngay cả khi bạn có cơ hội phát triển cho máy chủ Windows ngay bây giờ, công việc tiếp theo của bạn có thể sẽ giúp bạn phát triển cho máy chủ Linux và bạn sẽ cần phải làm quen với môi trường Linux để bạn không chạy các công cụ cụ thể của Window của PHP.

Trong không gian ứng dụng dành cho thiết bị di động, việc biết rằng Linux sẽ (rất buồn) có chút liên quan đến các môi trường bạn đang phát triển. Hệ điều hành iPhone không liên quan gì đến Linux và Android có hàng rào rất chặt chẽ với một máy ảo, bạn sẽ không bao giờ biết có Linux bên dưới bạn. Bạn có thể lập trình cho Linux trên Meego hoặc Maemo, nhưng những thứ đó không có sự phổ biến của iPhone và Android.

Trong không gian nhúng, bạn phải biết Linux. Windows nhúng là rất hiếm, nhưng Linux nhúng là khá phổ biến. (Tất nhiên, lập trình nhúng kim loại trần cũng khá phổ biến, vì vậy nó phụ thuộc vào nơi bạn muốn đến.)

Nếu bạn học Linux chuyên sâu trong một số năm, bạn sẽ có một số mức độ hiểu biết về mọi bộ phận của hệ thống từ hạt nhân, thông qua quá trình khởi động, cho đến dòng lệnh và GUI.


3
Tôi đồng ý rằng Linux nhúng khá phổ biến đối với các thiết bị 32 bit. Tuy nhiên, phần lớn các micrô nhúng vẫn là 8 và 16 bit, không thể chạy Linux. (Bạn đã ám chỉ điều này trong bình luận "kim loại trần" của mình, tôi chỉ làm rõ một chút.) Thiết bị 32 bit là phân khúc phát triển nhanh nhất mặc dù.
tcrosley

+1 cho ngăn xếp LAMP và không gian nhúng. Rất thích các đề xuất sách của bạn về chủ đề này cho các lập trình viên Unix / Linux mới bắt đầu.
Anthony

17

Có một mức độ nhất định 80/20 suy nghĩ bạn có thể áp dụng ở đây. Thực sự không mất nhiều thời gian để tìm hiểu những điều cơ bản về cách Linux hoạt động và các lệnh cốt lõi mà bạn cần biết từ Shell. Tương tự như vậy, cấu hình Apache cơ bản rất thuận tiện để có nếu bạn cần nó. Bạn không cần phải dành nhiều năm cuộc đời cho nó, nhưng chắc chắn việc học đủ những điều cơ bản mà bạn có thể có được bằng cách chạy máy chủ của riêng bạn là điều đáng làm.

Đó là một dòng tốt mặc dù. Nếu không cẩn thận, bạn có thể nhanh chóng thấy Windows bắt đầu thực sự đánh dấu bạn khi bạn quen với những gì Linux cung cấp ...


12
+1 - không học Linux nếu bạn muốn tiếp tục sử dụng Windows.
Mongus Pong

6
+1 - [giơ tay ngượng ngùng] Ừm. Tên tôi là Inaimathi ... và uhh, tôi là một người dùng Windows trước đây.
Inaimathi

6

Bạn không cần phải học nó nhưng nó sẽ giúp bạn trở thành một lập trình viên tốt hơn. Bạn sẽ học cách làm mọi thứ theo một cách khác với cách của Windows. Việc sử dụng bất kỳ shell * sh nào cuối cùng sẽ dẫn đến kịch bản và sử dụng các biểu thức thông thường, tự động cài đặt, phân tích cú pháp các tệp lớn, v.v.

Tôi không quan tâm đến việc bị chế giễu vì không biết điều đó, cũng như tôi quan tâm đến việc nó tuyệt như thế nào mỗi khi tôi học cách làm một cái gì đó khác trong Linux. Nó chỉ ngày càng tốt hơn với mỗi bit mới.

Powershell có rất nhiều thứ đến từ thế giới nix, cuối cùng họ nhận ra rằng để có sự tự động hóa, bạn cần có một giao diện điều khiển tốt (kudos to MS cho điều đó). Cả Perl và Python dường như là một hỗn hợp của C, bash, sed, awk, tất cả được kết nối thành một điều tốt theo cách riêng của họ.

Ít nhất bạn sẽ có một cái gì đó khác để đưa vào sơ yếu lý lịch của bạn nhưng đó thực sự không phải là điều tốt nhất bạn sẽ thoát khỏi nó.

Tôi chắc chắn bạn sẽ tìm thấy những thứ của riêng bạn sẽ khiến bạn đi: "Wow, thật tuyệt!" Đầu tiên của tôi là có thể "tiêu diệt" Apache bằng tín hiệu USR1 để tải lại tệp cấu hình mới và khởi động lại nhật ký, mà không bao giờ dừng dịch vụ và tiếp tục nhận kết nối. Cũng là ssh và rsync, thật đau buồn tại sao MS không chuyển chúng ra ngoài tôi.


+1 Để hiển thị MS di chuyển theo hướng vỏ và thiếu hoàn toàn làm như vậy!
Orble

4

Nó sẽ không làm tổn thương bạn. Ngay cả trong một công ty của Microsoft, ngày càng có nhiều khả năng bạn sẽ chạy vào ít nhất một vài máy chủ Linux. Ví dụ, Stack Overflow sử dụng Linux cho các bộ cân bằng tải của họ. Điều này đặc biệt đúng khi ảo hóa đi vào chơi.

Là một lập trình viên, bạn có thể làm tốt hơn bằng cách xem xét làm quen với POSIX, không chỉ là một biến thể giống như UNIX. Mặc dù nó có một số điểm kỳ quặc, nhưng nó thể hiện rất nhiều nỗ lực đã đi vào một nỗ lực đáng kinh ngạc để thiết lập một giao diện tiêu chuẩn (hầu hết) có thể di động trên tất cả các môi trường giống như UNIX. Lưu ý, nhiều hệ thống giống như UNIX không phải là "chính xác hoàn toàn" 100%, nhưng đó là một điểm khởi đầu tốt.

Là một người dùng bình thường, tôi chỉ có thể gợi ý rằng thật thú vị khi chọc ngoáy vào một cái gì đó mới và học những điều mới. Tôi đoán có thể là một 'bậc thầy' với mọi hệ điều hành mà người ta có thể nghĩ ra, nhưng tôi không nghĩ đó là nỗ lực hữu ích nhất cho một lập trình viên. Tuy nhiên, một kiến ​​thức làm việc về những thứ mà bạn có thể gặp phải là tốt .. và từ câu hỏi của bạn, bạn dường như sẽ gặp Linux trong tương lai.


+1 kiến ​​thức về linux của tôi (tôi đã quản lý máy chủ web linux trong nhiều năm) đã giúp tôi rất nhiều trong quá trình phát triển "Microsoft" của mình. Trong thực tế, mỗi giải pháp là vấn đề.

Làm quen với một bản phân phối Linux (là một hệ thống phần mềm thực tế mà bạn có thể chơi cùng) và POSIX (một đặc tả trừu tượng) là hai điều rất khác nhau. Nếu bạn làm quen với một HĐH giống Unix hoặc Unix (ngoại trừ phần lớn Mac OSX), bạn sẽ không gặp khó khăn gì khi chuyển kiến ​​thức của mình sang một hệ điều hành khác.
David Thornley

3

Có, nhưng bạn không có vẻ như bạn cần phải tích cực nghiên cứu nó.

Đối với tôi, sự quen thuộc với linux được phát triển thông qua việc sử dụng nó làm hệ điều hành công việc của tôi. Từng mảnh tôi học được những điều tôi cần biết khi chúng xuất hiện, và tiếp tục làm như vậy. Internet có đầy đủ các tài nguyên về cách thực hiện bất cứ thứ gì bạn cần để viết linux, vì vậy thay vào đó tôi sẽ khuyên bạn nên đọc các trang và tài liệu hướng dẫn và để bộ não của bạn tiếp thu (và quên) các chi tiết về cách thực hiện nhiệm vụ cụ thể khi bạn đi .

Điều đó đang được nói rằng chắc chắn có một vài lệnh mà bạn sẽ bị xa lánh khỏi thế giới linux vì không nắm bắt được cơ bản.


3

Trong bốn trong số năm công việc cuối cùng tôi đã làm, các nhà phát triển và QA (ít nhất là bắt đầu) đã làm việc trên Windows, nhưng các máy chủ thử nghiệm và sản xuất là Linux / UNIX. Tất cả trong số họ cần phải biết ít nhất một lượng nhỏ UNIX để ít nhất có thể truy cập vào các máy chủ thử nghiệm và xem nhật ký hoặc gỡ lỗi chương trình đang chạy trong môi trường 'thực'. Rất ít sự phát triển thực sự được dành cho Windows trong các công ty đã hoạt động trong 20 năm qua.

Báo lại những người khác ở đây, rất ít có thể là "cần thiết" cho công việc hoặc sự nghiệp của bạn, nhưng nó sẽ giúp bạn hiểu về công việc của chính bạn, những lợi ích và hạn chế của ngôn ngữ hoặc hệ thống mà bạn đang sử dụng.


2

IMHO, đối với một lập trình viên có năng lực biết Linux / Unix sẽ là bước đệm tuyệt vời cho triết lý Unix thậm chí quan trọng hơn


2

Khi tôi tham gia khóa học Khoa học máy tính của Hệ điều hành, chúng tôi đã nghiên cứu các hệ điều hành dựa trên UNIX và thực hiện công việc của chúng tôi trên RedHat vì nó là nguồn mở và vì chúng tôi có thể thấy mã và vì chúng tôi có thể làm mọi thứ với nó mà không thể thực hiện được Các cửa sổ.

Tôi muốn nói rằng nếu bạn sẽ tìm hiểu các nguyên tắc cơ bản về cách các hệ điều hành hoạt động dưới vỏ bọc, có lẽ bạn nên có một số kinh nghiệm với Linux, ngay cả khi nó chỉ trong một môi trường học thuật.

Tôi vừa chuyển trở lại Windows 7 từ Ubuntu 10.04. Tôi cảm thấy một chút mất mát mà không có grep và một số công cụ dòng lệnh khác. Tôi thích phát triển trong môi trường Linux vì tôi cảm thấy hệ thống này thuận lợi hơn cho người dùng và nhà phát triển.

Tôi biết các lập trình viên .NET rất giỏi, những người đã ra khỏi trường đại học, những người không biết gì về Linux, vì vậy đó không phải là một yêu cầu, nhưng tôi hy vọng bất cứ ai có hơn 5 năm kinh nghiệm lập trình sẽ được tiếp xúc với Linux ở dạng này hay dạng khác thời gian trong sự nghiệp của họ.

Bạn phải là người đánh giá những gì bạn tập trung vào; Tuy nhiên. Nếu hiện tại có một con đường cho bạn phát triển ứng dụng di động và biết rằng Linux không thực sự là một yêu cầu, thì có lẽ bạn tập trung vào tìm hiểu thêm về SDK di động thay vì Linux. Có một sự đánh đổi cho tất cả mọi thứ và có vẻ như bạn có một số tiếp xúc cơ bản với Linux đến nơi bạn có thể tìm hiểu thêm về nó nếu được yêu cầu.


2
Tôi đã luôn có grep et al trên các hộp Windows của mình, chúng là một điều cần thiết.
Orble

1

Có bất kỳ điều sau đây làm phiền bạn?

  1. Bạn không thể / không nên đưa Linux vào sơ yếu lý lịch của mình.
  2. Bạn không đủ điều kiện để làm việc cho một cửa hàng Linux thuần túy.
  3. Nhu cầu công việc hiện tại và mức độ quan tâm của bạn trong việc theo đuổi Linux thông qua tự học là không tồn tại, do đó, tình huống của bạn liên quan đến Linux sẽ không thay đổi.
  4. Các nhà phát triển không phải Windows sẽ chế giễu bạn (Có thể không phải đối mặt với bạn.).

Có rất nhiều cơ hội việc làm và con đường sự nghiệp bạn vẫn có thể theo đuổi. Tôi không nói bất cứ điều gì trong số 'nên' làm phiền bạn. Chỉ cần thành thật với chính mình và để mắt đến ngành công nghiệp nói chung và Linux nói riêng để xem liệu con đường của bạn có thể đi qua hay không. Không có nghi ngờ bạn có thể tìm ra nó khi thời gian đến. Ai biết được, một dự án Linux có thể đến theo cách của bạn vào ngày mai.


1

Tôi đã luôn mã hóa trong môi trường Windows. Đối với tôi, Linux chỉ là một HĐH khác mà tôi có để sao lưu trong trường hợp Windows của tôi gặp sự cố. Tôi chỉ biết các lệnh cơ bản và mọi thứ tôi cố gắng thực hiện trên đó dường như khó khăn. Nhưng bây giờ với công việc hiện tại là một nhà phát triển web, tất cả chúng ta đều sử dụng Linux nên tôi buộc phải học nó và sử dụng nó cho mọi thứ. Tôi càng sử dụng nó, tôi càng thích nó và tôi nghĩ nó hiệu quả và linh hoạt hơn rất nhiều. Tôi rất tiếc vì đã không nhắn tin nhiều hơn với Linux trước đây. Bây giờ tôi mới bắt kịp.

Vì vậy, có, bạn nên học nó bất cứ khi nào bạn có thể.


1

Linux là một công cụ trong hộp công cụ của bạn giống như cách Windows "chỉ" là một công cụ. Thành thạo cả hai cho phép bạn làm một số điều tốt hơn nhưng không liên quan đến những thứ khác.

Cá nhân tôi thấy Linux ở dạng Ubuntu rất hữu ích vì nó cho phép tôi dễ dàng tạo và duy trì những thứ như máy chủ cơ sở dữ liệu, máy chủ thư, máy chủ web thử nghiệm và nhiều hơn nữa trong các máy ảo mà không phải xem xét chi phí giấy phép (cộng với các phiên bản máy chủ yêu cầu ít tài nguyên hơn Windows). Nếu bạn không làm bất cứ điều gì trong số này, tôi không nghĩ Linux sẽ quan trọng với bạn.


0

Biết đủ rằng nếu bạn có ý định triển khai một HĐH cụ thể, thì bạn có thể đảm bảo rằng ứng dụng của bạn hoạt động trên nó, nhưng nếu không ... bạn không phải biết bất cứ điều gì / mọi thứ.


nếu bạn đang triển khai trên một HĐH khác với bạn đã phát triển, bạn có thể cần nhiều kiến ​​thức về HĐH mới. một yếu tố lớn là có bao nhiêu chức năng cấp thấp hơn trong ứng dụng của bạn (nghĩa là - mọi truy cập kiểu cổng nối tiếp)
Patrick

0

Trừ khi tôi đang làm .NET, tôi thích sử dụng Linux. Ngăn xếp LAMP chỉ cảm thấy tự nhiên hơn so với WAMP.

Tôi chắc chắn sẽ khuyên bạn nên học nó nếu bạn có bất kỳ mối quan tâm nào trong việc học một cái gì đó ngoài những thứ của Microsoft.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.