●tarコマンド
【メモ】アーカイブ指定したディレクトリごとアーカイブされ、別のファイルパスで展開すると、アーカイブ指定したディレクトリ含めて復元される
# 検証用ファイル準備
[root@server002 ~]# pwd
/root
[root@server002 ~]# ls
anaconda-ks.cfg common.cnf main.sh test.sh
[root@server002 ~]# mkdir -p aaa/bbb/ccc
[root@server002 ~]# cp common.cnf main.sh aaa/bbb/ccc/
[root@server002 ~]# ls -l aaa/bbb/ccc/
total 8
-rw-r--r-- 1 root root 3838 Mar 26 15:14 common.cnf
-rwxr-xr-x 1 root root 489 Mar 26 15:14 main.sh
# aaaディレクトリの内容をアーカイブ。zオプション付いているので圧縮もされる
[root@server002 ~]# tar cvfz aaa.tar.gz aaa
aaa/
aaa/bbb/
aaa/bbb/ccc/
aaa/bbb/ccc/common.cnf
aaa/bbb/ccc/main.sh
[root@server002 ~]# ls -l
total 20
drwxr-xr-x 3 root root 17 Mar 26 15:14 aaa
-rw-r--r-- 1 root root 1436 Mar 26 15:16 aaa.tar.gz
-rw-------. 1 root root 1580 Mar 17 18:23 anaconda-ks.cfg
-rw-r--r-- 1 root root 3838 Mar 20 20:40 common.cnf
-rwxr-xr-x 1 root root 489 Mar 20 20:40 main.sh
-rwxr-xr-x 1 root root 518 Mar 20 16:06 test.sh
# tオプションで内容確認
[root@server002 ~]# tar tf aaa.tar.gz
aaa/
aaa/bbb/
aaa/bbb/ccc/
aaa/bbb/ccc/common.cnf
aaa/bbb/ccc/main.sh
[root@server002 ~]# cp aaa.tar.gz /home/customer/
# コピー先での展開確認
[customer@server002 ~]$ pwd
/home/customer
[customer@server002 ~]$ ls -l
total 4
-rw-r--r-- 1 root root 1436 Mar 26 15:18 aaa.tar.gz
[customer@server002 ~]$ tar -tf aaa.tar.gz
aaa/
aaa/bbb/
aaa/bbb/ccc/
aaa/bbb/ccc/common.cnf
aaa/bbb/ccc/main.sh
# xオプションで展開
[customer@server002 ~]$ tar xvzf aaa.tar.gz
aaa/
aaa/bbb/
aaa/bbb/ccc/
aaa/bbb/ccc/common.cnf
aaa/bbb/ccc/main.sh
[customer@server002 ~]$ ls -l
total 4
drwxr-xr-x 3 customer customer 17 Mar 26 15:14 aaa
-rw-r--r-- 1 root root 1436 Mar 26 15:18 aaa.tar.gz
[customer@server002 ~]$ cd aaa/bbb/ccc/
[customer@server002 ccc]$ ls -l
total 8
-rw-r--r-- 1 customer customer 3838 Mar 26 15:14 common.cnf
-rwxr-xr-x 1 customer customer 489 Mar 26 15:14 main.sh
[customer@server002 ccc]$
参考:tarコマンド
https://hydrocul.github.io/wiki/commands/tar.html
●複数行コメントアウト
# 以下の形式で複数行コメントアウトとなる
<< 任意の文字列
任意の文字列(最初に指定した文字列と同じであること)
# echo "ccc", echo "ddd"は実行されない
[root@server002 ~]# cat test2.sh
#!/bin/sh
echo "aaa"
<< MULTI_LINE_COMMENT
ehco "ccc"
echo "ddd"
MULTI_LINE_COMMENT
echo "bbb"
# 実行
[root@server002 ~]# sh -x ./test2.sh
+ echo aaa
aaa
+ echo bbb
bbb
●vi置換
# a→Aにしたい場合。コマンドモードにしてから%と続ける
:%s/a/A/
# echo→//bin/echo。/を含む文字の場合、エスケープ記号を利用するか、区切り文字を/から;に変更する
:%s/echo/\/bin\/echo/
:%s;echo;/bin/echo;gc
# 上のgオプションは全ての行が対象、cオプションは変更していいか確認を促す
replace with /bin/echo (y/n/a/q/l/^E/^Y)? ← 変更してよければy