Saya tahu cara mengubah direktori dari terminal dengan mengetik
cd <directory>
tapi inilah skenarionya. Saya menggunakan terminal untuk membuka folder repositori git saya.
- glennRepositori
- glenn-remdroid-repository
Dengan struktur folder di atas, saya ingin beralih glenn-remdroid-repository
karena itu adalah repositori saya dengan melakukan.
cd glennRepositories
Sebelum beralih di repositori glenn-remdroid, saya salah mengetik perintah
cd &
bukannya cd *
. Saya menggunakan cd *
karena nama folder panjang untuk saya, maaf karena malas.
Ketika saya menjalankan cd &
, terminal membalas
[1] 7519
Ketika saya mengeksekusi cd *
ini sekarang terjadi
[1]+ Done cd (wd: ~/glennRepositories)
(wd now: ~/glennRepositories/glenn-remdroid-repository)
Apakah ada yang cd &
berarti dan hasilnya? Google tidak tahu pertanyaan saya :)
shell
cd-command
GLenn
sumber
sumber
cd <TAB>
dan nama folder unik akan diperluas secara otomatis.Jawaban:
Dengan menulis
&
pada akhir baris perintah, Anda menginstruksikan shell Anda untuk mengambil pipeline perintah (dalam hal ini satu perintah) dan menjalankannya dalam sub-shell di latar belakang (tidak menunggu hasil).cd
adalah bash builtin, tetapi itu tidak penting di sini. Itu tidak akan memengaruhi shell "induk" Anda dengan cara apa pun, jadi direktori kerja Anda tidak akan berubah.Baris ini melaporkan bahwa ada pekerjaan yang berjalan di latar belakang yang diidentifikasi oleh nomor 1 dan ID proses adalah 7519. Hal serupa akan dicetak jika Anda menjalankan mis.
vim
Lalu tekan Ctrl+ Zuntuk menangguhkannya. Ketika proses selesai, shell tidak akan melaporkan hal itu sampai siklus pemrosesan berikutnya (mis. Tekan saja Returnsekali lagi) dan kemudian akan mencetak pekerjaan pembaruan daftar selesai.Untuk keterangan lebih lanjut silakan baca
man bash
dan bagianJOB CONTROL
.Untuk referensi, pertanyaannya Mengapa
exit &
tidak berhasil? beruang beberapa kesamaan.sumber
fish
danzsh
, itu dilaporkan langsung. Dalambash
dan shell POSIX lainnya atau (t) csh itu tergantung pada pengaturannotify
opsi (dinonaktifkan secara default) (zsh
menjadi shell seperti POSIX juga memilikinotify
opsi, tetapi tidak aktif secara default kecuali jika disuruh meniru shell lain)The
&
Operator mengirimkan proses untuk latar belakang; seperti yangcd
dapat dijalankan tanpa argumen Anda menjalankannya dan mengirimkannya ke latar belakang. Jika Anda mengambil halaman manual:Anda dapat melihat argumennya opsional. Begitu
cd &
diproses sebagaicd
lalu kirim ke latar belakang. Ketikacd
dipanggil tanpa argumen, pemrosesan tidak diperlukan. Jadi ia pergi ke latar belakang sebagai "selesai" (diproses).Beberapa info tentang
&
The Bash&
(ampersand) adalah operator kontrol bawaan yang digunakan untuk proses garpu. Dari halaman manual Bash, "Jika sebuah perintah diakhiri oleh operator kontrol&
, shell mengeksekusi perintah di latar belakang dalam sebuah subkulit".Jika masuk ke shell interaktif, proses ini diberi nomor pekerjaan dan PID anak ditampilkan. Nomor pekerjaan di bawah adalah satu.
Perhatikan bahwa ketika suatu proses bercabang, PID anak disimpan dalam variabel khusus
$!
Anda dapat menghentikan pekerjaan dengan nomor pekerjaannya seperti:
sumber
cd
dijalankan dan kemudian dikirim ke latar belakang. Proses latar belakang sebenarnya dibuat sebelum program berjalan dalam kasus perintah biasa; dalam kasus built-in, perilaku ini ditiru. Perintah dijalankan oleh proses latar belakang ini, menggantikannya. Kedua,cd
tanpa argumen memang melakukan sesuatu: itu akan membawa Anda keHOME
direktori Anda . Tetapi, karena Anda telah memotongnya ke latar belakang, tidak ada efek dalam kasus ini.