Saya menemukan perintah yang baru saja diberikan di bawah ini -
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Dari apa yang bisa saya tebak, ini mungkin digunakan untuk melakukan perubahan di .bash_profile tetapi sebenarnya untuk apa itu digunakan?
command-line
bash
terminal
.bash-profile
raksasa
sumber
sumber
man bash
ditulis dengan bahasa yang cukup formal, mungkin sulit dimengerti. Di sisi lain, frasabash >>
mengembalikan beberapa tautan bermanfaat di Google. Memang benar kami ingin mengumpulkan pengetahuan tanpa mengandalkan Google; karena alasan ini, bahkan sebuah pertanyaan dengan jawaban yang mudah dicari mungkin cocok. Namun fakta bahwa Anda tidak langsung memberikan jawaban (lihat Dapatkah saya menjawab pertanyaan saya sendiri? ) Atau menunjuk ke sumber daya yang ada (bahwa Anda mungkin perlu bantuan untuk memahami) menunjukkan kurangnya penelitian.Jawaban:
Ini mengarahkan kembali stdout program sebelumnya
>>
dan menambahkannya ke file yang diberikan setelahnya.sumber
>> file command
echo a b >> c d
akan ditambahkana b d
ke file bernamac
.Jawaban singkat - apa fungsinya
>>
?Dengan
>>
, Anda menambahkan output dari perintah ke file.Contoh perintah Anda terdiri dari beberapa bagian, pada dasarnya:
Jadi output
command
akan ditambahkan kefilename
.Apa yang terjadi dalam kasus spesifik
echo
?Dalam kasus spesifik Anda,
echo "…"
perintah menampilkan argumen inputnya menjadi "stdout", yang disebut "deskriptor keluaran standar". Argumen masukan untukecho
diikuti oleh baris baru (\n
), sehingga Anda mendapatkan jeda baris.Di sini, "deskriptor output standar" tidak lebih dari aliran output yang ditampilkan di shell Anda ketika Anda menjalankan perintah. (Yaitu, ketika Anda mengetik
echo foo
dan menekan Enter,foo\n
adalah output sebenarnya dariecho
perintah, yang ditunjukkan oleh shell Anda seperti yangfoo
diikuti oleh baris baru.)Pada dasarnya apa pun yang menulis ke baris perintah Anda menggunakan stdout. Ada juga deskriptor lain yang disebut "stderr" yang biasanya digunakan untuk pesan kesalahan. Itu juga akan dicetak seperti stdout, jadi kadang-kadang mereka bisa diselingi. Dan ada deskriptor stdin yang digunakan untuk input. Lihat artikel ini untuk info lebih lanjut.
Bagaimana Anda mengarahkan output ke shell?
Anda selalu dapat mengarahkan stdout ke deskriptor file, yang dapat Anda lakukan dengan salah satu operator ini:
>
pengalihan ke deskriptor file. Itu membuat file jika tidak ada, atau, jika sudah ada, memotong file sebelum menulis. Karena itu file tersebut akan ditimpa dengan stdout.>>
ditambahkan ke deskriptor file. Itu menciptakan file jika tidak ada.Anda juga dapat mengarahkan ulang stderr dengan menggunakan
2>
atau2>>
dengan cara yang serupa. Atau Anda dapat menggabungkan stderr dan stdout menjadi satu file:2>&1
lakukan itu. Untuk info lebih lanjut tentang pengalihan dan beberapa contoh lainnya, Anda dapat membaca tutorial kecil ini .Bagaimana saya bisa mengetahui apa arti kode shell tertentu?
Secara umum, Anda mungkin ingin mencoba menjelaskanshell.com , yang akan memberi Anda panduan visual dan informasi tentang perintah shell tertentu.
sumber
Untuk orang-orang TLDR yang hanya suka melihat contoh;
Output standar (bukan kesalahan) dari perintah sebelum >> akan ditambahkan ke akhir file bernama setelah itu.
Jadi jika file "flintstones.txt" berisi;
echo Dino >> flintstones.txt
akan menghasilkan 'Dino' ditambahkan ke akhir file;sumber
echo Dino > flintstones.txt
untuk menunjukkan konten itu hanyaDino
jika dilakukan dengan panah kanan tunggal.Sekali lagi, jika Anda melakukannya
Seluruh konten file akan dihapus.
sumber
> file
menghapus file tetapi>> file
tidak melakukan apa-apa.