これはtraP新歓ブログリレー奈々日目の記事です.
みなさんこんにちは!traPのYosotsuです.
ところで今日はなんの日でしょうか?
正解は高町なのはちゃんの誕生日です!!!!!
特に高町なのはちゃんと関係はないですが,シェル芸についてお話したいと思います.
ニワカなのでプロの方はブラウザバックしてください.
シェル芸とは?
USP友の会会長の上田隆一氏によると
主にUNIX系オペレーティングシステムにおいて「マウスも使わず、ソースコードも残さず、GUIツールを立ち上げる間もなく、あらゆる調査・計算・テキスト処理を CLI端末へのコマンド入力 一撃で 終わらせること」
ソース:https://ja.wikipedia.org/wiki/USP友の会
なんか難しそうなことが書かれてますが,実は普段の生活でもバリバリ使えていけちゃうんです!
その1
問題
あるディレクトリに99個の動画ファイルがある:
$ ls
1GHXHzfnなのはとイチャイチャその82.mp4
2c3Jqe5uなのはとイチャイチャその44.mp4
6QB6jrr3なのはとイチャイチャその36.mp4
A1s8i4M5なのはとイチャイチャその13.mp4
CjXrV0Dlなのはとイチャイチャその04.mp4
ExkqKXcyなのはとイチャイチャその98.mp4
I7icXAnMなのはとイチャイチャその02.mp4
RB5QV9jPなのはとイチャイチャその77.mp4
SeckjUliなのはとイチャイチャその73.mp4
m7wVUVywなのはとイチャイチャその41.mp4
...
これらのファイルのファイル名は最初にランダムな8文字の英数字があり,その後は"そのxx"を除いて共通している.各ファイルのファイル名の最初の8文字を消去してください.
答え
エクスプローラーでもFinderでもいいので1つ1つ消去する.
答え1
ls *.mp4 | sed -rn "s/[a-z0-9]+_(.*\.mp4)$/mv & \1/p" | sh
置換を使ったわかり易い例
答え2
ls *.mp4 | awk '{print "mv " $0 " " substr($0, 9)}' | sh
ランダムな文字列の長さが8文字固定だとわかっている場合はこれでも可能
実例
100本ではないですが.48本落としたときにこんな感じでした.
その2
問題
ある100枚の画像が存在するディレクトリがある.
$ ls
fate.gif hayate.gif nanoha.gif ...
これらの画像は50x50の正方形ではあるものの,左右に25pxずつ謎の白い余白が入っているためこのままアップロードすると表示が崩れてしまう.左右の余白を消去してください.
答え
演習室に行ってphotoshopを使うといいですよ.
答え1
ls *.gif | awk '{printf "convert "$0" -background none -gravity center -extent 33x33 _"$0".gif"}'| sh
実例
部内SNSのスタンプを作るときに使いました.
詳しくは
興味が湧いた人はシェル芸勉強会とかで検索すると面白いと思います.
全くわかんねえよ!とかそもそもシェルって何?という人は5月に講習会が開かれると思いますので,ぜひ入部して参加してください!!!!!!!!
明日はeiyaくんです!
このpostのidは666,フリーメイソン。もうパンドラの箱は開いちゃってるってこと。