More Related Content
Similar to 2017-12-04 Linuxの基本構造とBashでの扱い方
Similar to 2017-12-04 Linuxの基本構造とBashでの扱い方 (20)
2017-12-04 Linuxの基本構造とBashでの扱い方
- 7. 【プロセス】 Bashの基本書式
Simple Commands (コマンド)
• Delimiters: space や tab
• Words: 0-9A-Za-z+-=:%#@^_{} …
Pipelines
• command | input-command
Lists
• || && & ; newline
Compound Commands
• (lists) や { lists;}
Shell Function Definitions
• func_name() compound-commands
コマンドは文字列
7
- 12. 【ファイルシステム】 shopt
shopt -s globstar
**
• / にもマッチする
さらに強力なパターンマッチも利用可能
shopt -s extglob
?(pattern|pattern…)
*(pattern|pattern…)
+(pattern|pattern…)
@(pattern|pattern…)
!(pattern|pattern…)
12
- 18. 【小ネタ】 地味に便利なCtrlキー
• ^C 中断 (kill -SIGINT pid)
• ^D ログアウト (logout)
• ^R ヒストリーのインクリメント検索
• ^H / ^D バックスペース/デリート
• ^W スペース・タブ直後までバックスペース
• ^A 先頭まで移動
• ^E 末尾まで移動
• ^U 先頭まで削除
• ^K 末尾まで削除
• ^B (backward) ^N (next) ^P (previous) ^F (forward) :
移動 viのhjklに相当
• ^V 制御文字を直接入力
18
- 19. 【問題】 連番を出力
解答例
seq 10
ruby -e 'p *(1..10)'
echo {1..10} | xargs –n1
(あるいは | tr ' ' '⧵n')
(あるいは | sed 's/ /⧵n/g')
for i in {1..10}; do echo $i; done
for((i=1;i<=10;i++)); do echo $i; done
出力例
1
2
3
…
9
10
19
- 20. 【問題】 連番を出力
解答例
seq 10
ruby -e 'p *(1..10)'
echo {1..10} | xargs –n1
(あるいは | tr ' ' '¥n')
(あるいは | sed 's/ /¥n/g')
for i in {1..10}; do echo $i; done
for((i=1;i<=10;i++)); do echo $i; done
20
- 21. 【問題】 連番のファイルを生成
解答例
touch {01..10}
seq –w 10 | xargs touch
printf ' %02d' `seq 10` | xargs touch
for((i=1;i<=10;i++)); do
f=0$i
>>${f:$((${#i}-1)):2}
done
21
期待結果
$ ls
01 03 05 07 09
02 04 06 08 10
- 22. 【問題】 連番のファイルを生成
解答例
touch {01..10}
seq –w 10 | xargs touch
seq –f %02g 10 | xargs touch
printf ' %02d' `seq 10` | xargs touch
for((i=1;i<=10;i++)); do
f=0$i
>>${f:$((${#i}-1)):2}
done
22
- 23. 【問題】 大きいサイズのファイル生成
解答例
head -c $((10**6)) /dev/zero >file
期待結果
$ ls -l
-rw-rw-rw- 1 root root 1000000 11月 29 14:00 file
$ cat file
# やや重いが何も表示されない
23