feature image

2019年3月15日 | ブログ記事

普段の生活で使えるシェル芸【新歓ブログリレー2019 7日目】

これは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,フリーメイソン。もうパンドラの箱は開いちゃってるってこと。

Yosotsu icon
この記事を書いた人
Yosotsu

駆け出しぷろぐらま

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2019年4月22日
アセンブリを読んでみよう【新歓ブログリレー2019 45日目】
eiya icon eiya
2019年4月16日
Logicのすヽめ+新歓コンピ宣伝
SolunaEureka icon SolunaEureka
2019年3月16日
競技プログラミングを始めよう【新歓ブログリレー2019 8日目】
eiya icon eiya
2019年4月12日
iPadでGitお絵かきをしよう!
oribe icon oribe
2019年3月20日
大富豪やろうぜ。【新歓ブログリレー2019 12日目】
iF icon iF
2019年4月24日
gnuplotで遊ぼう
mds_boy icon mds_boy
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記