こちらはDMM.com #1 Advent Calendar 2017 18日目の記事です。
前日の記事は@hayatanさんのCleanArchitectureを導入してみたい話でした。
カレンダーのURLはコチラ
-DMM.com #1 Advent Calendar 2017
-DMM.com #2 Advent Calendar 2017
本記事は、Linuxコマンドをあまり触ってこなかった17卒入社の私がLinuxコマンドを覚え始め、使い始める内に学んだコマンド達の一部をできるだけ噛み砕いて紹介していく記事になっております。
#Linuxコマンドとは?
Linux系のCUI
上で使えるコマンドです。例えば、ディレクトリを移動するcd
コマンドやファイルやディレクトリ情報を表示するls
コマンドなどがあります。
#コマンド紹介
コマンド名 | 説明 |
---|---|
which | コマンドを探すコマンド |
test | 条件式の真偽を判定する。 ファイル・ディレクトリの有無や、数値・文字列の比較に使う |
grep | 文字列を検索する。 前のコマンドと合わせて使うことが多い |
split | ファイルを分割し、複数のファイルに出力する |
tar | ファイルを書庫化・展開する |
scp | リモート・マシン間でファイルをコピーする |
diff | ファイル間の差分を表示する。 -rオプションをつけるとディレクトリ内を再帰的に差分を表示する。 |
trap | 実行中のプロセスに対して、さまざまなイベントを通知するために送出される シグナルを捕捉し、あらかじめ指定されていた処理を実行するコマンド |
xargs | 標準入力から生成したコマンドラインを実行する |
sed | 文字列の置換、行の削除を行う。 stream editorの略で、非対話型のエディタ(処理の経過・内容を逐次ユーザに確認することはない) |
#コマンドの使い方
###which
which
でls
コマンドを探すと/bin/ls
にあるということがわかります。
$which ls
/bin/ls
###test
数値の比較の例として、最初は真ということで0
が返ってきます。
次の式では、偽(1
)が返ってきます。
ちなみに、$?
は直前コマンドの終了ステータスが返ってきます。
・コマンドが成功時には0
失敗時には0
意外(基本的には1
)
$test 1 = 1 ; echo $?
0
$test 1 = 2 ; echo $?
1
###grep
test.txt
内にある値10がある出現行数を数える。
ファイルの内容を閲覧するcat
コマンドにパイプをつなげて、値が10にマッチした行を表示する。
$grep -c '10' test.txt
4
$cat test.txt | grep '10'
710
1010
10
10
###split
-b
オプションをつけると元ファイルをbytesで示したバイト数で分割し、出力する。
$split -b 1000 test.tar out
$ls -l
2048 12 17 00:27 test.tar
1000 12 17 01:11 outaa
1000 12 17 01:11 outab
48 12 17 01:11 outac
###tar
.tar
拡張子に圧縮することができる。オプションをつけると圧縮状況などもわかるようになる。
また、ここでは書かないが解凍も行うことができる。
$tar -cvf test.tar test.txt
a test.txt
$ls
test.txt
test.tar
###scp
sshでサーバにつなげるときにローカルのファイルをssh先のサーバにアップロードしたい時に使う。
使い方自体はcpコマンドと変わらずに、引数1はコピー元のパス(何を)、引数2はコピーの置き場(どこに)
# ローカルからサーバーへ
$scp ~/temp/test.txt test@xxx.xx.jp:~/
# サーバーからローカルへ
$scp test@xxx.xx.jp:~/test.txt ~/temp/
###diff
test.txt
をコピーしたtest1.txt
を用意する。
#test.txtの中間あたりに2000を追加
$diff test.txt test1.txt
11d10
< 2000
###trap
プロセスに割り込む(Ctrl+c)シグナル時にはHello
を出す。
こういった割り込みが起きた場合に関して、'コマンド'を実行できる。
コマンド部分はシングルクォートです。※バッククォートじゃない点が注意
# コマンド部分はシングルクォートで囲む
$trap 'echo Hello' 2
# Ctrl + Cを押す
$ Hello
# 元に戻す
$trap 2
###xargs
xargs
はシェルのバッククォートでコマンドを実行するのと同じようなものです。
それよりも、柔軟性がある書き方ができます。
デフォルトだと空白と改行の両方を区切り文字として扱ってしまうので、xargs
が空白文字ではなくヌル文字を区切りとして扱うように-0
を指定し、xargs
の形式に合わせるためにfind
の-print0
を指定する。
$find ./ -maxdepth 1 -name "*.txt" -print0 | xargs -0 grep '10'
###sed
sedはいろんな操作ができるので今回は指定行数削除の方法だけのせます。
test1.txt の 1行目から 10行目までを削除して test2.txt に保存する。
$sed '1,10d' test1.txt > test2.txt
#まとめ
今回は自分がよく使うコマンドちゃん達の紹介をしました。
いつも使っている人にとっては退屈だったと思いますが、
最後までスクロールしていただきありがとうございます。
初心者の方や使ったことなかったという人は、
明日からでも使えるコマンドばっかりですので、ぜひ使ってみてください。
【詳細編】については気が向いたら投稿しようと思います。
明日は17卒同期の@Hiro2525が書いてくれます。
お楽しみにしてください!
それでは、みなさん良いコマンドライフを!