「1から10まで改行付きで表示する」みたいなことをしたいとき、コマンドラインやちょっとしたスクリプトで書くとしたらどうするでしょう。

for i in {1..10}; do echo $i; done

多分フツーに書くとこんな感じでしょうか。でも長いし、めんどいですよねー。

実は今日、連番を表示する seq というコマンドを知りました。このコマンドを使うと↑と同じ処理がこんなシンプルに掛けます。

seq 1 10

かっこいい!!ちなみに、-w オプションでゼロ詰め表示、-s オプションで区切り文字(デフォルトは改行)の変更が出来ます。

---
以下は mac な人向け。

mac(*BSD系) には GNU のコマンドは入っていないので seq を使うことが出来ません。mac でも seq を使いたい場合には port で coreutils をインストールします (。・ω・)ノ゙

sudo port install coreutils

これで seq が使えるようになる…かと思いきや使えません。coreutils で入ったコマンドは全て先頭に「g」が付きます。今回の seq だと gseq とすれば使えるようになります。が、それはかっこ悪いので alias を設定しましょう。

coreutils で入るコマンドの一覧はこのワンライナーで確認出来ます。

port contents coreutils | grep '/opt/local/bin/'

【追記】

コメントで教えていただきました。mac では jot というコマンドがあるみたいですね。こんな感じで同じようなことが出来ますた。

jot 10 1 # 1 は省略可
このエントリーをはてなブックマークに追加