O Linux é um kernel, não possui comandos. Algumas distribuições de software criadas para esse kernel seguem o padrão LSB, outras a política Debian, a maioria outras em particular.
Stéphane Chazelas
@ StéphaneChazelas Embora eu concorde, eu diria que seguir a política Debian está próximo de seguir o LSB, já que o Debian suporta LSB (se não por padrão, ainda via lsbpacote).
Tecnicamente, você não pode assumir nada , porque o Linux-kernel é usado em vários contextos incorporados ou semi-incorporados, nos quais um complemento completo de utilitários de shell seria um desperdício de espaço inútil. Se você está se perguntando o que pode esperar ser instalado em um ambiente de shell compatível com Unix "normal", eu não olharia para POSIX nem LSB, mas para o conjunto de pacotes que o Debian considera "necessários". Muitas ferramentas essenciais de gerenciamento de sistemas, por exemplo, "ip", não são padronizadas.
ar echo hostname more sh
at egrep install mount shutdown
awk fgrep install_initd msgfmt su
batch file ipcrm newgrp sync
bc fuser ipcs od tar
chfn gettext killall passwd umount
chsh grep lpr patch useradd
col groupadd ls pidof userdel
cpio groupdel lsb_release remove_initd usermod
crontab groupmod m4 renice xargs
df groups md5sum sed zcat
dmesg gunzip mknod sendmail
du gzip mktemp seq
Vários programas 'only from LSB' são realmente do POSIX. Isso inclui: awk, grep, sl, sed, sh, xargs, com certeza; Eu teria que verificar ar, at, lote, bc, crontab. Pode haver outros também.
Jonathan Leffler
@JonathanLeffler Devo ter cometido um erro no regex. Vou consertar quando eu puder.
muru
NP. Eu usaria a página de nível superior do POSIX 2008 (2013) ou especificamente a lista de utilitários . Inclui todas as possibilidades que mencionei; Eu também vejo file, ipcrm, ipcs, m4, patch, e zcatlistada - que é uma operação eyeballing em vez de uma verificação formal das listas.
Tecnicamente, você não pode presumir que algo estará presente, porque o Linux-kernel é usado em vários contextos incorporados ou semi-incorporados, nos quais um complemento completo de utilitários de shell seria um desperdício de espaço inútil. Não estaria fora de questão, por exemplo, criar um dispositivo de IoT cujo sistema de arquivos contenha um carregador de inicialização, um kernel monolítico, um costume /sbin/initque faça tudo o que o dispositivo precisará fazer, algumas /deventradas e nada mais .
A especificação POSIX.1-2008 "Shell and Utilities" , também vinculada na resposta do muru, visa padronizar o shell como uma linguagem de programação . Portanto, não inclui a maioria das ferramentas de administração do sistema que se espera estar presentes em uma instalação Unix "tradicional". Infelizmente, essa também é uma cicatriz visível do antigo cisma entre o System V e o BSD - as ferramentas que você encontrará no Linux não são as mesmas do FreeBSD ou OSX ou o que for. Portanto, novamente, não há linha de base confiável.
Para dar uma indicação do que está faltando na resposta de maru, este é o conjunto de pacotes que o Debian (instável) considera "obrigatório" ( definição oficial : "Sistemas com apenas os pacotes necessários provavelmente não podem ser utilizados, mas possuem funcionalidade suficiente para permitir que o administrador do sistema para inicializar e instalar mais software. ") e que contribuem arquivos para /bin, /sbin, /usr/bin, ou /usr/sbin. Os marcados com um asterisco não são apenas "obrigatórios", mas "essenciais", o que significa que outro software em pacote pode assumir sua presença sem depender dele.
¹ awk-the-language é "essencial", mas o administrador do sistema pode escolher se deseja a implementação "mawk" ou "gawk".
E esses são os pacotes considerados "importantes"; a definição oficial de "importante" é "uma pessoa experiente do Unix que achava que estava faltando diria 'O que está acontecendo, onde está o foo?'":
Observe que este segundo conjunto inclui ferramentas críticas de administração do sistema como pse iproute2, mas também coisas que podem ser completamente desnecessárias em algumas instalações, como ate dmidecode. Ambos os conjuntos também contêm coisas específicas do Debian, como dpkge apt.
Observe também que os dois conjuntos juntos não são um superconjunto da funcionalidade exigida pelo LSB (ou POSIX + XSI): esses utilitários estão ausentes:
ar gencat lpr msgfmt strings
bc gettext lsb_release patch strip
ed install_initd m4 pax time
file killall mailx remove_initd
fuser lp make sendmail
A lista de utilitários que estão nos pacotes acima, mas não no LSB, é longa e tediosa, mas eu a incluo de qualquer maneira para ressaltar quantas "ferramentas críticas de administração do sistema" inclui.
Compreensivo. Eu gostaria de observar que o adduser (e família) do Debian é ... do Debian. O Arch usa o Slackware, que é muito diferente. Eu apenas o nomeio, pois não parece específico do Debian, mas é, no entanto, como o ipcomando que você mencionou anteriormente.
No entanto, muitas pessoas tendem a dar uma echo $PATHolhada no conteúdo dos diretórios mostrados e, em seguida, consultam a página de manual para obter mais informações.
A procura nos diretórios informará o que está incluído na sua distribuição específica, não informará o que deveria ser. Como você diria olhando para lá que algo está faltando?
busybox --list
. Só brincando.lsb
pacote).Respostas:
O Linux Standard Base (LSB) possui uma lista de aplicativos :
Muitos deles estão incluídos como parte do padrão POSIX 1003.1-2001 , mas os seguintes são apenas no LSB ou têm especificações diferentes do POSIX:
fonte
file
,ipcrm
,ipcs
,m4
,patch
, ezcat
listada - que é uma operação eyeballing em vez de uma verificação formal das listas.Tecnicamente, você não pode presumir que algo estará presente, porque o Linux-kernel é usado em vários contextos incorporados ou semi-incorporados, nos quais um complemento completo de utilitários de shell seria um desperdício de espaço inútil. Não estaria fora de questão, por exemplo, criar um dispositivo de IoT cujo sistema de arquivos contenha um carregador de inicialização, um kernel monolítico, um costume
/sbin/init
que faça tudo o que o dispositivo precisará fazer, algumas/dev
entradas e nada mais .A especificação POSIX.1-2008 "Shell and Utilities" , também vinculada na resposta do muru, visa padronizar o shell como uma linguagem de programação . Portanto, não inclui a maioria das ferramentas de administração do sistema que se espera estar presentes em uma instalação Unix "tradicional". Infelizmente, essa também é uma cicatriz visível do antigo cisma entre o System V e o BSD - as ferramentas que você encontrará no Linux não são as mesmas do FreeBSD ou OSX ou o que for. Portanto, novamente, não há linha de base confiável.
Para dar uma indicação do que está faltando na resposta de maru, este é o conjunto de pacotes que o Debian (instável) considera "obrigatório" ( definição oficial : "Sistemas com apenas os pacotes necessários provavelmente não podem ser utilizados, mas possuem funcionalidade suficiente para permitir que o administrador do sistema para inicializar e instalar mais software. ") e que contribuem arquivos para
/bin
,/sbin
,/usr/bin
, ou/usr/sbin
. Os marcados com um asterisco não são apenas "obrigatórios", mas "essenciais", o que significa que outro software em pacote pode assumir sua presença sem depender dele.¹ awk-the-language é "essencial", mas o administrador do sistema pode escolher se deseja a implementação "mawk" ou "gawk".
E esses são os pacotes considerados "importantes"; a definição oficial de "importante" é "uma pessoa experiente do Unix que achava que estava faltando diria 'O que está acontecendo, onde está o foo?'":
Observe que este segundo conjunto inclui ferramentas críticas de administração do sistema como
ps
eiproute2
, mas também coisas que podem ser completamente desnecessárias em algumas instalações, comoat
edmidecode
. Ambos os conjuntos também contêm coisas específicas do Debian, comodpkg
eapt
.Observe também que os dois conjuntos juntos não são um superconjunto da funcionalidade exigida pelo LSB (ou POSIX + XSI): esses utilitários estão ausentes:
A lista de utilitários que estão nos pacotes acima, mas não no LSB, é longa e tediosa, mas eu a incluo de qualquer maneira para ressaltar quantas "ferramentas críticas de administração do sistema" inclui.
fonte
ip
comando que você mencionou anteriormente.A lista Wikipedia: de comandos Unix e Linuxconfig: Linux Commands certamente valem uma olhada.
No entanto, muitas pessoas tendem a dar uma
echo $PATH
olhada no conteúdo dos diretórios mostrados e, em seguida, consultam a página de manual para obter mais informações.fonte