Jak wiersz poleceń Maca różni się od Linuksa?

30

Uwielbiam Ubuntu Linux - szczególnie linię poleceń. Ale muszę przyznać, że przynajmniej na razie system Windows jest bardziej przyjazny dla użytkownika - jest w nim więcej oprogramowania, więcej sterowników i więcej rzeczy po prostu działa.

Wiedząc, że Mac jest zbudowany na Uniksie, zastanawiam się, czy to między nimi najsłodsze miejsce. Ale zastanawiam się: jak podobna jest linia poleceń Maca do bash Linuxa ? Czy mogę od razu zacząć korzystać ze skryptów vim i bash, git itp.? Czy wspólne polecenia, takie jak zmiana katalogów, byłyby inne? Czy ktoś zna internetowy zasób „porównuj i kontrastuj”?

Nathan Long
źródło

Odpowiedzi:

11

Bash to bash, więc powłoka i jej wbudowane elementy są takie same. Pamiętaj jednak, że zachowanie niektórych narzędzi, takich jak pslub, headmoże różnić się szczegółami, dlatego skrypty mogą zawieść.

Cees Timmerman
źródło
5
Pamiętaj, że nie jest to tak bardzo problem Maca i Linuksa, a różne smaki Uniksa robią nieco inny problem. Można znaleźć takie same (a właściwie więcej różnic) między Linuksem a, na przykład, HP-UX.
KeithB
2
Możesz ustandaryzować zestaw narzędzi binutils GNU w Linuksie i OSX. Macports i homebrew zostaną zainstalowane na OSX. To przynajmniej ujednolici rzeczy takie jak ls / tar / etc. ps nadal zależy od systemu operacyjnego.
skarface
także file: file -ina file -Isystemie Linux podczas pracy w systemie OSX ☹️
Anthony Kong
30

Mac OS X to system uniksowy, a jego linia poleceń jest w 99,9% taka sama jak w każdej dystrybucji Linuksa. bashjest twoją domyślną powłoką i możesz skompilować wszystkie te same programy i narzędzia. Nie ma zauważalnej różnicy. Można również znaleźć różne projekty, takie jak MacPorts, które zapewniają zarządzanie pakietami dla komputerów Mac.

w0rm
źródło
1
+1: powyższe jest prawdą. Być może będziesz musiał pamiętać o tym, że Twój Mac używa procesora Intel lub Powerpc, jeśli chodzi o kompilowanie kodu lub korzystanie z gotowych pakietów. Rozumiem, że nowe Mac to tylko dane wywiadowcze, ale mogę się mylić. typo @ w0rm: zarządzanie pakietami *. :-)
Sirex
2
Chociaż twoje skrypty prawdopodobnie będą działać zarówno na Macu, jak i Linuksie, zawsze dobrze jest przetestować je na obu platformach. Widziałem całkiem pewne (subtelne) różnice między dystrybucjami Linuksa, a nawet między różnymi wersjami tej samej wersji Linux.
Roalt
1
Dokładnie FeeBSD.
digitxp
6
@digit, to musi być wersja BSD, za którą pobierają? s / F / Fr /;)
John T
18
99,9% jest niepoprawne. OS X jest wariantem BSD i nie ma narzędzi GNU. Zawsze możesz je zainstalować, ale wiele poleceń ma różne opcje. To Unix, ale nie Linux.
Matteo,
12

Jest bardzo podobny, ale jeśli znasz jakiekolwiek różnice między BSD a Linuksem, spodziewaj się, że Mac zachowa BSD.

Neth
źródło
Ciekawy. Czy możesz rozwinąć więcej na ten temat? Dlaczego?
fat_mike 27.11.16
@ fat_milke, ponieważ OSX używa narzędzi BSD, a nie GNU, których używa
Linix
b / c Mac OSX pochodzący z jądra * nix (NeXTSTEP oparty na BSD), który rozgałęził się na Uniksie wcześniej niż Linux. W rezultacie otrzymali nieco inne implementacje niektórych narzędzi. Zobacz en.wikipedia.org/wiki/MacOS
Nietzsche
9

Kilka rzeczy - to naprawdę zależy od tego, co rozumiesz przez linię poleceń.

  1. Prawdopodobnie uruchomisz bash, który będzie taki sam jak bash na dowolnym innym systemie UNIX. Język programowania bash też będzie taki sam - o ile będzie to ta sama wersja. Wersje Bash mają niewielkie różnice w języku, ale nie ma to nic wspólnego z MacOSX vs. Linux.

Możesz wpaść na to - / bin / bash na komputerze Mac jest przypięty do wersji 3.x ze względów licencyjnych. Mogą wystąpić drobne problemy ze zgodnością, jeśli jesteś przyzwyczajony do 4, a nawet 5.

  1. bash sam w sobie jest małym podzbiorem „linii poleceń”. Aby być użytecznym, zwykle używasz innych popularnych narzędzi UNIX, takich jak awk, ls lub cut. Ze względu na swoją historię (pochodzi od BSD, a nie od Linuksa lub SystemV), wersje narzędzi dla komputerów Mac będą inne niż te, do których przywykłeś w Linuksie (inaczej wersje GNU). Będą one miały co najmniej pewne różnice flag oraz pewne różnice w wydajności i funkcjonalności niż Linux. Skrypty, które ich używają, będą musiały zostać zmienione w celu kompensacji. BSD awk vs GNU gawk jest całkiem inny. LUB, możesz pobrać te wersje GNU z Macports lub domowego browaru i ustawić swoją ŚCIEŻKĘ, aby były to ustawienia domyślne (w porównaniu z wersjami wbudowanymi).

  2. MacOS X ma także kilka nowych fajnych narzędzi. openjest fajny, otworzy obiekt tak, jakbyś go dwukrotnie kliknął. defaultspozwala ustawić niektóre preferencje, niektóre nawet w panelach preferencji GUI. textutilmogą być przydatne i saymogą być zabawne.

Rich Homolka
źródło
3

Funkcje wiersza poleceń w systemach Mac i Linux są rzeczywiście podobne, ponieważ OS X ma smak UNIX (zwany Darwin) pod graficznym interfejsem użytkownika.

Domyślną powłoką w systemie OS X jest bash, więc jeśli znasz się na tym, dobrze się dostosujesz.

Na komputerze Mac domyślną aplikacją wiersza polecenia jest Terminal. Istnieje również wiele innych emulatorów, ale ogólnie Terminal zapewnia bardzo podobny wygląd i działanie do powłoki, do której jesteś przyzwyczajony w Linuksie.

Podstawowym źródłem różnic są jednak:

  • Czasami różne argumenty wiersza poleceń (np. Patrz duna przykład). Do podstawowych komend, takich jak cdlub lsitd. Są podobne.
  • Jest więcej części OS X, których nie należy edytować ręcznie, tak jak w Linuksie. Jest to osobny temat, ale należy pamiętać, że uruchamianie komputera Mac nie jest dokładnie tak samo jak uruchamianie Linux-a pod względem konfiguracji i utrzymania.

Biorąc to pod uwagę, istnieje również wiele fajnych hacków dostępnych z wiersza poleceń w OS X (np. openCommnand). Istnieje wiele poprzednich wątków i postów na blogu z dodatkowymi informacjami.

Można również dostać w swoje ręce na kilka pakietów opensource (tj git, hgetc.) poprzez DarwinPorts, Fink lub kilkoma innymi systemami zarządzania pakietami dla OS X. Można także budować inne pakiety źródłowe przeznaczone dla systemu UNIX / Linux jak systemy jak to konieczne .

dtlussier
źródło
0

Oto jedna różnica. Wypróbuj to polecenie w powłoce bash dla komputerów Mac i Linux

find /etc -name "*.conf"

Mac nie wyświetla nic, mimo że wewnątrz pliku / etc znajduje się dużo plików .conf.

Antony Thomas
źródło
1
Może mógłbyś powiedzieć ludziom, dlaczego tak jest.
Mads,
1
Nie jestem pewien, może ma to związek z rozszerzeniami nazw ścieżek w POSIX. To polecenie działa find /etc/* -name "*.conf". Niemniej jednak podano to jako przykład dla kontrastu wiersza poleceń MAC z wierszem poleceń LINUX. Nie można uzasadnić głosowania na -ve.
Antony Thomas
4
To dlatego, że / etc w OSX jest dowiązaniem symbolicznym. Jeśli spróbujesz find /etc/ -name "*.conf", oznacza to, że / etc jest katalogiem zamiast pliku. Czy findw systemie Linux domyślnie traktuje dowiązania symboliczne do katalogów jako katalogi?
MechEthan