Saya baru di dunia komputasi. Saat memasang ROS Indigo, langkah pertama mengarahkan saya untuk menggunakan kode berikut:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
Mengapa kita menggunakan echo
perintah bersama sh -c
dalam konteks ini? Saya telah melihat penggunaan perintah echo dalam proses instalasi lain juga.
Catatan - Penggunaan perintah sh , ROS Indigo Installation Wiki
Jawaban:
Biasanya fungsi
echo
perintah adalah untuk menampilkan string (sepotong teks) pada konsol. Tapi kali ini,>
karakter ditambahkan setelahecho
perintah, mengarahkan outputnya ke file teks/etc/apt/sources.list.d/ros-latest.list
,.Jadi pada dasarnya, seluruh perintah ini menulis sepotong teks ke file teks. Sekarang, inilah bagian yang sulit:
String yang ditulis ke file mungkin berbeda untuk setiap komputer. Bagian
$(lsb_release -sc)
ini diselesaikan (diubah menjadi sesuatu yang lain) ketikaecho
perintah dijalankan.Anda dapat membuka
/etc/apt/sources.list.d/ros-latest.list
editor teks sebelum dan sesudah perintah untuk melihat perubahannya sendiri. (File mungkin tidak ada sebelum perintah ini.)sumber
>
menimpa file teks,>>
menambahkan sampai akhir.echo
menulis ke output standar, bukan konsol.echo
menulis ke konsol.Manajemen Paket dan Repositori Perangkat Lunak
Distribusi Linux berbasis Debian mengandalkan repositori (database paket instalasi aplikasi dan paket peningkatan) untuk menjaga sistem operasi diperbarui dan juga untuk dengan mudah mengambil dan menginstal paket perangkat lunak baru. Lokasi repositori ini disimpan
/etc/apt/sources.list
, namun sumber tambahan, biasanya unik untuk aplikasi tertentu dapat disimpan dalam/etc/apt/sources.list.d
direktori.Ketika perintah pembaruan indeks paket
apt-get update
dijalankan, sistem operasi Anda memeriksa dengan repositori paket ini untuk paket yang tersedia dan mendaftarkan perangkat lunak yang tersedia sebagai tersedia untuk sistem operasi Anda yang dapat Anda lanjutkan untuk menginstal menggunakanapt-get install <package>
perintah tradisional .Contoh dari salah satu sumber perangkat lunak ini adalah:
Penting bagi sumber-sumber ini untuk merujuk versi distribusi linux tertentu. Contohnya adalah trusty yang merupakan nama kode untuk Ubuntu 14.04. Anda dapat meminta OS Anda (berbasis debian) untuk detail lengkap dengan
lsb_release -a
ataulsb_release -sc
yang berarti pendek dan nama kode .Dalam pertanyaan Anda, bagian
$(lsb_release -sc)
ditafsirkan dan hasil dari sistem operasi Anda dicetak ke dalam file sumber kustom ros-latest.list yang akan dibuat oleh perintah setelah dieksekusi.Penerjemah bahasa perintah
The
sh
perintah adalah shell Bourne . Ini adalah satu, di antara beberapa kerang tetapi dianggap sebagai standar lama dan umumnya yang Anda yakini ada. Ini juga biasa dilihatbash
di banyak skrip shell. Deklarasi itu menentukan shell untuk digunakan karena shell yang berbeda menggunakan sintaks yang berbeda.Mengenai
-c
bendera, mengutipman bash
:Segala sesuatu di dalam
''
dibaca sebagai string, Anda tidak perlu mencari cara untuk menghindari berbagai tanda kutip atau khawatir tentang shell menafsirkan sesuatu dengan cara yang salah.tl; dr
Perintah mencetak
deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
ke file sumber kustom, menggantikan$(lsb_release -sc)
dengan nilai yang ditafsirkan.sumber