1. Yeni gruptan çıkış yapıp tekrar açmadan bir kabuk alma
Yalnızca bir grup ekliyorsanız, aşağıdakileri kullandım:
exec sg <new group name> newgrp `id -gn`
Bu, Legooolas'ın iki katmanlı newgrp numarasındaki bir varyasyondur, ancak bir satırdadır ve birincil grubunuza manuel olarak girmenizi gerektirmez.
sg
newgrp, ancak yeni grup kimliği ile çalıştırılacak bir komutu kabul ediyor. exec
İki kere "çıkış" gerekmez çok yeni kabuk, mevcut kabuk değiştirir anlamına gelir.
Su kullanmanın aksine, şifrenizi girmenize gerek yoktur. Ayrıca ortamınızı yenilemez (grup eklemek dışında), bu nedenle geçerli çalışma dizininizi de korursunuz.
2. Bir oturumdaki tüm Ekran pencerelerinde komutu yürütme
Ekrandaki at
komut, belirttiğiniz pencerelerde bir komut çalıştırır (bunun bir kabuk komutu değil, bir Ekran komutu olduğunu unutmayın).
Komutu varolan tüm Ekran oturumlarına göndermek için aşağıdaki komutu kullanabilirsiniz:
screen -S <session_name> -X at \# stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"
id
Ekran oturumunda çalıştırmak için geri tepmelerden kaçmanın ve komutunuzun sonunda 'Enter'a basmak için ^ M tuşuna dikkat edin.
Ayrıca o ekranın stuff
komutunun sadece sizin adınıza komut metnini yazdığını unutmayın. Bu nedenle, ekran pencerelerinden birinin komut isteminde yarı yazılmış bir komutu varsa veya bir kabuktan başka bir uygulamayı çalıştırıyorsa (örn. Emacs, top) garip bir şey olabilir. Bu bir sorunsa, bazı fikirlerim var:
- Herhangi bir yarı yazılı komuttan kurtulmak için komutun başına "^ C" ekleyebilirsiniz.
- Komutu bir emacs penceresinde, vb. Çalıştırmaktan kaçınmak için `at 'dan pencere başlığını vb. , vb).
Komutu belirli bir pencerede çalıştırmak için (pencere numarası ile tanımlanır), aşağıdakileri kullanın:
screen -S <session_name> -p 0 -X stuff "exec sg <new_group_name> newgrp \`id -gn\`^M"