狠狠撸

狠狠撸Share a Scribd company logo
コマンドプロンプト芸
第23回シェル芸勉強会 大阪サテライトLT
(2016/6/18)
くんすと(@kunst1080)
もくじ
● 自己紹介
● 概要
● UNIXコマンドとコマンドプロンプト対応表
● for /f “usebackq tokens=1-9” %a in (`findstr .*`) do
● 応用編
○ FizzBuzz
○ ズンドコキヨシ
● コマンドプロンプトワンライナーでどこまでできるのか
2
自己紹介
● なまえ:くんすと (kunst1080)
● おしごと:小売系業務システムの保守(設計?開発) ※COBOLとかVB6とか
    小規模WEBサービス開発(ぜんぶ) ※Play2 + Java
● しゅみ:シェル芸、コマンドプロンプト芸、各種OSのインストール、声豚
○ 参考:コマンドプロンプト (cmd.exe) Advent Calendar 2015
■ http://qiita.com/advent-calendar/2015/cmd
3
概要
● シェル芸の定義
○ マウスも使わず、ソースコードも残さず、
GUIツールを立ち上げる間もなく、
あらゆる調査?計算?テキスト処理を
CLI端末へのコマンド入力一撃
で終わらすこと。あるいはそのときのコマンド入力のこと。
 ※CLI端末 = cmd.exe
4
UNIXコマンドとコマンドプロンプト対応表
http://kunst1080.hatenablog.com/entry/2013/11/16/234516
5
UNIXコマンド コマンドプロンプト
echo echo
cd cd
pushd, popd pushd, popd
pwd echo %CD%
ls dir
set set
UNIXコマンドとコマンドプロンプト対応表
http://kunst1080.hatenablog.com/entry/2013/11/16/234516
6
UNIXコマンド コマンドプロンプト
cp copy
mv move, ren
※拡張子の一括変換
 ren *.txt *.hogehoge
rm, rm -R del, rd
ps tasklist
kill taskkill
UNIXコマンドとコマンドプロンプト対応表
http://kunst1080.hatenablog.com/entry/2013/11/16/234516
7
UNIXコマンド コマンドプロンプト
sort sort
diff fc
grep, egrep find, findstr
wc -l find /v /c “”
xargs for /f "usebackq tokens=*" %i in (`コマンド
1`) do @コマンド2
seq for /L %i in (1,1,10) do @echo %i
for /f “usebackq tokens=1-9” %a in (`findstr .*`) do ~
● dir | for /f "usebackq tokens=1-9" %a in (`findstr .*`) do @echo %a %b %d
○ カレントディレクトリの日時とファイル名だけを表示する
8
<実行例>
C:workstudy.git>dir | for /f "usebackq tokens=1-9" %a in (`findstr .*`) do
@echo %a %b %d
ドライブ C ラベルは
ボリューム シリアル番号は です
C:workstudy.git のディレクトリ
2016/02/07 15:13 .
2016/02/07 15:13 ..
2016/02/08 20:49 .git
2016/01/19 21:57 .gitignore
2016/01/19 21:57 awk
2016/01/19 21:57 bash
2016/01/19 21:57 child.sh
2016/01/19 21:57 cobol
応用編 - FizzBuzz
● for /L %i in (1 1 100) do @set /a a=%i%15,b=%i%5,c=%i%3>nul&if !a!==0
(echo FizzBuzz) else (if !b!==0 (echo Buzz) else (if !c!==0 (echo Fizz) else
echo %i))
○ 1~100 までの連番を出力
○ 15で割った余り(a ) = 0、 5で割った余り(b) = 0、3で割った余り(c) = 0
○ a==0のときFizzBuzz、b==0のときBuzz、c==0のときFizzBuzz
http://kunst1080.hatenablog.com/entry/2015/12/25/181345
9
応用編 - ズンドコキヨシ
● cmd /v:on /c "for /L %i in (1,1,1000) do @call set /a a5=a4,a4=a3,a3=a2,
a2=a1,a1=^%RANDOM^% % 2 >nul & set A=!a5!!a4!!a3!!a2!!a1!& if !a1!==1
(echo ズン) else (echo ドコ) & if !A!==11110 echo キ?ヨ?シ! & exit"
○ コマンドプロンプトの画面を開く
○ 1~1000の連番を出力する
○ 2で割った余りをa1~a5に、a5~a1(履歴)をAに代入
○ Aが11110 (ズン?ズン?ズン?ズン?ドコ )になったら「キ?ヨ?シ!」を出力して exitする
http://kunst1080.hatenablog.com/entry/2016/03/13/135807
10
コマンドプロンプトワンライナーでどこまでできるのか
● 単純なファイル名の変更はrenコマンドで
● 文字列処理は弱い
○ for /f “usebackq”でやれなければ諦めて BATファイルを書いたほうがいい
● findとfindstrは結構使える
● fcコマンドもそれなりに使える
● 特に、callコマンドとsetコマンドについては使い方を知っておくと便利
11

More Related Content

20160618 第23回シェル芸勉強会LT コマンドプロンプト芸