$ lsb_release -c
Codename: trusty
$ cat /etc/issue
Ubuntu 14.04 LTS \n \l
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
Les sorties des commandes ci-dessus ne montrent que le nom de code partiel (c'est-à-dire trusty
). Comment obtenir le nom de code complet ( trusty tahr ) de mon système Ubuntu installé?
command-line
release-management
Avinash Raj
la source
la source
/etc/os-release
. Peut-être vous devriez préciser ce que vous entendez par Comment puis-je obtenir le plein nom de code (de tahr fidèle) de mon système installé Ubuntu? . Voulez-vous seulement le répercuter sur le terminal ou avez-vous besoin qu'il soit assigné à une variable? Est-ce que cela va être utilisé sur des systèmes non {Ubuntu, Debian}?Réponses:
Ne pas utiliser d'outils externes:
Vous pouvez simplement source (la commande source est un point
.
)/etc/os-release
et vous aurez accès à toutes les variables définies ici:Modifier. Si vous souhaitez supprimer la
14.04,
pièce (comme demandé par terdon), vous pouvez:Notez que c'est un peu maladroit, car sur d'autres distributions, le
VERSION
champ peut avoir un format différent. Par exemple, sur mon debian,Ensuite, vous pouvez imaginer quelque chose comme ceci (dans un script):
la source
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
?;D
.Ma variante sur ce qui est déjà offert:
La réponse la plus courte et la plus modeste à ce jour.
Si vous ne vous souciez pas de charger
/etc/os-release
le contenu dans votre environnement actuel, vous pouvez simuler bash en pensant qu'il charge un script assez facilement:la source
:D
.( . /etc/os-release && echo ${VERSION/*, /} )
.Grep:
Explication:
lsb_release -rs
-> Imprime la version de votre Ubuntu installée.grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info
-> Prenez toutes les lignes contenant votre version, dans mon cas, il s’agit de 14.04.grep -m 1 "Description: Ubuntu "
-> Encore une fois, saisit uniquement la première ligne correspondante (en raison de l'-m
indicateur) qui contient la chaîneDescription: Ubuntu
.cut -d "'" -f2
-> imprime le champ numéro 2 en fonction du guillemet simple du séparateur'
Awk:
Explication:
La déclaration et l’affectation de variable dans awk sont effectuées via le
-v
paramètre. Ainsi, la valeur delsb_release -rs
commande est affectée à la variablevar
qui aide à imprimer le champ 4, le champ 5 à partir des lignes contient la chaîne14.04
et existe si sa valeur est trouvée.cut
commande aide à supprimer les guillemets simples.la source
La commande que vous recherchez est:
C'est très moche et pas optimisé. Je suis sûr qu'il devrait y avoir une méthode plus facile et cela a quelques problèmes.
la source
la source
Voici quelques autres choix. Ils analysent tous le
/etc/os-release
fichier qui ressemble à ceci sur ma 13.10:Toutes les solutions ci-dessous analyseront la deuxième ligne à produire
Saucy Salamander
.grep
Les
-o
moyens "imprimer uniquement la partie correspondante de la ligne" et-P
activent les expressions régulières compatibles Perl. Cela nous permet d’utiliser\K
ce qui a été mis en correspondance jusqu’à ce point, ce qui, combiné avec le-o
mot "imprimer uniquement ce qui correspond après le\K
." Ainsi, l’expression régulière utilisée correspondra aux deux derniers mots d’une ligne qui contientVERSION=
.awk
Définir le séparateur de champs sur
"
etspace
signifie que les champs 3d et 4ème de la ligne contenantVERSION=
sont la chaîne que nous recherchons.sed
Le
-n
commutateur supprime la sortie normale, aucune ligne ne sera imprimée. Le-r
permet aux expressions régulières étendues. Ensuite, sur les lignes qui correspondentVERSION=
, nous supprimerons tout sauf les deux derniers mots. Lap
fin signifie impression.perl
Le
-n
moyen "traite chaque ligne d'entrée avec le script donné par-e
". Il-l
ajoute un caractère de nouvelle ligne à chaque appel d'impression (et d'autres éléments non pertinents ici). L'expression régulière correspond aux deux derniers mots (\b
est une limite de mot) et les imprime si la ligne contientVERSION=
.coreutils
Ici, nous nous contentons de
grep
la ligne appropriée et utilisons lecut
paramétrage du séparateur de champs surspace
(-d ' '
) et l’impression de tout, du deuxième champ à la fin de la ligne. Latr -d
commande supprimera le"
de la fin.Coquille pure (voler sans vergogne l'
source
idée intelligente de @ gniourf_gniourf ):Les
.
sources du fichier qui met les variables à la disposition du shell et j'utilise les capacités de manipulation de chaînes de bash pour supprimer les numéros de version.la source
En utilisant regex, vous pouvez faire ceci:
Explication:
Ceci recherche la ligne
VERSION
dans le fichier/etc/os-release
. Ensuite, il trouve 2 mots successifs séparés par un espace (expression rationnelle Perl). Le drapeau -o ne garde que ce qui correspond à la recherche.Vous devez utiliser
[a-zA-Z]
au lieu de `w` pour éviter d'inclure des chiffres.la source