Closed9
Linuxコマンド
文字コード/改行コードの確認・変更
1. 文字コード/改行コードの確認
nkf --guess [ファイル名]
2. 改行コードの確認(1行ごと)
cat -e [ファイル名]
- ^M: CR
- $: LF
- ^M$: CRLF
3. 文字コードの変更(上書き)
- 以下は、UTF-8として上書きする場合
nkf -w --overwrite [ファイル名]
4. 文字コードの変更(上書き)
- 以下は、LFとして上書きする場合
nkf -d --overwrite [ファイル名]
参考
圧縮、解凍
1. zip, unzip
- zipファイル内の特定のファイルのみ解凍する
# abc.zip内のdef/ghi.txtのみ解凍したい場合
unzip abc.zip def/ghi.txt
参考
リモートサーバへの転送、破損確認
破損確認
- md5sumを使用する
ローカル → リモートサーバへコピーする場合
# md5sumのインストール確認
md5sum --version
# md5チェックサムの計算
find . -name "*.zip" | xargs md5sum > md5sum.txt
# ローカル→リモートサーバへコピー
scp "*.zip" md5sum.txt user@remote.host:~/files/.
# リモートサーバに移動
ssh user@remote.host
cd ~/files/
# 破損していないか確認
md5sum -c md5sum.txt
リモート → ローカルサーバへコピーする場合
# リモートサーバにSSH接続
ssh user@remote.host
# md5sumのインストール確認
md5sum --version
# md5チェックサムの計算
find . -name "*.zip" | xargs md5sum > md5sum.txt
# ローカルサーバへ戻る
exit
# リモート→ローカルサーバへコピー
scp user@remote.host:~/files/\{*.zip,md5sum.txt\} .
# 破損していないか確認
md5sum -c md5sum.txt
参考
実行ファイルのあるディレクトリに移動する
以下、シェルスクリプト(bash)内で記述
# 実行ファイルのあるディレクトリに移動する
cd `dirname $0`
# 実行ファイルのあるディレクトリ配下のディレクトリに移動する
cd "$(dirname $0)/aaa/bbb"
参考
$(cd $(dirname $0)/.. && pwd) と $(cd $(dirname $0) && pwd) の違い | stack overflow
duとlsの違い
du: ブロックサイズ(→ファイルシステムによって異なる)、ls: ファイルサイズ
lsのtotalも割り当てブロックの合計なので、ファイルサイズは同じでもファイルシステムが違えば異なる可能性があるパーミッション
- パーミッションとできること
https://www.infraeye.com/study/linuxz26.html
bashで〇〇する
(1) 環境変数を設定する
① export
- シェルファイルの中の処理だけで使いたいならexportで設定すればOK
- 以降の使いたいなら、sourceコマンドでファイルの記述を読み込んで反映させる
http://omoshiro-joho.com/tech-center/tips/tips_200408170045.html
② declare
- declareコマンドのxオプションでもOK
https://atmarkit.itmedia.co.jp/ait/articles/1905/30/news017.html
③ ループでの変数設定
- ループの外側でも参照させるには、パイプ(|)ではなく、リダイレクトからファイルを読み込ませる必要がある
https://www.ilovex.co.jp/Division/ITD/archives/2008/03/shell.html
(2) &&, || を使う
- くくる場合は、[ ではなく、 [[ で
https://blog.denet.co.jp/post/
(3) 手動実行時とクーロン実行時に意識すべきこと
手動実行時とクーロン実行時ではユーザーが異なるため、少なくとも、
- 環境変数
- パス
の違いによる影響については意識しておく必要がある
①環境変数
- 確認コマンド
printenv
- 設定コマンド
export XXX=abcde
declare -rx XXX=abcde
→ どちらも環境変数XXXにabcdeを設定するコマンド
→→ 後者は一度シェル変数として設定した後にエクスポートする
②パス
- 確認コマンド
echo $PATH
- 設定コマンド
PATH=/usr/local/bin:$PATH
→ /usr/local/bin をPATHに追加している
(4) ファイルの中身を1行ずつ読み込む
while read line do ~ done
#!/bin/bash
while read line
do
echo $line
done < ファイル名
ディレクトリ構造と用途
sed
ファイル内の文字列を置換する
# hoge.txt内の文字列「hige」すべてを文字列「hoge」に置換する
sed -i s/hige/hoge/g hoge.txt
# 拡張子が.txtのファイルの文字列「hige」すべてを文字列「hoge」に置換する
find *.txt | xargs sed -i "s/hige/hoge/g"
# カレントディレクトリ配下のファイルの文字列「hige」すべてを文字列「hoge」に再帰的に置換する
find . -type f | xargs sed -i "s/hige/hoge/g"
このスクラップは2021/07/31にクローズされました