この記事は何
shellgei160を通じて言語習得 Advent Calendar 2023に参加しています。
書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。
例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160
実行環境など
- Docker image: ruby:3.0.2
- 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に
answer-ruby
ディレクトリを作り、その中に解答となるファイルを作成していきます。
今回のテーマ
$ for i in $(cd /usr;echo *); do echo $i ; done
/usr
以下にあるディレクトリ・ファイル名を、/usr/
は入れずに一覧表示します。
解
target = '/usr'
puts Dir.glob("#{target}/*").map { |f| File.basename(f) }.sort.join(' ')
所感
-
Dir.glob('/usr')
やDir.glob('/usr/')
とすると、usr
しか返ってこない。明確にワイルドカード(*
)を指定する必要あり。(ls
とは挙動が違うよ、ということ)