1. Mendapatkan shell dengan grup baru tanpa keluar dan masuk lagi
Jika Anda hanya menambahkan satu grup, saya menggunakan yang berikut:
exec sg <new group name> newgrp `id -gn`
Ini adalah variasi dari trik newgrp dua layer Legooolas, tetapi itu dalam satu baris dan tidak mengharuskan Anda untuk masuk secara manual ke grup utama Anda.
sg
adalah newgrp tetapi menerima perintah untuk dieksekusi dengan ID grup baru. The exec
berarti bahwa shell baru menggantikan shell yang ada, sehingga Anda tidak perlu "logout" dua kali.
Tidak seperti menggunakan su, Anda tidak perlu mengetikkan kata sandi Anda. Itu juga tidak menyegarkan lingkungan Anda (selain menambahkan grup), jadi Anda mempertahankan direktori kerja Anda saat ini dll.
2. Menjalankan perintah di semua Layar jendela dalam satu sesi
The at
perintah dalam Layar menjalankan perintah di windows apa pun yang Anda tentukan (catatan ini adalah perintah Screen, bukan perintah shell).
Anda dapat menggunakan perintah berikut untuk mengirim perintah ke semua sesi Layar yang ada:
screen -S <session_name> -X at \# stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"
Catat kebutuhan untuk keluar dari backtick agar id
dapat dijalankan di sesi Screen, dan ^ M untuk mendapatkan Screen untuk menekan 'enter' di akhir perintah Anda.
Perhatikan juga bahwa stuff
perintah layar cukup ketik teks perintah atas nama Anda. Oleh karena itu sesuatu yang aneh dapat terjadi jika salah satu jendela layar memiliki perintah setengah tertulis pada prompt perintah atau menjalankan aplikasi selain shell (misalnya emacs, atas). Jika ini masalah, saya punya beberapa ide:
- Untuk menghilangkan perintah setengah tertulis, Anda dapat menambahkan "^ C" di awal perintah.
- Untuk menghindari menjalankan perintah di jendela emacs, dll, Anda dapat meminta `at 'untuk memfilter judul jendela dll (dalam contoh di atas, saya menggunakan" # ", yang cocok dengan semua jendela, tetapi Anda dapat memfilter menurut judul jendela, pengguna , dll).
Untuk menjalankan perintah di jendela tertentu (diidentifikasi dengan nomor jendela), gunakan yang berikut ini:
screen -S <session_name> -p 0 -X stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"