【問題のみ】jus共催 第30回危念シェル芸勉強会
Sat Aug 26 12:53:24 JST 2017 (modified: Sat Sep 30 16:15:34 JST 2017)
views: 2737, keywords:コマンド,CLI,シェル芸,シェル芸勉強会 この記事は最終更新日が7年以上前のものです。
問題で使うファイル等
GitHubにあります。ファイルは
https://github.com/ryuichiueda/ShellGeiData/tree/master/vol.30
にあります。
クローンは以下のようにお願いします。
git clone https://github.com/ryuichiueda/ShellGeiData.git $
環境
解答例はUbuntu Linux 16.04 で作成。Macの場合はcoreutilsをインストールすると、GNUのコマンドが使えます。BSD系の人は玄人なので各自対応のこと。
イントロ
Q1
リポジトリの中に、次のようなディレクトリがあります。
tree posts
$ posts
20170806_check_of_webhook
├── main.md
│ └── 20170810_negi
├── green_negi.jpg
│ ├── main.md
│ ├── white_negi.jpg
│ ├── .pdf
│ └── ねぎ20170810_negistagram
├── main.md
│ └── 20170812_work
├── 20170812_working
├── main.md
│ └── 20170814_layout
├── main.md
│ └── 20170818_bash
├── main.md
│ └── 20170820_bootstrap
├── main.md
│ └── 20170820_injection
├── main.md
│ └── template
└── main.md └──
この中の、各main.mdは次のようなヘッダ付きのマークダウンです。
cat posts/20170818_bash/main.md
$ ---
Keywords: 嫌がらせ
Copyright: (C) 2017 Ryuichi Ueda
---
# 検索機能への嫌がらせ
Keywords: ワッショイ
Keywords: ワッショイ
Keywords: ワッショイ
これらのファイルから、次のような出力を作ってください。なお、Keywordsの行は各ファイルで最初にある行しか抽出しないこととします。
20170806_check_of_webhook Keywords: Webhook
20170810_negi Keywords: ネギ
20170810_negistagram Keywords: Twitter, Instagram, ネギ
20170812_working Keywords: 働けども働けども, bashcms2
20170814_layout Keywords: table, 雑
20170818_bash Keywords: 嫌がらせ
20170820_bootstrap Keywords: Bootstrap
20170820_injection Keywords: injection
template Keywords:
Q2
次のHTMLファイルurl.htmlについて、リンクが相対パスになっているものについては頭に/files/をつけて、/から始まっているものとhttpやhttpsから始まっているものはそのままにしてください。できる人は変なところに改行があるものなどに対応できるように、なるべく一般解に近づけましょう。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<ul>
<li><a href="./hoge.html">ほげ</a></li>
<li><img src="ayasii.jpg" alt="怪しい" /></li>
<li><a href="https://blog.ueda.tech/">クソブログ</a><a href="huge.html">ふげ</a></li>
<li><a href="/root.jpg"></a>これはそのまま</li>
<li><a href="http://www.usptomo.com/">更新してない</a></li>
</ul>
</body>
</html>
次が出力例です。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<ul>
<li><a href="/files/hoge.html">ほげ</a></li>
<li><img src="/files/ayasii.jpg" alt="怪しい" /></li>
<li><a href="https://blog.ueda.tech/">クソブログ</a><a href="/files/huge.html">ふげ</a></li>
<li><a href="/root.jpg"></a>これはそのまま</li>
<li><a href="http://www.usptomo.com/">更新してない</a></li>
</ul>
</body>
</html>
Q3
次のファイルについて、
cat list
$ * 妬み
* 嫉み
* 僻み
次のようにHTMLにして、頭にHTTPヘッダをつけてください。インデントは不要ですがタグは1行1個でお願いします。
Content-Type: text/html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<ul>
<li>妬み</li>
<li>嫉み</li>
<li>僻み</li>
</ul>
</body>
</html>
すぐできて退屈な人は、インターネット上のサーバでこのHTMLファイルを送信するサーバをワンライナーで立ててください。
Q4
&&や;でコマンドを繋いだワンライナーで、GitHubにリポジトリを作ってそこにテキストファイルを一つ置いてください。
Q5
次のファイルの1行目の複素数と2行目の複素数をかけ算してください。
cat complex
$ 1 + 4*i
3 - 2*i
Q6
フィボナッチ数列で、6765の4つ前の数を出力してください。
Q7
次の数字の列について、00, 01, 02,...,99の数字2つ並びのうち、含まれないものを抽出してください。できる人はループを使わないで抽出してください。
cat nums
1232154916829552629124634124821535923503018381369677458868876877570978993996890718096846698577281037379417474410221480004050608111920262721512985412925301
Q8
次のアルファベットの区間のうち、間に含まれるアルファベットが一番多いものはどれでしょうか。
cat alphabet
$ a-g
e-q
z-v
r-y