Uso o Ubuntu há quatro anos.
Tenho um conhecimento básico de comandos do shell e prefiro trabalhar em um terminal em vez de usar uma GUI. Recentemente, comecei a usar um Mac.
Eu tentei alguns comandos de terminal (que uso no Ubuntu) no terminal Mac e parece responder da mesma maneira.
Há alguma diferença significativa nos comandos que uso, nas tarefas que executam ou no ambiente de shell do qual devo estar ciente?
Respostas:
Se você fez uma instalação nova ou limpa do OS X versão 10.3 ou mais recente, o shell do terminal do usuário padrão é bash.
O Bash é essencialmente uma versão freeware GNU aprimorada do shell Bourne original, sh. Se você tiver experiência anterior com bash (geralmente o padrão em instalações GNU / Linux), isso torna a experiência de linha de comando do OS X familiar, caso contrário, considere mudar seu shell para tcsh ou zsh, já que alguns acham isso mais amigável.
Se você atualizou ou usa o OS X versão 10.2.x, 10.1.x ou 10.0.x, o shell do usuário padrão é tcsh, uma versão aprimorada do csh ('c-shell'). As primeiras implementações eram um pouco problemáticas e a sintaxe de programação um pouco estranha, por isso desenvolveu uma má reputação.
Ainda existem algumas diferenças fundamentais entre mac e linux como Gordon Davisson lista tão apropriadamente, por exemplo, não
useradd
no Mac eifconfig
funciona de maneira diferente.A tabela a seguir é útil para conhecer os vários shells do Unix.
Você também pode achar estes guias úteis:
http://homepage.mac.com/rgriff/files/TerminalBasics.pdf
http://guides.macrumors.com/Terminal
http://www.ofb.biz/safari/article/476.html
Para finalizar, estou no Linux (Ubuntu 11) e no Mac osX, então uso o bash e o que mais gosto é de customizar o arquivo .bashrc (fonte do
.bash_profile
OSX) com aliases, alguns exemplos abaixo. Agora coloquei todos os meus aliases em um arquivo .bash_aliases separado e o incluí com:no arquivo .bashrc ou .bash_profile.
Observe que este é um exemplo de uma diferença mac-linux porque em um Mac você não pode ter o
--color=auto
. A primeira vez que fiz isso (sem saber) redefini-ls
me como inválido, o que foi um pouco alarmante até que removi--auto-color
!Você também pode achar https://unix.stackexchange.com/q/127799/10043 útil
fonte
zsh
da conclusão da classe Java padrão.ls
Linux (--color=all
) e OSX (-G
) com o seguinte:ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
A resposta de @Michael Durrant cobre habilmente o shell em si, mas o ambiente do shell também inclui os vários comandos que você usa no shell e eles serão semelhantes - mas não idênticos - entre o OS X e o Linux. Em geral, ambos terão os mesmos comandos e recursos principais (especialmente aqueles definidos no padrão Posix), mas muitas extensões serão diferentes.
Por exemplo, os sistemas Linux geralmente têm um
useradd
comando para criar novos usuários, mas o OS X não. No OS X, você geralmente usa a GUI para criar usuários; se você precisar criá-los na linha de comando, usedscl
(o que o Linux não tem) para editar o banco de dados do usuário (veja aqui ). (Atualização: a partir do macOS High Sierra v10.13, você pode usar em seusysadminctl -addUser
lugar.)Além disso, alguns comandos que eles têm em comum terão diferentes recursos e opções. Por exemplo, os linuxes geralmente incluem GNU
sed
, que usa a-r
opção de invocar expressões regulares estendidas; no OS X, você usaria a-E
opção para obter o mesmo efeito. Da mesma forma, no Linux, você pode usarls --color=auto
para obter saída colorida; no macOS, o equivalente mais próximo éls -G
.EDITAR: Outra diferença é que muitos comandos do Linux permitem que opções sejam especificadas após seus argumentos (por exemplo
ls file1 file2 -l
), enquanto a maioria dos comandos do OS X requerem que as opções venham estritamente primeiro (ls -l file1 file2
).Finalmente, como o próprio sistema operacional é diferente, alguns comandos acabam se comportando de maneira diferente entre os sistemas operacionais. Por exemplo, no Linux, você provavelmente usaria
ifconfig
para alterar a configuração da rede. No OS X,ifconfig
funcionará (provavelmente com sintaxe um pouco diferente), mas suas alterações provavelmente serão sobrescritas aleatoriamente pelo daemon de configuração do sistema; em vez disso, você deve editar as preferências de rede comnetworksetup
e deixar o daemon de configuração aplicá-las ao estado de rede ativo.fonte