Birçok kez tüm harfleri büyük harfle (belki de CapsLockaçıktı) bir komut çalıştırdım ve bunu Enterfark etmeden önce bastırdım .
Son komutu tüm harfleri küçük harfe dönüştürerek nasıl çalıştırabilirim?
Birçok kez tüm harfleri büyük harfle (belki de CapsLockaçıktı) bir komut çalıştırdım ve bunu Enterfark etmeden önce bastırdım .
Son komutu tüm harfleri küçük harfe dönüştürerek nasıl çalıştırabilirim?
Yanıtlar:
Dosyanıza aşağıdaki küçük işlevi ekleyerek ( ??
çok basit olarak adlandırıyorum, ancak bunu istediğiniz gibi değiştirebilirsiniz) yapabilirsiniz .bashrc
:
?? () { "${@,,}"; }
Sonra, ne zaman çalışacaksınız:
?? !!
son komut küçük harflerle tüm harflerle çalıştırılır.
!!
: Bu, bash'ın geçmiş araçlarının bir parçasıdır, özellikle de son komut çalıştırmasına kadar genişler . Örneğin, echo !!
bu özel kabuk oturumunda çalıştırılan son komutu yazdıracaktır."${@,,}
: Yapı ${foo,,}
,$foo
tüm küçük harflere dönüştürülen değişkenin içeriğini dönüştürür. $@
konumsal parametreler dizisidir. Bir fonksiyonun içinde kullanıldığında, o fonksiyona iletilen parametrelere genişletilir.Böylece, "${@,,}"
işleve iletilen her şeyi küçük harfe dönüştürecek ve sonra çalıştıracaktır. Bu nedenle, ??
işlevi !!
parametre olarak çalıştırmak, son komutu küçük harfe dönüştürür ve çalıştırır.
"!!"
.
??
lowercaes ve onun argümanları harfleri dönüştüren !!
yeniden yazmış akım komutu otomatik olarak önceki komutu (böylece ??
olarak alır önceki komutu değiştirir).
`yankı !! | tr '[: üst:]' '[: alt:]' '
Anahtar, `
çıktıyı komut olarak çalıştıran (backticks) alıntılarda bulunur.
tr
benim de ilk tercihim olurdu. Ayrıca çalışır (backticks alternatifi ve POSIX braket sınıfları olmadan):$( echo !! | tr '[A-Z]' '[a-z]')
İşte bir programcı cevap geliyor .... python kullanın:
`echo "print '!!'.lower()" | python`
Veya Ruby:
`echo "print '!!'.downcase" | ruby`
Veya Perl (muhtemelen benim favorim):
`perl -e "print lc('!!');"`
Veya PHP:
`php -r "print strtolower('!!');"`
Veya Awk:
`echo "!!" | awk '{ print tolower($1) }'`
Veya Sed:
`echo "!!" | sed 's/./\L&/g'`
Veya Bash:
str="!!" ; ${str,,}
Veya zsh
echo "A='!!' ; \$A:l" | zsh
Veya varsa NodeJS:
`echo "console.log('!!'.toLowerCase());" | node`
Ayrıca kullanabilirsiniz dd
(ama ben olmaz!):
`echo "!!" | dd conv=lcase 2> /dev/null`
İşi yapmak için küçük bir komut dosyası da oluşturabilirsiniz:
sudo bash -c 'cat << EOF > /usr/local/bin/lower
#!/usr/bin/python
import fileinput
print "".join(fileinput.input()).lower(),
EOF' && sudo chmod +x /usr/local/bin/lower
Hangi şekilde kullanırsınız:
`echo !! | lower`
Ve olan sed
,
$(echo !! | sed 's/^\(.*\)$/\L\1/g')
Misal:
$ SUDO APT-GET UPDATE
SUDO: command not found
$ $(echo !! | sed 's/^\(.*\)$/\L\1/g')
Çıktı:
$(echo SUDO APT-GET UPDATE | sed 's/^\(.*\)$/\L\1/g')
[sudo] password for avinash:
0% [Waiting for headers] [Waiting for headers] [Waiting for headers] [Connectin^
!!:l
.