Cevabım, hepsi eşit olarak çalışan, ancak biri ikinciden biraz daha kısa ve daha kolay olan üç farklı sözdiziminde basit bir komut sunuyor. Üçüncü varyasyon sözde bir takma addır, yani komuta özel bir ad atayabilir ve karmaşık şeyleri hatırlamak zorunda kalmadan çalıştırarak çağırabilirsiniz.
Hazırlık:
İlk xselönce, terminalden X panosuna erişmenizi sağlayan paketi kurun :
sudo apt-get install xsel
Komut varyasyonu 1 (kısa):
Bundan sonra, önceki komutu panoya kopyalamak için aşağıdaki satırı yazabilirsiniz:
xsel -ib <<<!!:q
Eğer, ikinci son komutu kopyalayıp değiştirmek istiyorsanız !!ile !-2üçüncü en son kullanıma, !-3vb.
Neyi çalıştırdığınızı açıklamak için, işte komuttan kısa bir açıklama:
xselX panolarına erişmek için bir komut satırı aracıdır.
Daha fazla bilgi için, çevrimiçi olarak
veya çalışan bir sayfa olduğunu okuyun man xsel.
-iParametre söyler xselstdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-bParametre belirtir panoya yerine X'in "birincil" veya "ikincil" kullanıldığını görelim.
<<<"Here String" adlı özel bir Bash sözdizimidir.
Temelde argümanı (sadece bir!) Sonra genişletir (değerlendirmez!) Ve onu durmadan önce / sonra komutun stdin'ine (standart giriş) dizge olarak yönlendirir.
!!:qbash tarihinin genişlemesi için "bang komutu" olarak adlandırılır. Önceden yazılmış herhangi bir komut satırıyla kendini değiştirir.
Daha fazla bilgi için, yerel manpage sayfasını çalıştırarak okuyun man history(çevrimiçi manpage yardımcı değildir).
!!Bir önceki komut satırı anlamına gelir ve eş anlamlıdır !-1.
Açıkçası !-2o zaman ikinci son komut satırı anlamına gelir. Eksi işaretini unutmayın -, aksi takdirde yazdığınız 2. (3. / ...) komutu geri döner.
:qDeğiştirir patlama komutu ve tek tırnak ikame çevrelemek için Bash söyler ( ') kabuk tarafından daha fazla genişlemesini önlemek için.
Komut varyasyonu 2 (biraz daha uzun):
echo !!:q | xsel -ib
echo Tüm argümanlarını terminalin stdout'una basma işine sahiptir.
!!:qbash tarihinin genişlemesi için "bang komutu" olarak adlandırılır. Önceden yazılmış herhangi bir komut satırıyla kendini değiştirir.
!!Bir önceki komut satırı anlamına gelir ve eş anlamlıdır !-1. Açıkçası !-2o zaman ikinci son komut satırı anlamına gelir. Eksi işaretini unutmayın -, aksi takdirde yazdığınız 2. (3. / ...) komutu geri döner.
:qDeğiştirir patlama komutu ve tek tırnak ikame çevrelemek için Bash söyler ( ') kabuk tarafından daha fazla genişlemesini önlemek için.
|bir boru. Komutun terminal çıkışını ("stdout"), önceki komutundan sonra terminal komutuna ("stdin") yönlendirir.
xselX panolarına erişmek için bir komut satırı aracıdır.
Daha fazla bilgi için, çevrimiçi olarak
veya çalışan bir sayfa olduğunu okuyun man xsel.
-iParametre söyler xselstdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-bParametre belirtir panoya yerine X'in "birincil" veya "ikincil" kullanıldığını görelim.
Komut varyasyonu 3 (diğer ad):
Bir bash takma adı, sık kullandığınız uzun veya karmaşık komutları hatırlamak istemiyorsanız harika bir şeydir. Bu komutu, aynı elde etmek için uzun komut yerine çalıştırabileceğiniz basit bir diğer ad adına atayabilirsiniz.
Ne yazık ki, bang komutları özel bir Bash özelliği olduğundan ve takma adlar çözümlenmeden önce genişletildiğinden, !!bölüm çalışmaz çünkü yukarıdaki varyasyonlardan birini takma adlandırma yapamazsınız. Yine de bir geçici çözüm var.
Diğer adı ayarlamak için terminalinizde aşağıdaki satırı çalıştırın. Bunun yerine herhangi bir geçerli Bash değişken adı seçebileceğinizi unutmayın copylastcommand:
alias copylastcommand='history -p \!\! | xsel -ib'
Ancak bu, yalnızca geçerli Bash oturumunuz için kalıcıdır; başka bir deyişle, takma ad, terminal penceresini kapattıktan sonra kaybolacaktır. Bu satırı, ~/.bashrcdosyanızın sonuna ya da ~/.bash_aliasesvarsa dosyanızın sonuna ekleyerek Bash oturumlarınızın her birinde kalıcı yapabilirsiniz .
Yine, hattın kısa bir parça:
alias name='command'Bash'de bir takma ad belirlemek için kullanılan sözdizimidir. Bundan commandsonra ne zaman çalıştırılsa çalıştırılacak name.
history -p \!\!daha önce yürütülen komut satırını stdout'a (standart çıktı) verir. -pAnahtar olmadan sadece yazdırmaz, aynı zamanda komutu tekrar çalıştırırdı.
Patlamalardan ( !) ters eğik çizgi ( ) ile kaçmamız gerektiğine dikkat edin \, çünkü aksi halde bash, diğer adları olduğu gibi kullanmayacak kadar anlamlı olan takma adı belirlemeye çalıştığımızda onları genişletir.
Yine, [n] -th Recent komutunu -n, örneğin ikinci patla değiştirerek de belirleyebilirsiniz \!-2.
|bir boru. Komutun standart çıktısını ("stdout") önceki komutundan sonraki standart komutuna ("stdin") yönlendirir.
xselX panolarına erişmek için bir komut satırı aracıdır.
Daha fazla bilgi için, çevrimiçi olarak
veya çalışan bir sayfa olduğunu okuyun man xsel.
-iParametre söyler xselstdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-bParametre belirtir panoya yerine X'in "birincil" veya "ikincil" kullanıldığını görelim.
<<<"!!" xsel -ib