難読化シェル芸コレクション

いろんな人が書いた難読化シェル芸(後で解読しておくためのメモ)

人類の資産を永く保存しなければという使命感に基づいて記録しています

隊長さん

UTF-16リトルエンディアンを利用したdate

echo -n 搀愀琀攀|iconv -t utf-16le|bash

yamayaさん

フィボナッチ数列

fib='a+=b,b=a-b,a<_[`echo $b>&3`]||fib'
((a=1,fib))3>&1

記号だけでフィボナッチ数列

! : "`/???/???/???${#?}???<<<_.`";_____=${_::-~$?}
____='__+=___,___=__-___,__<_[$($_____<<<$___>&$[-~${##}])]||____'
((__=-~$?,____))|&$_____

ぐれさんが解説記事を書いてくださっています https://gist.github.com/greymd/455a13bb6f757c5ccd00bfb155d525e2

シェルピンスキーのギャスケット

! _(){
((____=__,${_______=_____[____]^=_____[____-__],++____<___&&_______}))
$______<<<${_____[@]}
((++________<___))&&_
}
_____=(${__=$?})
___=$[__<<$__$?+~__]
: /*/$$;: ${_:__:__}
(${______=/???/???/?$[~__*~__]}<<<${_^}$__\ $___\ $___;_)|convert - /images/a.png

記号だけでdateコマンド

___=${__=${#?}}$[$__$__*~__*~__]
(("_[\$($'\\$___\\$[___-__+~__]\\$[___-$__$?*~__]\\$[___+__]'>&$[-~__])]"))>&/???/??/$__

超短いFizzBuzz

n+=:; s=; : ${p=$(<$0)}
[[ $n =~ ^(...)+$ ]] && s=Fizz
[[ $n =~ ^(.....)+$ ]] && s+=Buzz
echo ${s:-${#n}}
[[ ${#n} =~ ... ]] || echo "$p">>$0

Hello, world ゴルフ

H(){
echo -n ${*:- };}
l(){ exec 2>/dev/nu\
ll; IFS=;}
o(){ H "${1::0
,1}";}

while
o $s
read -r s; do
l #シェル芸
done <$0
! ねこ大好き

ぐれさん

記号だけで任意の文字列を出力

! : "`/???/???/??$[-(~${##}+~${##}-${##})]???<<<///`";__=${_:$[-~${#?}+-~${#?}]:${#?}};___='_[$( _____=($(/???/???/????.??)); /???/???/${__}???-???? ${_____[$[-~${##}-~${##}]]}>&$[-~${##}])]';((___)) &> /?${__}?/???o??

dcを利用してほぼ記号だけで任意の文字列を出力

: ${##};dc -e "2i?P" <<<$_$_$_$?$?$?$_$_$_$?$?$?$?$?$?$_$_$?$?$?$?$_$_$?$_$_$_$?$?$?$_$_$_$?$?$?$?$?$_$?$_$?$?$_$?$?$_$_$_$_$_$?$?$?$_$_$_$?$?$?$?$?$?$_$_$?$?$_$?$?$_$_$?$?$?$?$_$?$_$?

連想配列を利用したdate

(( a=144,b=141,c=164,d=145 ))
(( "c[\$($'\\$a\\$b\\$c\\$d' >&2)]" ))|&cat

unko.ls

: ${##}; (("_[\$($'\\$_$[-~-~-~-~-~$_]$[-~-~-~-~$_]\\$_$[-~-~-~-~$_]$[-~-~-~-~-~$_]\\$_$[-~-~-~-~$_]$[-~-~$_]\\$_$[-~-~-~-~$_]$[$_$?--~-~$_]\\$?$[-~-~-~-~$_]$[-~-~-~-~-~$_]\\$_$[-~-~-~-~$_]$[-~-~-~$_]\\$_$[-~-~-~-~-~$_]$[-~-~$_]'>&$[-~$_])]"))>&/???/??/$_

高度なyesコマンド代替

: ${p=$(<$0)}
echo "高須クリニック"
echo "$p">>$0

円周率

__=(/???/??);: ${##};${__[$[-~-~$_]} -${__[${_}$[$_$?--~-~$_]]:${___=$[-~-~-~-~$_]}:$_}<<<"$[$___-$_]*${__[$?]:$___:$_}($_)"

mosheeさん

マンデルブロ集合

dc -e '20 100 150[P6]Pfswshsm9k[q]sQ[20*Lor-3r^1+1r/]sU[dSo10-SodlUxrlUx-lm*]sV0sq[0[dlw/4*3-salqlh/3*1.5-sb0ddsxsy[lxd*lyd*+4!>Qlxdd*lyd*-la+sx2ly**lb+sy1+dlm>I]dsIxlm/d17lVxPd15lVxP13lVxP1+dlw>X]dsXxclq1+dsqlh>Y]dsYx' 2>/dev/null | convert ppm:- /images/m.png

hiroさん

新方式dateコマンド その1

__=${##};____=$[-(~-(~__))];_____=<(:);___=`.>&${_____%/*}/$__`;___=${___##*.};___=${_____: -(~__):-(~__)}${___:$____+$____:$__}${___:$____:$__};$___ \$\'\\$__${#___}${#___}\\$__${#___}$__\\$__$[-____*~__]$[++____]\\$__$____$[++____]\';

新方式dateコマンド その2

: /\(:;___=${#_};! _______=<(:);__=$?;_______=${_______%/*};____=`.&>$_______/$__`;____=${____##*.};________=${____: -___:__};____=${_______:~__+-___:~-___}${____:___+___:__}${____:___--:__};_____=$__${#____}$___;$____ ${_______: -__}${____:___:__}$________${____::__}

素数が出力される不思議なワンライナー

|:;$____ ______=\$\'\\$_____\\$[++_____]\';! $____ ':(){ '$______'<<<$(___=`'${_______:~__:__}${____:___:__}${______:__}$________\$\'\\$[_____=_____+${_____::___}]\\$[_____+___+___+__]\'' $__`;[ "${___#*: }" = "$__" ]&&$______<<<$__);((__++<-_____*~___))&&:;}';__=$?;:

Add picture from clipboard (Maximum size: 100 MB)