Bagaimana baris perintah Mac dibandingkan dengan Linux?

30

Saya suka Ubuntu Linux - terutama baris perintah. Tetapi saya harus mengakui bahwa, setidaknya untuk saat ini, Windows lebih ramah pengguna - ada lebih banyak perangkat lunak untuk itu, lebih banyak driver, dan lebih banyak hal berfungsi.

Mengetahui bahwa Mac dibangun di atas Unix membuat saya bertanya-tanya apakah itu adalah sweet spot di antara mereka. Tapi saya bertanya-tanya: seberapa miripkah baris perintah Mac dengan bash Linux ? Bisakah saya mengambil dengan menggunakan vim dan bash scripting dan git, dll? Apakah perintah umum seperti mengubah direktori akan berbeda? Adakah yang tahu sumber daya "perbandingan dan kontras" online?

Nathan Long
sumber

Jawaban:

11

Bash adalah bash sehingga shell dan built-innya sama. Namun perlu diketahui bahwa perilaku beberapa alat suka psatau headbisa berbeda dalam detail sehingga skrip Anda mungkin gagal.

Cees Timmerman
sumber
5
Ingatlah bahwa ini bukan masalah Mac vs Linux, daripada berbagai rasa unix melakukan hal-hal masalah yang sedikit berbeda. Anda akan menemukan yang sama (sebenarnya lebih banyak perbedaan) antara Linux dan, misalnya, HP-UX.
KeithB
2
Anda dapat membakukan pada gnu binutils toolset di linux dan OSX. Macports dan homebrew keduanya akan diinstal pada OSX. Setidaknya ini akan menstandarkan hal-hal seperti ls / tar / dll. ps masih tergantung OS.
skarface
juga file: file -idi linux saat file -Idi osx ☹️
Anthony Kong
30

Mac OS X adalah OS Unix dan baris perintahnya 99,9% sama dengan distribusi Linux apa pun. bashadalah shell default Anda dan Anda dapat mengkompilasi semua program dan utilitas yang sama. Tidak ada perbedaan mencolok. Anda juga dapat menemukan berbagai proyek seperti MacPorts yang menyediakan manajemen paket untuk Mac.

w0rm
sumber
1
+1: hal di atas benar. Anda mungkin perlu mengingat cuaca mac Anda menggunakan intel atau prosesor powerpc ketika datang untuk mengkompilasi kode atau menggunakan paket pra-dibangun, saya mengerti mac baru hanya intel tetapi saya mungkin salah. typo @ w0rm: manajemen paket *. :-)
Sirex
2
Meskipun skrip Anda mungkin akan berfungsi untuk Mac dan Linux, selalu bijaksana untuk mengujinya di kedua platform. Saya telah melihat beberapa perbedaan (halus) antara distribusi linux dan bahkan antara versi berbeda dari versi linux yang sama.
Roalt
1
FeeBSD tepatnya.
digitxp
6
@ Digigit, itu pasti versi BSD yang mereka tetapkan? s / F / Fr /;)
John T
18
99,9% tidak benar. OS X adalah varian BSD dan tidak memiliki utilitas GNU. Anda selalu dapat menginstalnya tetapi banyak perintah memiliki opsi berbeda. Ini Unix tetapi bukan Linux.
Matteo
12

Ini sangat mirip, tetapi jika Anda mengetahui adanya perbedaan BSD v. Linux, perkirakan Mac memiliki perilaku BSD.

Neth
sumber
Menarik. Bisakah Anda menguraikan lebih lanjut tentang itu? Mengapa demikian?
fat_mike
@fat_milke karena OSX menggunakan utilitas BSD bukan GNU yang digunakan Linix
Tandai
b / c Mac OSX berasal dari kernel * nix (NeXTSTEP berdasarkan BSD) yang bercabang dari Unix lebih awal dari Linux. Dengan demikian, mereka berakhir dengan implementasi yang sedikit berbeda dari beberapa utiliti. Lihat en.wikipedia.org/wiki/MacOS
Nietzsche
9

Beberapa hal - itu benar-benar tergantung pada apa yang Anda maksud dengan baris perintah.

  1. Anda mungkin akan menjalankan bash, yang akan sama dengan bash di UNIX lainnya. Bahasa pemrograman bash akan sama juga - selama itu versi yang sama. Versi Bash memiliki sedikit perbedaan dalam bahasa, tetapi ini tidak ada hubungannya dengan MacOSX vs Linux per se.

Anda mungkin benar-benar bertemu dengan ini - / bin / bash pada Mac disematkan ke 3.x untuk alasan lisensi. Anda mungkin menemukan masalah kompatibilitas kecil jika Anda terbiasa dengan 4 atau bahkan 5.

  1. bash dengan sendirinya adalah bagian kecil dari 'command line'. Agar bermanfaat, Anda biasanya menggunakan beberapa utilitas UNIX umum lainnya seperti awk, atau ls, atau cut. Karena sejarahnya (ini diturunkan dari BSD, bukan Linux atau SystemV), versi utilitas Mac akan berbeda dari yang biasa Anda gunakan di Linux (alias versi GNU). Ini akan memiliki setidaknya beberapa perbedaan flag, dan beberapa perbedaan output dan fungsi dari Linux. Skrip yang menggunakan ini harus diubah untuk mengganti rugi. BSD awk vs GNU gawk sangat berbeda. ATAU, Anda bisa mendapatkan versi GNU ini dari macports atau minuman buatan sendiri, dan atur PATH Anda sehingga ini adalah default (lebih dari versi bawaan).

  2. MacOS X juga memiliki beberapa alat keren baru. openbagus, itu akan membuka objek seolah-olah Anda mengklik dua kali. defaultsmemungkinkan Anda untuk mengatur beberapa preferensi, beberapa bahkan tidak di panel preferensi GUI. textutilbisa bermanfaat dan saybisa menyenangkan.

Homolka yang kaya
sumber
3

Fungsionalitas baris perintah pada Mac dan Linux memang serupa karena OS X memiliki cita rasa UNIX (disebut Darwin) di bawah GUI yang Anda lihat.

Shell default pada OS X adalah bash, jadi jika Anda terbiasa dengan itu Anda akan menyesuaikan dengan baik.

Pada Mac, aplikasi baris perintah default adalah Terminal. Ada juga sejumlah emulator lain di luar sana, tetapi keseluruhan Terminal memberikan tampilan dan nuansa yang sangat mirip dengan shell yang biasa Anda gunakan di Linux.

Sumber utama perbedaan adalah:

  • Argumen baris perintah yang berbeda di kali (yaitu lihat dumisalnya). Perintah utama seperti cdatau lsdll serupa.
  • Ada lebih banyak bagian OS X yang tidak boleh diedit dengan tangan seperti yang Anda lakukan di Linux. Ini adalah topik tersendiri, tetapi perlu diketahui bahwa menjalankan Mac tidak persis seperti menjalankan kotak Linux dalam hal konfigurasi dan pemeliharaan.

Yang sedang berkata ada juga banyak hack keren yang tersedia dari baris perintah di OS X (mis. openCommnand). Ada banyak utas dan posting blog sebelumnya di luar sana dengan info lebih lanjut.

Anda juga bisa mendapatkan banyak paket opensource (mis git. hg, Dll.) Melalui MacPorts, Fink atau beberapa sistem manajemen paket lain untuk OS X. Anda juga dapat membuat paket sumber lain yang ditujukan untuk sistem UNIX / Linux seperti yang diperlukan. .

dtlussier
sumber
0

Inilah satu perbedaan. Coba perintah ini di shell bash Mac dan Linux

find /etc -name "*.conf"

Mac tidak menampilkan apa-apa, walaupun ada banyak file .conf di dalam / etc.

Antony Thomas
sumber
1
Mungkin Anda bisa memberi tahu orang-orang mengapa ini terjadi.
Mads
1
Tidak yakin, mungkin itu ada hubungannya dengan ekspansi pathname di POSIX. Perintah ini berfungsi find /etc/* -name "*.conf". Namun demikian, itu diberikan sebagai contoh untuk membedakan baris perintah MAC dengan baris perintah LINUX. Tidak dapat memberikan alasan untuk memilih.
Antony Thomas
4
Itu karena / etc pada OSX adalah tautan simbolik. Jika Anda mencobanya find /etc/ -name "*.conf"menunjukkan / etc adalah direktori, bukan file. Apakah finddi Linux memperlakukan tautan simbolis ke direktori sebagai direktori secara default?
MechEthan