提 供 Navel GNU BSD ____________ < here we go > ------------ ¥ ^__^ ¥ (oo)¥_______ (__)¥ )¥/¥ ||----w | || || _____________ < pretty good > ------------- ¥ ¥ /¥/¥ ¥ / | 0 >> |___| __((_<| | ( | (__________) | | | | /¥ /¥ かいたひと:hisakazu
$ 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 : [email protected] : 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 : [email protected] : 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