加藤祐介ブログ

第66回シェル芸勉強会メモ

記事投稿日: 2023年10月3日(火)

最終更新日: 2024年3月30日(土)

目次

はじめに

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を使いました。長いですがとりあえずはできたっぽいので良しとします。

ChatGPTの回答

ls 存在しないファイル 2>file

私の感想

問題を理解してもらえませんでした。ChatGPTに問題を出すこと自体が難問です。

問3 : 終了ステータス

問題内容

1,2,3,4文字それぞれで終了ステータス1を出します(禁止事項は配信を参照)。

私の回答

!
%1
1<1

私の感想

4文字の場合が思いつきませんでした(そもそも1,2,3文字の場合も適当に打っていただけですが)。 ChatGPTに聞いてみてもちゃんとした回答は返ってきませんでした。 難しいですね。精進します。

問4 : trueの終了ステータス

問題内容

何とかしてtrueの終了ステータスを0以外にします。

私の回答

解けませんでした...

私の感想

このあたりの問題から何をすればいいのかも分からなくなってきます。 配信を視聴しながら「そんなこともできるんだなぁ~」と感心するばかりです。 シェル芸勉強会はやっぱりハードですね。勉強になります(楽しいです)。

問5 : 大きなファイル記述子

問題内容

どこかのプロセスにおいて、大きい番号のファイル記述子を作って'/proc/プロセス番号/fd'で存在を確認します。

私の回答

解けませんでした...

私の感想

「そもそもファイル記述子って何だっけ?」というところから調査していました。 シェル芸勉強会の問題に挑戦するたびに「もっと勉強しなきゃなぁ~」という気持ちが強くなります。 まずはulimitコマンドと仲良くなるところから。$$/$$も積極的に使っていきたいです。

問6 : 10以上のファイル記述子を使い切る

問題内容

bashのプロセスで10以上のファイル記述子を使い切ります(開きっぱなしの状態にする)。

私の回答

解けませんでした...

私の感想

Misskeyの皆さんの回答を「なるほどなぁ~」という感じで眺めていました。 ちょうどよく頭も疲れてきたのでよく眠れそうです(3時間経過~)。 1問一問がハードなので6問もあると体力的にも精神的にも疲れます。 皆さん、ここまでお疲れ様でした。

おわりに

第66回シェル芸勉強会についてメモを書きました。 まだまだ勉強することが山ほどあるということが分かる素晴らしい勉強会でした。 私も10年後くらいにはシェル芸の本が書けるくらいの実力を身につけたいと思っております。 今回もとても勉強になりました。次回もよろしくお願いいたします。 あと途中からChatGPTに解いてもらうことを諦めていましたが、次回はまた挑戦したいと思います。

お知らせ

過去のお知らせ

シリーズ記事一覧

各シリーズの記事を下記にまとめてあります。

我が家のインコ「れもん&ぽぽ&ぐぐ」の日記 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記15 : 落花生、新聞紙、れもんとぐぐの邂逅 インコの飼い方と注意点(2024年版) 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記14 : 大人に近づくれもんと遊ぶ余裕が出てきたぐぐ 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記13 : 生後4ヶ月を迎えたれもんと我が家に慣れてきたぐぐ 我が家のインコ「れもん&ぽぽ&ぐぐ」の日記12 : ぽぽが亡くなりました、そしてぐぐがやってきました インコ仲間「れもん&ぽぽ」の日記11 : ズグロシロハラインコのぽぽ、我が家へ セキセイインコ「れもん」の日記10 : 生後100日のれもん、ついに喋る セキセイインコ「れもん」の日記9 : 換羽期のれもん セキセイインコ「れもん」の日記8 : 病院へ挑戦! セキセイインコ「れもん」の日記7 : 外出用ゲージにチャレンジ! セキセイインコ「れもん」の日記6 : 新宿ことり博に行ってきました! セキセイインコ「れもん」の日記5 : 3週間経って順調に成長している模様 セキセイインコ「れもん」の日記4 : 鳥フェス千葉2024に行ってきました! セキセイインコ「れもん」の日記3 : 2週間経って我が家にも慣れてきた模様 セキセイインコ「れもん」の日記:第2回 セキセイインコの「れもん」が我が家にやってきました!
AlpacaHackで始めるCTF入門 AlpacaHackで始めるCTF入門6:AlpacaHack Round 4 - Simple Flag Checkerに挑戦 AlpacaHackで始めるCTF入門5:AlpacaHack Round 3 - qrimeに挑戦 AlpacaHackで始めるCTF入門4:AlpacaHack Round 2 - Simple Loginに挑戦 AlpacaHackで始めるCTF入門3:初めてのCTFに参加 AlpacaHackで始めるCTF入門2:DreamhackでCTF入門 AlpacaHackで始めるCTF入門1:初めてのCTF
シェル芸 第66回シェル芸勉強会メモ 第64回シェル芸勉強会メモ ChatGPTでシェル芸勉強会の問題が解きたい シェル芸botで遊びたい(Bash)
ROS 2 改訂新版『ROS 2ではじめよう』を読了&メモ書き ROS 2 Jazzy公式チュートリアル02: ROS 2のノードとトピックについて ROS 2 Jazzy公式チュートリアル01: ROS 2 Jazzyのインストールから動作確認まで ROS 2 Humble 公式チュートリアル 02: ROS 2 のノード関係のコマンド ROS 2 Humble 公式チュートリアル 01: 環境構築から turtlesim まで
読書日記 改訂新版『ROS 2ではじめよう』を読了&メモ書き
映画日記 映画日記『ラストマイル』感想【ネタバレあり】
料理日記 料理日記:豆腐春巻き 料理日記:鶏肉とナスのほりにし炒め 料理日記:卵焼き 料理日記:鶏肉の照り焼き&小松菜のおひたし 料理日記:納豆蕎麦 料理日記:ローストビーフ 料理日記:バターガーリックチキン
その他 HTMLのvideoタグで貼った動画のサムネイルがSafariで表示されない問題を解決 WSL2上のUbuntuのVimで矩形選択するための設定 JR東日本公式のお忘れ物チャットにお世話になった話 HTMLとCSSで画像のスライドショーを作成 GitHub Actionsでサーバ上のブログを自動更新 『Omega Crafter』プレイ日記: チュートリアル編 自作ブログ大改造計画 Windows と Ubuntu のデュアルブート HTML数式表示テスト 自作ブログ開始

加藤祐介ブログの著作物はCC BY-NC-ND 4.0で公開されています。
加藤祐介ブログのソフトウェアはApache License 2.0で公開されています。
About License: GitHub - YusukeKatoBlog/LICENSE
© 2023 YusukeKato All Rights Reserved.