很多次我都使用大写字母运行一个命令(也许是因为它CapsLock是开着的),我Enter在意识到这一点之前就按下了。
如何在所有字母都转换为小写的情况下运行最后一个命令?
很多次我都使用大写字母运行一个命令(也许是因为它CapsLock是开着的),我Enter在意识到这一点之前就按下了。
如何在所有字母都转换为小写的情况下运行最后一个命令?
Answers:
您可以通过在文件中添加以下小的函数(我称它??
非常简单,但是您可以根据需要更改它)来实现这一点.bashrc
:
?? () { "${@,,}"; }
接下来,何时运行:
?? !!
最后一个命令将以所有小写字母运行。
!!
:这是bash历史记录工具的一部分,具体地说,它扩展到最后一个运行的命令。因此,例如,echo !!
将打印出在此特定Shell会话中运行的最后一个命令。"${@,,}
:该构造${foo,,}
会将变量的内容$foo
转换为所有小写字母。$@
是位置参数的数组。在函数内部使用时,它将扩展为传递给该函数的参数。因此,"${@,,}"
只需将传递给函数的所有内容转换为小写,然后执行即可。因此,使用参数作为??
函数运行该函数!!
会将最后一个命令转换为小写并运行它。
"!!"
。
??
将其参数字母转换为小写字母,并!!
自动重写当前命令中的前一个命令(因此??
,参数上一个命令)。
回声!| tr'[:upper:]''[:lower:]'`
关键在`
(反引号)引号中-该引号作为命令运行输出。
tr
也是我的第一选择。也可以使用(替代反引号,并且不使用POSIX括号类):$( echo !! | tr '[A-Z]' '[a-z]')
这是程序员的答案。...使用python:
`echo "print '!!'.lower()" | python`
或Ruby:
`echo "print '!!'.downcase" | ruby`
或Perl(可能是我的最爱):
`perl -e "print lc('!!');"`
或PHP:
`php -r "print strtolower('!!');"`
或Awk:
`echo "!!" | awk '{ print tolower($1) }'`
或Sed:
`echo "!!" | sed 's/./\L&/g'`
或重击:
str="!!" ; ${str,,}
或zsh
echo "A='!!' ; \$A:l" | zsh
或NodeJS(如果有):
`echo "console.log('!!'.toLowerCase());" | node`
您也可以使用dd
(但我不会!):
`echo "!!" | dd conv=lcase 2> /dev/null`
您还可以创建一个小的脚本来完成这项工作:
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
您可以这样使用:
`echo !! | lower`
还有一个sed
,
$(echo !! | sed 's/^\(.*\)$/\L\1/g')
例:
$ SUDO APT-GET UPDATE
SUDO: command not found
$ $(echo !! | sed 's/^\(.*\)$/\L\1/g')
输出:
$(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
。