Запустите последнюю команду со всеми буквами, преобразованными в нижний регистр

Много раз я запускал команду со всеми буквами в верхнем регистре (возможно, потому что CapsLock был включен), и я нажимал Enter , прежде чем понял это.

Как мне выполнить последнюю команду со всеми буквами, преобразованными в нижний регистр?

15
задан 13 May 2014 в 18:19

4 ответа

Можно выполнить это путем добавления следующей небольшой функции (я называю ее ?? чтобы быть очень простыми, но можно изменить это, как Вы желаете) в Вашем .bashrc файл:

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

Затем, когда Вы будете работать:

?? !!

последняя команда будет выполнена со всеми буквами к нижнему регистру.

Объяснение

  • !! : это - часть инструментов истории удара, а именно, она расширяется до последней выполненной команды. Так, например, echo !! распечатает последнюю команду, выполненную на этой конкретной сессии оболочки.
  • "${@,,} : Конструкция ${foo,,} преобразует содержание переменной $foo преобразованный во все строчные буквы. $@ массив позиционных параметров. При использовании в функции она расширена до параметров, переданных той функции.

Так, "${@,,}" просто преобразует то, что было передано функции в нижний регистр, и затем выполните его. Поэтому выполнение ?? функция с !! в качестве параметра преобразует последнюю команду в нижний регистр и выполнит его.

19
ответ дан 13 May 2014 в 18:19
`echo  !! | tr '[:upper:]' '[:lower:]'`

ключ находится в эти ` (обратные галочки) цитаты - который выполняет вывод как команду.

0
ответ дан 13 May 2014 в 18:19

здесь прибывает, ответ программистов.... использует 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`
0
ответ дан 13 May 2014 в 18:19

И тот с 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^
0
ответ дан 13 May 2014 в 18:19

Другие вопросы по тегам:

Похожие вопросы: