Setelah selesai dengan Terminal, saya ingin keluar. Saat ini, saya memiliki tiga opsi:
killall Terminal. Ini akan mengakhiri prosesnya, melainkan tiba-tiba. Saya tidak berpikir ini adalah ide terbaik.
Keluar panggilan. Saya telah mengubah pengaturan jadi keluar menutup Terminal. Aplikasi tersebut masih tampak terbuka di Dock, dan tidak melakukan apa yang saya inginkan.
Klik kanan> Quit. Namun, ini bukan perintah Terminal untuk keluar.
Jadi sekarang, bagaimana cara saya keluar dan menutup Terminal? Saya pernah mendengar sesuatu tentang osascript tetapi saya tidak terlalu yakin. Saya ingin keluar dan menutup, sehingga Terminal tidak lagi terbuka, baik sebagai jendela maupun sebagai proses.
kill
,killall
default untuk mengirimSIGTERM
, yang bisa ditangkap. Beberapa program menangkapnya, membersihkan dirinya sendiri dan keluar dengan anggun. Tidak tahu apakahTerminal.app
ada di antara mereka. Namun, saya curiga ini akan lebih baik pada Ask Different atau Super User dalam keadaan darurat karena sepertinya tidak memiliki konten pemrograman apa pun.Jawaban:
di Terminal.app
Preferensi> Profil> (Pilih Profil)> Shell.
pada 'Saat shell keluar' pilih 'Tutup jendela'
sumber
Bagaimana dengan Command-Q yang lama?
sumber
Di aplikasi Terminal, tab Preferensi >> Profil .
Pilih tab Shell di sebelah kanan.
Anda dapat memilih Never Ask sebelum menutup untuk menekan peringatan.
sumber
When shell exits:
"tutup jendela"Sebenarnya, Anda harus mengatur konfigurasi di Terminal Anda, ketika Terminal Anda sudah habis tekan ⌘+ ,maka Anda akan melihat layar di bawah ini:
Kemudian tekan tab shell dan Anda akan melihat layar di bawah ini:
Sekarang pilih
Close if the shell exited cleanly
untuk Ketika keluar shell .Dengan konfigurasi di atas setiap kali dengan
exit
perintah, Terminal akan menutup tetapi tidak mau berhenti.sumber
Anda dapat menggunakan AppleScript melalui
osascript
perintah:sumber
.bashrc
(atau yang setara jika Anda menggunakan shell yang berbeda). Saya masih memikirkan jawaban untuk 2.exit
setelah memulai proses daemonisasi. Setelah proses daemonized menunggu sebentar, itu bisa dipanggilosascript
seperti yang dijelaskan.osascript
:tell application "System Events" to keystroke "a" using command down
. Ini mungkin akan memiliki masalah juga.Di jendela terminal, Anda dapat mengetik:
Ini akan menghentikan proses aplikasi Terminal, yang merupakan induk dari proses saat ini, seperti yang terlihat oleh perintah kill.
Untuk menutup jendela Terminal dari dalam skrip yang sedang berjalan, Anda perlu naik satu tingkat lagi dalam hierarki proses seperti ini:
sumber
kill -9
kecuali Anda tahu sinyal lain tidak akan berfungsi.Saya telah menggunakan
ctrl + d
. Ini melempar Anda ke tujuan di mana Anda telah memulai perintah sqlite3 di tempat pertama.sumber
osascript -e "tell application \"System Events\" to keystroke \"w\" using command down"
Ini mensimulasikan penekanan tombol CMD+ w.
Jika Anda ingin Terminal berhenti sepenuhnya, Anda dapat menggunakan:
osascript -e "tell application \"System Events\" to keystroke \"q\" using command down"
Ini tidak memberikan kesalahan apa pun dan membuat Terminal berhenti dengan bersih.
sumber
Anda juga dapat menggunakan perintah berbelit-belit ini, yang tidak memicu peringatan tentang penghentian prosesnya sendiri:
osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit
Perintah ini cukup panjang, jadi Anda bisa menentukan alias (seperti
quit
) di profil bash Anda:alias quit='osascript -e "do shell script \"osascript -e \\\"tell application \\\\\\\"Terminal\\\\\\\" to quit\\\" &> /dev/null &\""; exit'
Ini akan memungkinkan Anda untuk mengetik
quit
ke terminal tanpa harus mengutak-atik pengaturan lain.sumber
Gunakan
osascript
perintah di kode Anda seperti yang disebutkan oleh icktoofay:osascript -e 'tell application "Terminal" to quit'
Kemudian, buka preferensi Terminal, buka Pengaturan> Shell, dan setel "Konfirmasi sebelum menutup:" ke "Tidak Pernah". Terminal sekarang harus berhenti sepenuhnya (tidak tetap terbuka di dok Anda) dan mengabaikan permintaan sebelum berhenti. Jika Anda hanya memiliki satu jendela Terminal yang terbuka dan
osascript
perintah tersebut adalah baris kode terakhir Anda , perintah tersebut harus menunggu perintah apa pun yang Anda jalankan sebelum selesai.Ini tidak akan ideal jika Anda menjalankan skrip di jendela yang sama atau jendela lain di latar belakang (misalnya, Anda dapat menjalankan perintah di latar belakang dan terus menggunakan jendela saat ini untuk perintah lain jika perintah pertama diikuti dengan tanda & ); hati-hati!
Jika Anda membungkus
osascript
kode dalam file skrip shell, Anda mungkin dapat memanggilnya dengan nama file apa pun yang Anda berikan --- selama kode tersebut berada di jalur pencarian Terminal (jalankanecho $PATH
untuk melihat di mana Terminal mencari skrip).sumber
Buat skrip:
cat ~/exit.scpt
seperti ini:
command + w
untuk menutup tab)tell application "Terminal" set WindowNum to get window count if WindowNum = 1 then quit else tell application "System Events" to keystroke "w" using command down end if end tell
Kemudian tambahkan alias di * shrc Anda
hanya suka
vi ~/.bashrc
atauzshrc
(apa saja?)tambahkan itu:
alias exit="osascript ~/exit.scpt"
Dan sumber ~ / .bashrc atau buka kembali terminal.app Anda
sumber
Saya telah menggunakan
keluar dari terminal -n
di akhir skrip saya. Anda harus mengatur terminal agar tidak pernah diminta dalam preferensi
Jadi Terminal> Preferensi> Pengaturan> Shell Saat shell keluar Tutup jendela Prompt sebelum menutup Never
sumber
Saya mencoba beberapa variasi jawaban di sini. Apa pun yang saya coba, saya selalu dapat menemukan kasus penggunaan di mana pengguna diminta untuk menutup Terminal.
Karena skrip saya sederhana (
drutil -drive 2 tray open
- untuk membuka drive DVD tertentu), pengguna tidak perlu melihat jendela Terminal saat skrip berjalan.Solusi saya adalah mengubah skrip menjadi aplikasi, yang menjalankan skrip tanpa menampilkan jendela Terminal. Manfaat tambahannya adalah bahwa setiap jendela terminal yang sudah terbuka tetap terbuka, dan jika tidak ada yang terbuka, Terminal tidak tetap tinggal setelah skrip berakhir. Tampaknya tidak meluncurkan Terminal sama sekali untuk menjalankan skrip bash.
Saya mengikuti petunjuk ini untuk mengubah skrip saya menjadi sebuah aplikasi: https://superuser.com/a/1354541/162011
sumber
Jika ini adalah Mac Anda mengetik 'keluar' lalu tekan kembali.
sumber