Dalam tutorial ini kita perlu menjalankan perintah berikut:
# curl -sL https://rpm.nodesource.com/setup_6.x | sudo -E bash -
Apa yang dimaksud dengan -
tanda hubung terakhir bash
?
Saya telah melihat banyak perintah dengan ini, dan tidak dapat menemukan diri saya penjelasan logis dan juga tidak menemukan cara merumuskan kembali pencarian google untuk itu. Apakah ini merupakan output dari perintah piped?
linux
command-line
bash
pipe
Omar BISTAMI
sumber
sumber
sudo bash
suara benar-benar menakutkan. Coba cari tutorial yang tidak mendorong praktik seperti itu.symbolhound.com
.Jawaban:
Bash berperilaku agak non-standar ketika datang ke
-
.POSIX mengatakan:
Dan
Tapi kemudian
man 1 bash
terbaca:Jadi untuk Bash
-
berarti bukan input standar atau file, maka agak non-standar.Sekarang kasus khusus Anda:
Saya menduga penulis perintah ini mungkin tidak menyadari
-
setara dengan--
dalam hal ini. Saya curiga penulis ingin memastikanbash
akan membaca dari input standarnya, mereka diharapkan-
bekerja sesuai dengan pedoman 13.Tetapi bahkan jika itu bekerja sesuai dengan pedoman,
-
akan tidak perlu di sini karenabash
mendeteksi ketika input standarnya adalah pipa dan bertindak sesuai (kecuali-c
diberikan dll.).Namun
-
tidak bekerja sesuai dengan pedoman, itu berfungsi seperti--
. Masih--
tidak perlu di sini karena tidak ada argumen setelahnya.Menurut pendapat saya yang terakhir
-
tidak mengubah apa pun. Perintah itu akan bekerja tanpanya.Untuk melihat bagaimana
--
dan-
dapat bermanfaat secara umum, pelajari contoh di bawah ini.cat
di Kubuntu saya mematuhi kedua pedoman dan saya akan menggunakannya untuk menunjukkan kegunaan-
dan--
.Biarkan file bernama
foo
ada. Ini akan mencetak file:Biarkan file bernama
--help
ada. Ini tidak akan mencetak file:Tetapi ini akan mencetak file bernama
--help
:Ini akan menyatukan file bernama
--help
dengan apa pun yang berasal dari input standar:Tampaknya Anda tidak benar-benar membutuhkannya
--
, karena Anda selalu dapat lulus./--help
yang akan ditafsirkan sebagai file pasti. Tapi pertimbangkanketika Anda tidak tahu sebelumnya apa isi variabel itu. Anda tidak bisa hanya bergantung
./
padanya, karena itu mungkin jalan yang absolut dan./
akan merusaknya. Di sisi lain itu mungkin file bernama--help
(karena mengapa tidak?). Dalam hal--
ini sangat berguna; ini adalah perintah yang jauh lebih kuat:sumber
Di
man bash
, pada akhir opsi karakter tunggal ada: -Jika Anda telah mengutip perintah lengkap, saya tidak dapat melihat alasan untuk menggunakan
-
setelahbash
dalam contoh ini, tetapi tidak ada salahnya.sumber
-
, persyaratan tidak mungkin, tapi-
/--
memungkinkan.cat file1 - file2 > file3
.bash -
maksudnyabash
sedang menunggu stdin. Jadi praktis bash akan mengeksekusi apa pun yang dikembalikan oleh perintah yang ada di sebelah kiri|
Contoh serupa namun lebih mudah adalah:
echo hello | cat -
di sini,cat
akan dicetak 'halo'. Mengapa? Karena 'halo' sedang dikirim ke kucing melalui|
dancat
sedang menunggu apa pun yang dikirim ke sanaSekarang mari kita pecahkan seluruh perintah menjadi dua:
perintah curl ini akan mengembalikan sesuatu yang bisa dimengerti dan dieksekusi oleh bash
maka kita memiliki pipa
|
yang akan mengirim output yang dikembalikan oleh perintah curl ke sisi kanan pipa yaitusudo -E bash -
. Akhirnyasudo -E bash -
, bash siap untuk mengeksekusi apa pun yang dikirim kepadanyasumber