役にたつLinuxコマンド【Shell】
ググると基本的なコマンドの一覧を記載したサイトは多くあるのですが、
実務でよく使うようなLinuxコマンド(shell)一覧はあまり見たことがない
なので、自分で作成してみました。
よかったら、参考にしてください。
.bashrcの中身を確認
sudo cat ~/.bashrc
探したい文言を含んだファイルを探す
find ./ -name '*' | xargs grep '探したい文言'
フォルダ階層及びファイル名を表示
疑似ツリーコマンドです。
$ pwd;find . | sort | sed '1d;s/^\.//;s/\/\([^/]*\)$/|--\1/;s/\/[^/|]*/| /g'
※以下のように出力されます。
/Users/yone098/work/yone098
|--AAA
| |--aaa
|--B B
| |--aaa
| |--bbb
| |--vvv
| | |--www
|--CCC
| |--aaa
| |--bbb
| |--ccc
| |--dd
| |--ee ee
| |--yyy
| | |--iii
| | | |--eee
| | | | |--foo.txt
|--dd
|--hoge.txt
ファイル操作コマンド
私は、業務でファイル操作をすることが多いので、
ファイル操作に便利なコマンドを纏めました。
ファイル名が文字化けしたファイルをリネームする
ファイル名が文字化けしているファイルは、catやcpコマンドで
ファイルを指定することができません。
そこで、ファイル番号を確認>ファイル番号でリネーム
という流れになります。
## ls -li でファイルの番号を確認する。
ls -li
以下のように出力されます。
2883626 -rw-r--r-- 1 root root hoge_??q?f?[?^.csv
## ファイル番号単位でリネーム
find . -inum 2883626 -exec mv '{}' mojibake01.csv \;
hoge.csvの4カラムにどんな値が何個づつあるか調べて、そのTOP10を表示する。
cat hogehoge.csv | awk -F',' '{print $4}' | sort | uniq -dc | head
hoge.tsvが正しくタブ区切りになっているか調べる
タブが入っているのかスペースが入っているのかが、
ターミナル画面では判別できないため、以下のコマンドで確認します。
cat hoge.tsv |sed "s/\t/[tab]/g"
AWS環境で使えるコマンド
describeコマンドを組み合わせて使えるコマンドを以下に記載
S3に置いたままファイルの中身を見る。
s3上に置いてあるファイルの中身を見る場合、サーバにコピーして、
catなりlessなりでみている必要があるのですが、
以下コマンドでそのままみれます。
aws s3 cp s3://hoge.csv -
#さらにパイプ渡しで様なことができます 。
※例えば、行数をナンバリングしながら表示
aws s3 cp s3://hoge.csv - |cat -n
起動しているEC2サーバで「hogehoge-server」の一覧を取得
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --query 'sort_by(Reservations[*].Instances[*].{Name:Tags[?Key==`Name`].[Value][0][0],ID:InstanceId,IP:PrivateIpAddress,Type:InstanceType}[0],&Name)' --output table "Name=tag-value,Values=*hogehoge-server*"
結果として以下のようにでます
--------------------------------------------------------------------------------
| DescribeInstances |
+----------------------+----------------+-------------------------+------------+
| ID | IP | Name | Type |
+----------------------+----------------+-------------------------+------------+
| i-aaaaaaaaaaaaaaaaa | 192.168.20.1 | hogehoge-server01 | r4.xlarge |
| i-bbbbbbbbbbbbbbbbb | 192.168.20.2 | hogehoge-server02 | r5.xlarge |
| i-ccccccccccccccccc | 192.168.20.3 | hogehoge-server03 | r5.xlarge |
EC2サーバ:「hogehoge-server」の状態を確認
aws ec2 describe-instances --query 'Reservations[].Instances[?Tags[?Key==`Name`].Value|[0]==`hogehoge-server01`][].{InstanceId:InstanceId,State:State}'
起動中のEC2サーバを停止
aws ec2 stop-instances --instance-ids #{インスタンスID}
起動中のEC2サーバを削除
aws ec2 terminate-instances --instance-ids #{インスタンスID}
起動中の「redshift」クラスターの一覧を取得
aws redshift describe-clusters |grep ClusterIdentifier
redshiftクラスター(hoge-db-server)の状態を確認
aws redshift describe-clusters --cluster-identifier hoge-db-server
redshiftクラスター(hoge-db-server)を停止
aws redshift delete-cluster --cluster-identifier hoge-db-server --skip-final-cluster-snapshot
スナップショット名を取得
出力されたものは上が最新で下に表示されたものものほど古い
aws redshift describe-cluster-snapshots --cluster-identifier hoge-db-server |grep SnapshotIdentifier
まとめ
実務で「あれ?これってどうだったけ?」となるものを中心に紹介しました。
基礎的なコマンドから学びたいという方は、以下の本をお勧めします。
いつもサポートありがとうございます。 あなたの100円がモチベーションアップの起爆剤です。 毎日更新頑張ります Twitterはこちら https://twitter.com/7010Rei