シェルワンライナー160本ノック問題20
問題20 lsの出力をシェルの機能で
外部コマンドが使えない状況で /usr 直下にあるファイルとディレクトリの一覧を縦に出力する問題だった。 echo * が使えるということには気が付いたがそこから先ができなかった。正解例は
for i in $(cd /usr;echo *); do echo $i; done
である。for 文でうまくやるという発想がなかった。cd も echo もビルトインコマンドなので使っても問題ない。
別解として
for f in /usr/* ; do echo ${f##*/}; done
というのがあった。シェルの文字列を除去する機能をうまく使っている。/usr/* と書けばディレクトリ名が展開されるというのは知らなかった。