回答:
ファイルに次の小さな関数(??
非常に単純であると呼びますが、必要に応じて変更できます)を追加することで、これを実現でき.bashrc
ます。
?? () { "${@,,}"; }
次に、実行するとき:
?? !!
最後のコマンドは、すべての文字を小文字にして実行されます。
!!
:これはbashの履歴ツールの一部であり、具体的には、最後のコマンドrunまで展開されます。したがって、たとえば、echo !!
この特定のシェルセッションで最後に実行されたコマンドを出力します。"${@,,}
:コンストラクト${foo,,}
は、変数の内容$foo
をすべて小文字に変換します。$@
位置パラメータの配列です。関数内で使用される場合、その関数に渡されるパラメーターに展開されます。したがって、"${@,,}"
関数に渡されたものをすべて小文字に変換してから実行します。したがって、パラメーターとして??
関数を実行!!
すると、最後のコマンドが小文字に変換されて実行されます。
"!!"
。
??
lowercaesとにその引数の文字を変換し、!!
再書き込み、現在のコマンドでautomaticaly前のコマンド(そう??
として取り引数は前のコマンド)。
ここにプログラマーの答えが来ます... 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^
!!:l
。