狠狠撸
Submit Search
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
?
2 likes
?
1,658 views
K
kunst1080
Follow
20160618 第23回シェル芸勉強会 大阪サテライト LT 「コマンドプロンプト芸」
Read less
Read more
1 of 11
Download now
Download to read offline
More Related Content
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
1.
コマンドプロンプト芸 第23回シェル芸勉強会 大阪サテライトLT (2016/6/18) くんすと(@kunst1080)
2.
もくじ ● 自己紹介 ● 概要 ●
UNIXコマンドとコマンドプロンプト対応表 ● for /f “usebackq tokens=1-9” %a in (`findstr .*`) do ● 応用編 ○ FizzBuzz ○ ズンドコキヨシ ● コマンドプロンプトワンライナーでどこまでできるのか 2
3.
自己紹介 ● なまえ:くんすと (kunst1080) ●
おしごと:小売系業務システムの保守(設計?開発) ※COBOLとかVB6とか 小規模WEBサービス開発(ぜんぶ) ※Play2 + Java ● しゅみ:シェル芸、コマンドプロンプト芸、各種OSのインストール、声豚 ○ 参考:コマンドプロンプト (cmd.exe) Advent Calendar 2015 ■ http://qiita.com/advent-calendar/2015/cmd 3
4.
概要 ● シェル芸の定義 ○ マウスも使わず、ソースコードも残さず、 GUIツールを立ち上げる間もなく、 あらゆる調査?計算?テキスト処理を CLI端末へのコマンド入力一撃 で終わらすこと。あるいはそのときのコマンド入力のこと。 ※CLI端末
= cmd.exe 4
5.
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
6.
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
7.
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
8.
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
9.
応用編 - 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
10.
応用編 - ズンドコキヨシ ●
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
11.
コマンドプロンプトワンライナーでどこまでできるのか ● 単純なファイル名の変更はrenコマンドで ● 文字列処理は弱い ○
for /f “usebackq”でやれなければ諦めて BATファイルを書いたほうがいい ● findとfindstrは結構使える ● fcコマンドもそれなりに使える ● 特に、callコマンドとsetコマンドについては使い方を知っておくと便利 11
Download