Oneliner

Post on 17-Aug-2015

55 Views

Category:

Engineering

3 Downloads

Preview:

Click to see full reader

Transcript

$ who oneliner提 供NavelGNUBSD

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

¥ ^__^¥ (oo)¥_______

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

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

¥¥ /¥/¥

¥ /| 0 >>|___|

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

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

Page: Date:

♪ 資料はこちら

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

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

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

普通にDLして下さいww

Page: Date:

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

onelineのはじまり

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

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

Page: Date:

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

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

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

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

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

Page: Date:

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

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

Outline

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

Page: Date:

♪ 注意書き

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

りそな

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

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

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

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

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: Date:

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

エスケープシーケンス

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

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

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

Ctrl+v

Page: Date:

♪ ここからは実習です

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

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

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

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: 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: Date:

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

パイプとリダイレクト

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

パイプ

リダイレクト

cmd1 cmd2

pipe

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

res

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: Date:

♪ex4. 重複する行を削除

あとちょっと

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

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

Page: Date:

♪ kernelとshellとterminal

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

kernel

shell

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

kernel

shell

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

shell

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

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 : zyMBRA4qwJ@gmail.compasswd : qunPSqwbGTkSysQa

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

実行ファイルに変更

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

実行結果

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

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 : zyMBRA4qwJ@gmail.compasswd : qunPSqwbGTkSysQa

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

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: 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: 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: 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行を表示する

おまけ

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

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: 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: 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: 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: 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: 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: 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: 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

おしまい

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

top related