見出し画像

役にたつ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