第66回シェル芸勉強会メモ
はじめに 2023年9月30日に開催された第66回シェル芸勉強会にオンラインで参加させていただきました。 そのときの記録をメモとして記事にしておこうと思います。 あと、解けそうな問題はChatGPT(GPT-4)にも解いていただこうと思います。 ## 問1 : 0123456789 問題内容 数字を使わずに0123456789を出力します。 私の回答 cat<<EOF>>a.cpp #include <bits/stdc++.h> int main() { int a[]={'a','b','c','d','e','f','g','h','i','j'}; for(char b: a) printf("%d",b-'a'); } EOF g++ a.cpp ./a.out 私の感想 bashのワンライナーではありませんが、とりあえず想定の出力は得られました。 他に何も思いつかなかったのでまだまだ力不足という感じです。勉強します。 配信で紹介されていたseq infの回答がスマートで勉強になりました。 ChatGPTの回答 echo abcdefghij | tr a-j $(echo a | tr a ':') 出力結果 :::::::::: 私の感想 10回くらいやり取りをして最終的にこの回答になりました。 数字を使用できないという制約が難しかったのかもしれません。 また、ChatGPTは実行できない状態のワンライナーも当たり前のように提供してくるので気をつけないといけませんね。 問2 : リダイレクト 問題内容 “ls 存在しないファイル 3>file 2>?“の?に文字列を入れてfileにlsのエラー出力を書き込みます。 私の回答 ls 存在しないファイル 3>file 2>&$(seq inf|head|sed '$d'|sed '$d'|sed '$d'|sed '$d'|sed '$d'|sed '$d'|sed '$d'|tac|sed '$d'|sed '$d') 私の感想 さっそく問1で学んだことを使ってみました。1-10を出力してからsed ‘$d’で最終行を削除していきます。 欲しい数字は3なので途中でtacを使いました。長いですがとりあえずはできたっぽいので良しとします。 ...