print 'Hello YKazu'

('Python', 'Javascript')

bash

splitコマンドで、行単位ファイル分割

# 100行ごと # 3桁数字を末尾に付加 $ split -l 100 -d -a 3 a.dat a.dat $ ls a.dat a.dat000 a.dat001 a.dat002

テキストファイルの行数

# *.datなファイルに絞る $ wc -l `find . -name '*.dat'`

パーミッション

read権限が無くても、ディレクトリ名は表示出来る。 しかし、read権限がなければcdやlsは出来ない。

更新日付からファイル検索する

# カレントディレクトリで10分以内に更新されたファイルを検索 $ find . -type f -mmin -10

less早見表

次ページ f 前ページ b 次行 e 前行 y

.gzのログファイルをgrepする

# 「404」に対するgrep結果を標準出力する $ zgrep 404 access_log-20160722.gz

シェル変数の変数展開

a=Kazu # ダブルクォーテーションは変数展開される name="My name is $a" echo $name # My name is Kazu name='My name is $a' echo $name # My name is $a

実行しっ放しコマンドの落ちてもまた実行させる無限ループ

# 無限ループ while : do # pingやtopなどのコマンド ping localhost ret=$? # 終了ステータスによる死活監視 if [ $ret -ne 0 ]; then echo "status code: $ret" echo "pingを再実行する" fi done

全てのプロセスを確認する

# fでツリー表示になり分かりやすい ps -axf

コマンドラインの定期的実行

# 1秒間隔 watch -n 1 'netstat -na | grep ":3000"'

シェル変数の削除

d=`date | wc -l` # シェル変数の削除 unset d # 特のエラーは起きず、空行が出力される echo $d

正規表現マッチング

line="#comment" # 正規表現を"で囲んではいけないため、\でエスケープさせる必要が有る if [[ $line =~ \#comment ]]; then echo $line fi

if後のパイプ

a=123 b=`if [[ $a ]]; then echo $a else echo "none" fi | cat` echo $b # 123

定数の定義

readonly PI=3.14

[[ 条件式 ]]によるif

var=1 # [[ 条件式 ]]ならば、varが空または未定義ならば構文エラーにならない if [[ $var == 1 ]]; then echo "one" else echo "not not" fi

動的変数に対する代入

var=foo value=3 # $varが動的変数 eval `echo $var=`$value または printf -v $var "%d" $value これで echo $foo # 3

引数で与えられたファイルの読み込み

sh main.sh data.txt main.sh i=1 while read line # 変数lineに、data.txtの1行ずつが格納される do echo "$i: $line" i=`expr $i + 1` done <$1 # ここでdata.txtを指定(引数)

sortによる整列

#foo.dat #1 2016 #2 2020 #3 2009 #4 2004 #5 2015 #6 2010 sort -k2 -r foo.dat # 2列目の降順で整列 結果 2 2020 1 2016 5 2015 6 2010 3 2009 4 2004

指定カラムが正規表現にマッチしている行だけ抽出する

# foo.dat # # foo 2 # bar 3 # hoge 1 # piyo 5 awk '$1~/^hoge/' foo.dat # hoge 1

行数の取得

cat hoge.dat | grep -c "" または cat hoge.dat | wc -l

書式指定のprintf

a="The man" b="is Yoshida" # $aと$bをダブルクォーテーションで囲む必要が有ることに注意 c=$(printf "%s %s." "$a" "$b") echo $c # The man is Yoshida.

日付・時刻の取得

branch='master' today=`date +%Y%m%d_%H%M%S` echo ${branch}_${today} # master_20160615_035307

expectパッケージによるプロンプト入力自動化

#!/usr/bin/expect # 環境変数から参照可能な変数にセット set TARGET_FILE $env(TARGET_FILE) # 最初に投入したいコマンド spawn rm -i $TARGET_FILE # コマンド投入の結果、表示される標準出力に、マッチさせる文字列を定義 expect "rm: " # マッチした場…

sedによるテキストファイル内の文字列置換

オプションgによりファイル全体に対する置換 sed s/2015/2016/g index.php /をエスケープしない方法(但し、ピリオドはエスケープさせる) sed s|/hoge/index\.html|/piyo/index\.html|g index.php

サブディレクトリまで一発で作成

mkdir -p dir/sub_dir1/sub_dir2

ディレクトリの容量確認

# public_html配下の容量確認 find public_html -maxdepth 1 -type d | awk '{res = system("du -shx "$1)}'

シンボリックリンク

ファイルに対するシンボリックリンク作成の基本形 # test.sh -> dir1/dir2/dir3/hoge.py # [相対パスによるリンク先の指定] [リンク名] ln -s dir1/dir2/dir3/hoge.py hoge.py リンク名がリンク先と同一ならば # test.sh -> dir1/dir2/dir3/hoge.py # [相対…