运行最后一个命令,将所有字母转换为小写

运行最后一个命令,将所有字母转换为小写

很多次我运行了一个所有字母都大写的命令(可能是因为CapsLock打开了),然后在我Enter意识到这一点之前就按下了。

如何运行最后一个命令并将所有字母转换为小写?

答案1

您可以通过在文件中添加以下小函数(我认为它??非常简单,但您可以根据需要进行更改)来实现这一点.bashrc

?? () { "${@,,}"; }

接下来,您将运行:

?? !!

最后一个命令将会把所有字母转为小写。

解释

  • !!:这是 bash 历史工具的一部分,具体来说,它扩展到最后运行的命令。例如,echo !!将打印出在此特定 shell 会话中运行的最后一个命令。
  • "${@,,}:构造${foo,,} 将转换内容变量的$foo全小写字母。$@是位置参数的数组。在函数内部使用时,它将扩展为传递给该函数的参数。

因此,"${@,,}"将简单地将传递给函数的所有内容转换为小写,然后执行它。因此,运行带有作为参数的??函数会将最后一个命令转换为小写并运行它。!!

答案2

`回声!! | tr'[:upper:]''[:lower:]'`

关键在于`(反引号)引号 - 它将输出作为命令运行。

答案3

这里有一个程序员的答案...使用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'`

或者 Bash:

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`

答案4

还有那个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^

相关内容