Много раз я запускал команду со всеми буквами в верхнем регистре (возможно, потому что CapsLock kbd> был включен), и я нажимал Enter kbd>, прежде чем понял это.
Как мне выполнить последнюю команду со всеми буквами, преобразованными в нижний регистр?
Можно выполнить это путем добавления следующей небольшой функции (я называю ее ??
чтобы быть очень простыми, но можно изменить это, как Вы желаете) в Вашем .bashrc
файл:
?? () { "${@,,}"; }
Затем, когда Вы будете работать:
?? !!
последняя команда будет выполнена со всеми буквами к нижнему регистру.
!!
: это - часть инструментов истории удара, а именно, она расширяется до последней выполненной команды. Так, например, echo !!
распечатает последнюю команду, выполненную на этой конкретной сессии оболочки."${@,,}
: Конструкция ${foo,,}
преобразует содержание переменной $foo
преобразованный во все строчные буквы. $@
массив позиционных параметров. При использовании в функции она расширена до параметров, переданных той функции.Так, "${@,,}"
просто преобразует то, что было передано функции в нижний регистр, и затем выполните его. Поэтому выполнение ??
функция с !!
в качестве параметра преобразует последнюю команду в нижний регистр и выполнит его.
`echo !! | tr '[:upper:]' '[:lower:]'`
ключ находится в эти `
(обратные галочки) цитаты - который выполняет вывод как команду.
здесь прибывает, ответ программистов.... использует 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`
И тот с 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^