Top Banner
Navel GNU BSD ____________ < here we go > ------------ ¥ ^__^ ¥ (oo)¥_______ (__)¥ )¥/¥ ||----w | || || _____________ < pretty good > ------------- ¥ ¥ /¥/¥ ¥ / | 0 >> |___| __((_<| | ( | (__________) | | | | かいたひと:hisakazu
31

Oneliner

Aug 17, 2015

Download

Engineering

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Oneliner

$ who oneliner提 供NavelGNUBSD

____________< here we go >------------

¥ ^__^¥ (oo)¥_______

(__)¥ )¥/¥||----w ||| ||

_____________< pretty good >-------------

¥¥ /¥/¥

¥ /| 0 >>|___|

__((_<| |( |(__________)

| || |/¥ /¥ かいたひと:hisakazu

Page 2: Oneliner

Page: Date:

♪ 資料はこちら

Bashとコマンドの勉強会2 2015/6/19

マウス? いえ,知らない子ですね...

oneline $ wget https://copy.com/DshWfebrj9Xa2nar -O ol.pptm

普通にDLして下さいww

Page 3: Oneliner

Page: Date:

♪onlinerの発端です(スライドシェアにおいてあります).

onelineのはじまり

Bashとコマンドの勉強会3 2015/6/19

「第3回 シェル芸爆破デスマッチ勉強会」で検索

Page 4: Oneliner

Page: Date:

♪ こうぎのもくてきっ!!!terminalさんと仲良くしよう!!!決してonlinerになれっ!と言っているわりではありません

Bashとコマンドの勉強会4 2015/6/19

シェルとしか会話できない間違い

Linux/Unix環境に投げ込まれても生きてゆける力を正解

$ そんなキッカケが作れたら良いと思います

Page 5: Oneliner

Page: Date:

♪• 注意書き• エスケープシーケンス• シングルクォートとダブルクォート• ブレース展開とコマンド呼び出し• パイプとリダイレクト• 閑話休題(kernelとshellとterminal)• シェルスクリプトを書いてみよう• find, xargs, grep• おまけ

• ducks, 知っていたら便利なコマンド

Outline

Bashとコマンドの勉強会5 2015/6/19

Page 6: Oneliner

Page: Date:

♪ 注意書き

Bashとコマンドの勉強会6 2015/6/19

りそな

zsh?何ですかそれ?それって本当に使えるんですか?役立たずじゃないんですか?腐ってるんじゃないんですか?

そんな外来種使えるわけ無いじゃないですか?

$ この実習で使うシェルはBashです

あくまで,私の個人的な考えですが!!!素晴らしい対話能力の持つzshはとても使い勝手の良いshellです.しかし,その対話能力はあなたの学習意欲をダメにします!!!zshは,すぐに股を開く女です.

Page 7: Oneliner

Page: Date:

♪シェルスクリプトに最適なのはsh(もしくはcsh)です.日常的にterminalを触るのではあればzshです.しかし,Linux/Unix環境に投げ込まれても生きてゆける力をという観点からみると bash です.

Shell

Bashとコマンドの勉強会7 2015/6/19

種類 採用状況 対話処理 スクリプト処理 文法形式 汎用性sh 標準 不向き 良 Bourne 優ksh AIX 良 良 Bourne 可bash Linux,Mac 良 良 Bourne 可zsh 追加 優 優 Bourneα 可csh 標準 良 不向き C Shell 良tcsh FreeBSD 良 不向き C Shell 可

α : BourneでもC Shellでも両方で記述できます

Page 8: Oneliner

Page: Date:

♪普通でない文字(特殊文字)ex. tab, null, clear, newline, etc...

エスケープシーケンス

Bashとコマンドの勉強会8 2015/6/19

$ どうやって確認するんですか?

を使いましょう(次に入力される文字を通常文字・非文字関係なくそのまま表示する)

Ctrl+v

Page 9: Oneliner

Page: Date:

♪ ここからは実習です

Bashとコマンドの勉強会9 2015/6/19

oneline $ wget https://copy.com/oYszAsX0CanTRFXj -O ol.taroneline $ tar -xf ol.ziponeline $ cd oneline

自分の任意のディレクトリで作業して下さい.

Page 10: Oneliner

Page: Date:

♪エスケープシーケンスや変数の扱い方を決める

シングルクォートとダブルクォート

Bashとコマンドの勉強会10 2015/6/19

全て文字として扱うシングル

エスケープシーケンスや変数として扱うダブル

oneline $ hisa=goodoneline $ echo ‘${hisa}’ > foooneline $ cat foo; echo${hisa}

oneline $ echo “${hisa}” > foooneline $ cat foogood ${hisa}の中身

${hisa}という文字列コマンドの連続実行

空白ダメ

Page 11: Oneliner

Page: Date:

(かもめかっこ)の中身を展開しリスト型の引数に変換

ブレース展開とコマンド呼び出し

Bashとコマンドの勉強会11 2015/6/19

oneline $ mkdir -p {app,vendor}/assets/{css,js}oneline $ tree略

oneline $ echo 192.168.1.{1..5}

oneline $ bashrc_head=`head –n 1 ~/.bashrc`

ブレース展開

コマンド呼び出し

{1,2,3,4,5}

(バッククォート)で囲まれたコマンドを実行し結果を格納

{}

``

空白ダメ

実行結果が変数に

親フォルダもつくる

Page 12: Oneliner

Page: Date:

標準出力を別の標準入力に繋げる(別プロセスが立ち上がる)

パイプとリダイレクト

Bashとコマンドの勉強会12 2015/6/19

パイプ

リダイレクト

cmd1 cmd2

pipe

標準入力/出力を任意に変更(ファイルやコマンドの実行結果)基本はキーボード/ディスプレイoneline $ cat ~/.bashrc > .bashrc.bkoneline $ cat ~/.bashrc >> .bashrc.bkoneline $ head –n 5 < ~/.bashrc

res

Page 13: Oneliner

Page: Date:

♪パイプのいいところ,一時ファイルを作らなくてよい

パイプをもう少し

Bashとコマンドの勉強会13 2015/6/19

$ エレガント = tmpファイルがいらないワンラインex1. Copyという文字列を含むプロセスを表示oneline $ ps aux | grep Copy | grep –v Copy

oneline $ cat foo.html | wc -l

grepプロセスを除外

ex2. ファイルfooの行数を表示

ex3. ファイルfooのタブをスペース2つに変換しファイルbarにoneline $ cat foo.html | sed -e ‘s/¥t/¥ ¥ /g’ > bar.html

特殊文字はエスケープ

line

Page 14: Oneliner

Page: Date:

♪ex4. 重複する行を削除

あとちょっと

Bashとコマンドの勉強会14 2015/6/19

oneline $ cat double.txt | sort -d | uniq > single.txtdictionary order 連続する重複を削除

Page 15: Oneliner

Page: Date:

♪ kernelとshellとterminal

Bashとコマンドの勉強会15 2015/6/19

kernel

shell

terminalOSの核となるプログラムでshellとやりとりを行う

kernel

shell

ユーザに変わってkernelとやりとりを行うプログラム

shell

端末エミュレータのこと専用端末の機能を代替するソフト

Page 16: Oneliner

Page: Date:

♪ シェルスクリプトを書いてみよう(1/2)

Bashとコマンドの勉強会16 2015/6/19

oneline $ vi account.sh#!/bin/bash## This is a sample file# account.sh#email=`cat /dev/urandom | tr -dc “a-zA-Z0-9” | head -c 10`passwd=`cat /dev/urandom | tr –dc “a-zA-Z0-9” | head –c 16`echo “email : ${email}@gmail.com”echo “passwd : ${passwd}”oneline $ chmod 755 account.shoneline $ lsaccount.shoneline $ ./account.shemail : [email protected] : qunPSqwbGTkSysQa

マジックナンバー:実行するプログラムを指す

実行ファイルに変更

乱数発生 “a-z..”以外を削除 先頭10文字だけ表示

実行結果

偽のGoogleアカウントを作るシェルスクリプト

Page 17: Oneliner

Page: Date:

♪ シェルスクリプトを書いてみよう(2/2)

Bashとコマンドの勉強会17 2015/6/19

oneline $ vi account.sh#!/bin/bash## This is a sample file# account.sh#email=`cat /dev/urandom | tr -dc “a-zA-Z0-9” | head -c 10`passwd=`cat /dev/urandom | tr –dc “a-zA-Z0-9” | head –c 16`echo “email : ${email}@gmail.com”echo “passwd : ${passwd}”oneline $ chmod 755 account.shoneline $ lsaccount.shoneline $ ./account.shemail : [email protected] : qunPSqwbGTkSysQa

偽のGoogleアカウントを作るシェルスクリプト

Page 18: Oneliner

Page: Date:

♪ find, xargs, grep

Bashとコマンドの勉強会18 2015/6/19

find

ディレクトリ内を再帰的に探索するコマンド,オプションが豊富

xargs

標準入力を読み込みそれを因数として指定したコマンドを実行

grep

標準入力やファイルから文字列を検索する

oneline $ find . -type f -name “*.log”

oneline $ cat filelist.txt | xargs -I % cp % %~

oneline $ grep -E ‘state’ scanpathlist.txt

Page 19: Oneliner

Page: Date:

♪ find, xargs, grep

Bashとコマンドの勉強会19 2015/6/19

oneline $ find . -maxdepth 1 -mindepth 1 | xargs du -sh

oneline $ find . -size +100k -type f | xargs rm

oneline $ find . -perm 755 | sed -e ‘s/^¥.¥///g’

カレントディレクトリだけを検索 sum / human readble

100KB以上を検索

モードで検索(ex.実行ファイル) ‘./’を削除

ex.1 カレントディレクトリ内の各々ファイル容量を調べる

ex.2 10KB以上のファイルを削除

ex.3 実行ファイルのパスから./を削除

Page 20: Oneliner

Page: Date:

ex.5 検索したファイルのバックアップをとる(ファイル名に空白があっても大丈夫),バックアップを削除

find, xargs, grep

Bashとコマンドの勉強会20 2015/6/19

oneline $ find . -name “*.log” | xargs grep -H Commandline

oneline $ find . -type f -print0 | xargs -0 -I % cp % %.org

ファイル名を表示

ファイルだけ検索 区切り文字はヌル文字 区切り文字はヌル文字

ex.4 .logとつくファイルからwarningという文字列を検索

oneline $ find . -type f -print0 | xargs -0 rm

Page 21: Oneliner

Page: Date:

Bashとコマンドの勉強会21 2015/6/19

oneline $ grep -iE ‘^ *<[a-zA-Z]+’ index.html | wc -l

oneline $ ¥grep -iEo ‘<a href=”http://[a-zA-Z0-9./-]*’index.html ¥sed -e ‘s/<a href=“//g’ > urllist.txt

oneline $ cat wakaruwa.html | grep -iHn -A 3 -B 3 ‘<wakaruwa’

タグの始まりinsentive/extend REGRXP line

<a>のhttpなトコだけ

<a hrefを削除

行番号を表示 前3行 後3行

find, xargs, grepex.6 index.htmlからタグ数をカウントする

ex.7 index.htmlからリンク一覧を取得する

ex.8 ‘wakaruwa’が含まれている前後3行を表示する

Page 22: Oneliner

おまけ

2015/6/19 Bashとコマンドの勉強会 22

Page 23: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会23 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンラインoneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

長いので1つずつ見て行きましょう

Page 24: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会24 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンライン

oneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

du

引数で指定したファイル/ディレクトリの容量を出力

他のファイルシステムで管理されているのはスキップ

sum

Page 25: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会25 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンライン

oneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

sort

引数で指定したファイル/ディレクトリの容量を出力numeric

Page 26: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会26 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンライン

oneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

cut

ファイルから指定した部分の文字列を切り出して出力

Page 27: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会27 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンライン

oneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

このワンラインで完成してます(実は

Page 28: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会28 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンライン

oneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -f1`”¥ttotal”

カレントディレクトリのトータルを表示

バックスラッシュを有効化 容量部分を抜き出し

Page 29: Oneliner

Page: Date:

♪ ducks

Bashとコマンドの勉強会29 2015/6/19

カレントディレクトリのファイルやディレクトリの容量を昇順で表示するワンラインoneline $ du -x -s * | sort -n | cut -f2 | ¥xargs -I % du -sh %; du -s | echo -e “`cut -ft1`”¥ttotal”

ducksの完成(やってみてね!

Page 30: Oneliner

Page: Date:

♪ 知ってたら便利なコマンド

Bashとコマンドの勉強会30 2015/6/19

date du tail head df ln

more alias less bc awk cal

col tee script curl env read

passwd chmod chown chgrp man nkf

tree scp ssh wc kill ps

jobs top sort cut test time

touch stty which who wget vim

seq tac uniq nohup history fg/bg

Page 31: Oneliner

おしまい

2015/6/19 Bashとコマンドの勉強会 31