25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DMM.com #1Advent Calendar 2017

Day 18

初心者が明日から使えるLinuxコマンド【簡易編】

Last updated at Posted at 2017-12-17

こちらは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
whichlsコマンドを探すと/bin/lsにあるということがわかります。

whichコマンド
$which ls
/bin/ls

###test
数値の比較の例として、最初は真ということで0が返ってきます。
次の式では、偽(1)が返ってきます。
ちなみに、$?は直前コマンドの終了ステータスが返ってきます。
・コマンドが成功時には0失敗時には意外(基本的には1

testコマンド
$test 1 = 1 ; echo $?
0
$test 1 = 2 ; echo $?
1

###grep
test.txt内にある値10がある出現行数を数える。
ファイルの内容を閲覧するcatコマンドにパイプをつなげて、値が10にマッチした行を表示する。

grepコマンド
$grep -c '10' test.txt
4
$cat test.txt | grep '10'
710
1010
10
10

###split

-bオプションをつけると元ファイルをbytesで示したバイト数で分割し、出力する。

splitコマンド
$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コマンド
$tar -cvf test.tar test.txt 
a test.txt
$ls
test.txt
test.tar

###scp
sshでサーバにつなげるときにローカルのファイルをssh先のサーバにアップロードしたい時に使う。
使い方自体はcpコマンドと変わらずに、引数1はコピー元のパス(何を)、引数2はコピーの置き場(どこに)

scpコマンド
# ローカルからサーバーへ
$scp ~/temp/test.txt test@xxx.xx.jp:~/
# サーバーからローカルへ
$scp test@xxx.xx.jp:~/test.txt ~/temp/

###diff
test.txtをコピーしたtest1.txtを用意する。

diffコマンド
#test.txtの中間あたりに2000を追加
$diff test.txt test1.txt 
11d10
< 2000

###trap
プロセスに割り込む(Ctrl+c)シグナル時にはHelloを出す。
こういった割り込みが起きた場合に関して、'コマンド'を実行できる。
コマンド部分はシングルクォートです。※バッククォートじゃない点が注意

trapコマンド
# コマンド部分はシングルクォートで囲む
$trap 'echo Hello' 2
# Ctrl + Cを押す
$ Hello
# 元に戻す
$trap 2

###xargs
xargsはシェルのバッククォートでコマンドを実行するのと同じようなものです。
それよりも、柔軟性がある書き方ができます。
デフォルトだと空白と改行の両方を区切り文字として扱ってしまうので、xargsが空白文字ではなくヌル文字を区切りとして扱うように-0を指定し、xargsの形式に合わせるためにfind-print0を指定する。

xargsコマンド
$find ./ -maxdepth 1 -name "*.txt" -print0 | xargs -0 grep '10'

###sed
sedはいろんな操作ができるので今回は指定行数削除の方法だけのせます。
test1.txt の 1行目から 10行目までを削除して test2.txt に保存する。

sedコマンド
$sed '1,10d' test1.txt > test2.txt

#まとめ
今回は自分がよく使うコマンドちゃん達の紹介をしました。
いつも使っている人にとっては退屈だったと思いますが、
最後までスクロールしていただきありがとうございます。
初心者の方や使ったことなかったという人は、
明日からでも使えるコマンドばっかりですので、ぜひ使ってみてください。
【詳細編】については気が向いたら投稿しようと思います。

明日は17卒同期の@Hiro2525が書いてくれます。
お楽しみにしてください!
それでは、みなさん良いコマンドライフを!

25
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?