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, !-3
vb.
Neyi çalıştırdığınızı açıklamak için, işte komuttan kısa bir açıklama:
xsel
X 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
.
-i
Parametre söyler xsel
stdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-b
Parametre 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.
!!:q
bash 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ı !-2
o 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.
:q
Değ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.
!!:q
bash 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ı !-2
o 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.
:q
Değ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.
xsel
X 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
.
-i
Parametre söyler xsel
stdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-b
Parametre 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ı, ~/.bashrc
dosyanızın sonuna ya da ~/.bash_aliases
varsa 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 command
sonra 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. -p
Anahtar 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.
xsel
X 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
.
-i
Parametre söyler xsel
stdin'den okumak için (genellikle bu araçlar klavye girişi, ama biz burada yönlendirme şeye gidiyoruz)
-b
Parametre belirtir panoya yerine X'in "birincil" veya "ikincil" kullanıldığını görelim.
<<<"!!" xsel -ib