Làm thế nào để dòng lệnh của Mac so với Linux?


30

Tôi yêu Ubuntu Linux - đặc biệt là dòng commmand. Nhưng tôi phải thừa nhận rằng, ít nhất là bây giờ, Windows thân thiện với người dùng hơn - có nhiều phần mềm hơn cho nó, nhiều trình điều khiển hơn và nhiều thứ khác chỉ hoạt động.

Biết rằng Mac được xây dựng trên Unix khiến tôi tự hỏi liệu đó có phải là điểm ngọt ngào giữa chúng không. Nhưng tôi tự hỏi: dòng lệnh Mac tương tự như bash của Linux như thế nào? Tôi có thể chọn đúng bằng cách sử dụng vim và bash scripting và git, v.v.? Các lệnh phổ biến như thay đổi thư mục sẽ khác nhau? Có ai biết tài nguyên "so sánh và tương phản" trực tuyến không?


Câu trả lời:


11

Bash là bash nên shell và các phần dựng sẵn của nó là như nhau. Nhưng hãy lưu ý rằng hành vi của một số công cụ như pshoặc headcó thể khác nhau trong các chi tiết do đó tập lệnh của bạn có thể thất bại.


5
Hãy nhớ rằng đây không phải là vấn đề của Mac so với Linux, hơn là một hương vị khác nhau của unix làm mọi thứ hơi khác một chút. Bạn sẽ tìm thấy sự giống nhau (thực sự khác biệt hơn) giữa Linux và, ví dụ, HP-UX.
KeithB

2
Bạn có thể tiêu chuẩn hóa trên bộ công cụ gut binutils trên linux và OSX. Macports và homebrew đều sẽ cài đặt trên OSX. Điều này ít nhất sẽ tiêu chuẩn hóa những thứ như ls / tar / vv. ps vẫn phụ thuộc hệ điều hành.
skarface 17/2/2015

cũng file: file -itrên linux khi đang file -Iở osx ☹️
Anthony Kong

30

Mac OS X là hệ điều hành Unix và dòng lệnh của nó giống 99,9% so với bất kỳ bản phân phối Linux nào. bashlà vỏ mặc định của bạn và bạn có thể biên dịch tất cả các chương trình và tiện ích tương tự. Không có sự khác biệt đáng chú ý. Bạn cũng có thể tìm thấy các dự án khác nhau như MacPorts cung cấp quản lý gói cho Mac.


1
+1: những điều trên là đúng. Bạn có thể cần lưu ý thời tiết máy mac của bạn sử dụng bộ xử lý intel hoặc powerpc khi biên dịch mã hoặc sử dụng các gói dựng sẵn, tôi hiểu máy Mac mới chỉ là intel nhưng tôi có thể sai. typo @ w0rm: gói * quản lý. :-)
Sirex

2
Mặc dù các tập lệnh của bạn có thể sẽ hoạt động cho cả Mac và Linux, nhưng luôn luôn khôn ngoan khi kiểm tra chúng trên cả hai nền tảng. Tôi đã thấy khá nhiều sự khác biệt (tinh tế) giữa các bản phân phối linux và thậm chí giữa các phiên bản khác nhau của cùng một phiên bản linux.
Roalt

1
Chính xác là PhíBSD.
chữ sốxp

6
@digit, đó phải là phiên bản BSD mà họ tính phí? s / F / Fr /;)
John T

18
99,9% không đúng. OS X là biến thể BSD và không có tiện ích GNU. Bạn luôn có thể cài đặt chúng nhưng rất nhiều lệnh có các tùy chọn khác nhau. Đó là Unix nhưng không phải Linux.
Matteo

12

Nó rất giống nhau, nhưng nếu bạn biết về bất kỳ sự khác biệt nào của BSD v. Linux, hãy mong đợi Mac có hành vi BSD.


Hấp dẫn. Bạn có thể giải thích thêm về điều đó? Tại sao vậy?
fat_mike

@fat_milke vì OSX sử dụng các tiện ích BSD chứ không phải GNU mà Linix sử dụng
user151019

b / c Mac OSX có nguồn gốc từ hạt nhân * nix (NeXTSTEP dựa trên BSD) phân nhánh từ Unix sớm hơn Linux. Vì vậy, họ đã kết thúc với việc triển khai một số khác nhau của một số dụng cụ. Xem en.wikipedia.org/wiki/MacOS
Nietzsche


9

Một vài điều - nó thực sự phụ thuộc vào ý nghĩa của bạn bằng dòng lệnh.

  1. Bạn có thể sẽ chạy bash, nó sẽ giống như bash trên bất kỳ UNIX nào khác. Ngôn ngữ lập trình bash cũng sẽ giống nhau - miễn là cùng một phiên bản. Các phiên bản Bash có sự khác biệt nhỏ về ngôn ngữ, nhưng điều này không liên quan gì đến MacOSX so với Linux mỗi se.

Bạn thực sự có thể va vào cái này - / bin / bash trên máy Mac được ghim thành 3.x vì lý do cấp phép. Bạn có thể tìm thấy các sự cố tương thích nhỏ nếu bạn đã sử dụng đến 4 hoặc thậm chí 5.

  1. bash by chính nó là một tập hợp con nhỏ của 'dòng lệnh'. Để có ích, bạn thường sử dụng một số tiện ích UNIX phổ biến khác như awk hoặc ls hoặc cut. Do lịch sử của nó (xuất phát từ BSD, không phải Linux hay SystemV), các phiên bản tiện ích Mac sẽ khác với các phiên bản bạn đã sử dụng trên Linux (còn gọi là phiên bản GNU). Chúng sẽ có ít nhất một số khác biệt về cờ và một số khác biệt về đầu ra và chức năng so với Linux. Các tập lệnh sử dụng chúng sẽ phải được thay đổi để bù lại. BSD awk vs GNU gawk khá khác nhau. HOẶC, bạn có thể nhận các phiên bản GNU này từ macports hoặc nhà pha chế tại nhà và đặt PATH của bạn sao cho đây là các mặc định (trên các phiên bản được tích hợp sẵn).

  2. MacOS X cũng có một số công cụ thú vị mới. openlà tốt đẹp, nó sẽ mở đối tượng như thể bạn nhấp đúp vào nó. defaultscho phép bạn đặt một số tùy chọn, một số thậm chí không có trong bảng tùy chọn GUI. textutilcó thể hữu ích và saycó thể vui vẻ


3

Chức năng dòng lệnh trên Mac và Linux thực sự giống nhau vì OS X có hương vị của UNIX (được gọi là Darwin) bên dưới GUI mà bạn thấy.

Shell mặc định trên OS X là bash, vì vậy nếu bạn quen với điều đó, bạn sẽ điều chỉnh độc đáo.

Trên máy Mac, ứng dụng dòng lệnh mặc định là Terminal. Ngoài ra còn có một số trình giả lập khác ngoài đó, nhưng tổng thể Terminal cung cấp giao diện rất giống với shell mà bạn quen dùng trong Linux.

Nguồn chính của sự khác biệt là:

  • Các đối số dòng lệnh khác nhau tại các thời điểm (ví dụ xem duví dụ). Các lệnh chính như cdhoặc lsvv là tương tự.
  • Có nhiều phần của OS X không nên chỉnh sửa bằng tay như bạn có thể làm trong Linux. Đây là một chủ đề của riêng nó, nhưng chỉ cần lưu ý rằng việc chạy Mac không hoàn toàn giống như chạy một hộp Linux về mặt cấu hình và bảo trì.

Điều đó đang được nói rằng cũng có rất nhiều hack thú vị có sẵn từ dòng lệnh trong OS X (ví dụ: opencommnand). Có rất nhiều chủ đề và bài viết blog trước đó với nhiều thông tin hơn.

Bạn cũng có thể nắm trong tay một loạt các gói mã nguồn mở (ví dụ git: hgv.v.) thông qua MacPorts, Fink hoặc một vài hệ thống quản lý gói khác cho OS X. Bạn cũng có thể xây dựng các gói nguồn khác dành cho hệ thống UNIX / Linux như cần thiết .


0

Đây là một sự khác biệt. Hãy thử lệnh này trong cả bash shell Mac và Linux

find /etc -name "*.conf"

Mac không hiển thị gì cả, mặc dù có rất nhiều tệp .conf bên trong / etc.


1
Có lẽ bạn có thể nói với mọi người tại sao điều này là.
Mads

1
Không chắc chắn, có lẽ nó đã được thực hiện với việc mở rộng tên đường dẫn trong POSIX. Lệnh này hoạt động find /etc/* -name "*.conf". Tuy nhiên, điều đó đã được cung cấp như một ví dụ để tương phản dòng lệnh MAC với dòng lệnh LINUX. Không thể lý do một phiếu bầu -ve.
Antony Thomas

4
Đó là bởi vì / etc trên OSX là một liên kết tượng trưng. Nếu bạn thử find /etc/ -name "*.conf"nó chỉ ra / etc là một thư mục thay vì một tập tin. Có phải findtrong Linux coi các liên kết tượng trưng đến các thư mục là các thư mục theo mặc định?
MechEthan
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.