$ 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"
Output dari perintah di atas hanya menunjukkan nama kode parsial (yaitu, trusty
). Bagaimana cara saya mendapatkan nama kode lengkap ( tahr terpercaya ) dari sistem Ubuntu yang saya instal?
command-line
release-management
Avinash Raj
sumber
sumber
/etc/os-release
. Mungkin Anda harus menentukan apa yang Anda maksud dengan Bagaimana cara mendapatkan nama kode lengkap (dapat dipercaya) dari sistem Ubuntu yang saya instal? . Apakah Anda hanya ingin menggemakannya di terminal, atau Anda memerlukannya untuk variabel? Apakah ini akan digunakan pada beberapa sistem non-{Ubuntu, Debian}?Jawaban:
Tidak menggunakan alat eksternal:
Anda bisa sumber (perintah sumber adalah titik
.
)/etc/os-release
dan Anda akan memiliki akses ke semua variabel yang didefinisikan di sana:Edit. Jika Anda ingin menghapus
14.04,
bagian (seperti yang diminta oleh terdon), Anda dapat:Perhatikan bahwa ini agak kikuk, karena pada distribusi lain,
VERSION
bidang dapat memiliki format berbeda. Misalnya, pada debian saya,Kemudian, Anda dapat membayangkan sesuatu seperti ini (dalam sebuah skrip):
sumber
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
?;D
.Varian saya tentang apa yang sudah ditawarkan:
Jawaban Bashiest terpendek hingga saat ini.
Jika Anda tidak ingin memuat
/etc/os-release
konten ke lingkungan Anda saat ini, Anda dapat memalsukan bash dengan menganggapnya memuat skrip dengan cukup mudah:sumber
:D
.( . /etc/os-release && echo ${VERSION/*, /} )
.Grep:
Penjelasan:
lsb_release -rs
-> Mencetak versi Ubuntu yang Anda instal.grep $(lsb_release -rs) /usr/share/python-apt/templates/Ubuntu.info
-> Ambil semua baris yang berisi versi rilis Anda, dalam kasus saya ini 14,04.grep -m 1 "Description: Ubuntu "
-> Sekali lagi hanya meraih baris pertama yang cocok (karena-m
bendera) yang berisi stringDescription: Ubuntu
.cut -d "'" -f2
-> mencetak angka bidang 2 sesuai dengan tanda kutip tunggal pembatas'
Awk:
Penjelasan:
Mendeklarasikan dan menugaskan Variabel dalam awk dilakukan melalui
-v
parameter. Jadi nilailsb_release -rs
perintah ditugaskan ke variabelvar
yang inturn membantu untuk mencetak bidang 4, bidang 5 dari garis berisi string14.04
dan ada jika ditemukan satu. Akhirnyacut
perintah membantu untuk hapus tanda kutip tunggal.sumber
Perintah yang Anda cari adalah:
Ini sangat jelek dan tidak dioptimalkan. Saya yakin harus ada metode yang lebih mudah dan ini memiliki beberapa masalah.
sumber
sumber
Berikut ini beberapa pilihan. Mereka semua menguraikan
/etc/os-release
file yang, pada 13,10 saya, terlihat seperti ini:Semua solusi di bawah ini akan menguraikan lini kedua untuk diproduksi
Saucy Salamander
.grep
The
-o
berarti "mencetak hanya bagian pencocokan dari garis" dan-P
memungkinkan Perl Regular Expressions Kompatibel. Hal ini memungkinkan kita menggunakan\K
yang membuang apa pun yang cocok sampai saat itu, yang dikombinasikan dengan-o
cara "mencetak hanya apa yang cocok setelah itu\K
. Jadi, ekspresi reguler yang sebenarnya digunakan akan cocok dengan dua kata terakhir dari baris yang berisiVERSION=
.awk
Mengatur pemisah bidang ke
"
danspace
berarti bidang 3d dan 4 dari baris yang berisiVERSION=
adalah string yang kita kejar.sed
The
-n
beralih Menekan output normal, tidak ada garis akan dicetak. The-r
memungkinkan diperpanjang ekspresi reguler. Kemudian, pada baris yang cocokVERSION=
, kami akan menghapus semuanya kecuali dua kata terakhir. Dip
bagian akhir berarti cetak.perl
The
-n
means 'memproses setiap baris input dengan script yang diberikan oleh-e
".-l
Menambahkan karakter baris baru untuk setiap panggilan cetak (dan beberapa hal lain yang tidak relevan di sini). Ekspresi reguler cocok dengan dua kata terakhir (\b
adalah batas kata) dan mencetaknya jika garis berisiVERSION=
.coreutils
Di sini, kami hanya
grep
baris yang relevan dan menggunakancut
pengaturan pemisah bidang kespace
(-d ' '
) dan mencetak semuanya dari bidang ke-2 hingga akhir baris. Thetr -d
perintah akan menghapus"
dari akhir.Shell murni (tanpa malu-malu mencuri
source
ide pintar @ gniourf_gniourf ):The
.
sumber file yang membuat variabel tersedia untuk shell dan saya menggunakan bash manipulasi string kemampuan untuk menghapus nomor versi.sumber
Menggunakan regex Anda bisa melakukan ini:
Penjelasan:
Ini mencari baris dengan
VERSION
dalam file/etc/os-release
. Kemudian ia menemukan 2 kata berturut-turut yang dipisahkan oleh spasi (Perl regex). Bendera -o hanya menyimpan apa yang cocok dengan pencarian.Anda harus menggunakan
[a-zA-Z]
alih-alih `w` untuk menghindari termasuk digit.sumber