12
13

More than 3 years have passed since last update.

ターミナルで使うUNIXコマンド

Last updated at Posted at 2018-10-27

はじめに

ターミナルでコマンドを使えるととても便利なので、まとめてみました。
ちなみにGUIの対称としてCUIと呼ばれたりしますが、CLIというのが正しいらしいです。

コマンドの前にショートカット

ctrl+dで終了
ctrl+cで処理停止
ctrl+zで一時停止
- $ fgで再開
- $ jobsで止まっている処理が確認できる
⌘+nで新規画面
⌘+wで画面削除
⌘+tでタブ追加

このあたりがよく使うとこでしょうか。

最低限に覚えた方がいいやつ

現在地の取得

$ pwd

ディレクトリの移動

$ cd #単独で使うとhomeまで戻る
$ cd ~ #homeまで戻る
$ cd ~/ディレクトリ  #home以下のディレクトリに移動する
$ cd ディレクトリ名 #指定したディレクトリに移動する
$ cd .. #一つ上の階層に戻る

リストセグメント
ディレクトリ確認 単にlsだけでも大丈夫です。

$ ls /

1列で表示。−aをつけることで隠しファイルも全て表示できます。

$ ls -1 /
$ ls -1 -a /

以下では指定したディレクトリの中身を1列で列挙できます。

$ls -1 -R ディレクトリ名

-lをつけることでディレクトリにあるものの情報を表示してくれます。
permission・中のリンクの数・所有者・所有G・バイト単位のデータサイズ・最終更新日時・名前など。

$ls -l ディレクトリにあるものの情報を表示してくれる

困ったらマニュアルを起動(qで終了)

$ man ls

画面が汚くなってきたら

$ clear

過去に使ったコマンドをみるには

$ history

ctrl+Rで過去のコマンドを検索しながら再実行もできます。

$ history

知っておいた方がいいやつ

ディレクトリの作成

$ mkdir ディレクトリ名

複数階層でディレクトリを作成する

$mkdir -p first/second 

ファイルの作成

$ touch filename.拡張子

ファイルの削除

$ rm filename.拡張子

ディレクトリの削除

$ rm -r ディレクトリ名

ディレクトリの中にファイルが複数あるときには警告が出るので、その時は以下で削除できる

$ rm -r -f ディクレトリ名 
$ rm -rf ディレクトリ名

ファイルに書き込み

$ echo hogehoge > ファイル名

ファイルのコピー(同じディレクトリ内)

$ cp hoge.txt hoge_copy.txt

ファイルのコピー(違うディレクトリ) 

$ cp hoge_copy.txt copy先ディレクトリ/hoge_copy2.txt

ディレクトリのコピー

$ cp -R ディレクトリ1 ディレクトリ_copy

ファイル名の変更

$ mv filename.txt filename2.txt

ファイルの検索

$ find . -name "*hoge*"
#(ピリオドは現在のディレクトリからの意味)

タイプで検索 dはディレクトリの意味 2階層深くの意味

$ find . -type d   -maxdepth 2

ファイル内検索

#複数ファイルも可能
$ grep 検索文字列 ファイル名 ファイル名 ファイル名

#文字列数をカウント
$ grep 検索文字列 -c ファイル名 ファイル名 ファイル名

lsと組み合わせて、文字列検索をすることもできます。

$ ls | grep 文字列
$ ls | grep Desktop

知ってたら便利なワイルドカード

検索したい文字列の前後で使えるWildcard
*の部分には0個以上の文字列が入ります。

$ ls hoge.txt*
$ ls hoge.*
$ ls *.txt*
$ ls *.txt
$ ls *.*  

検索したい文字列の前後で使えるWildcard?
?の部分には1個以上の文字列が入ります。

$ ls *.tx?
$ ls *.txt?  #これはダメ

知ってたら便利なファイル閲覧コマンド

ファイルの閲覧cat。ターミナル上にそのまま表示します。

$ cat ファイル名 

ファイルの閲覧less。別で立ち上げを行います。
(/で文字検索、jkで上下移動、udでスクロールができる、qで終了)

$ less ファイル名 

ファイルの閲覧more。
lessと見た目は一緒だが、一番下まで行くと元のターミナルに戻ります。

$ more ファイル名

ファイルの閲覧head。
最初の10行を表示します。また-nによって何行取得かも指定できます。
※tailも当然あります

$ head ファイル名 
$ head -n3 ファイル名

(個人的には)あまり使うことないやつ

コマンドで誰がどこまで操作できるかPermissionを確認できます。

$ ls -l

1列目はファイルの種類で

d:ディレクトリ
-:ファイル

を表しています。他にもたくさん種類ありますが、使いそうなのだけ。

それ以降は3列ずつに分かれていて

234列目:ユーザーの権限u
567行目:グループの権限g
それ以降は:その他の権限o

となっていて、それぞれ

r:読み取り
w:書き出し
x:実行
-:権限なし

という風になっています。

chmod ①②③ ファイル名

によって権限の変更は可能です
①は誰についてなのかu(ユーザー)/g(グループ)/o(その他)/a(全て)
②は権限について +(付与) ー(剥奪) =(変更)
③はどの権限かについて。上記でかいたように書き出しなどです。

例えば以下のコマンドで、個人ユーザーから読み取りの権限を剥奪できます。

chmod u-r testfile
chmod u-r,g-r,o-r testfile

これは便利!リダイレクト!

入出力の方法を変えることをリダイレクトと呼びます。

例えば、処理結果の出力先(1)をターミナルからファイルへの書き込みに変更したり,入力元(0)をキーボードからファイル読み出しに変更したりすることです。

たとえばechoを使うと直接書き込むことができます。 

echo 書き込むこと > ファイル名 #上書き
echo 書き込むこと > ファイル名 #追記

これで日付を書き込むことができます。

date > ファイル名

また他のデータから出力したものをファイルに書き込むこともできます。

$ head -n1 hoge.txt > hoge2.txt

また 2> とすることでエラー出力されます。

$ echo abc 2> hoge3.txt

また以下のようにすることでエラーを別で出力できます。

$ echo hoge > hoge1.txt 2> hoge3.txt

ファイルをまとめることもできる。

$ cat hoge1.txt hoge2.txt > new.txt

計算式を入れて、出力することができる

$ echo 1+5 > hoge4.txt
$ bc < hoge4.txt
6

計算式を入れて出力し、それを再度

$ echo 1+5 > hoge4.txt
$ bc < hoge4.txt > hoge5.txt

特定の文字が入力されるまで、ファイルに書き込み続ける

cat << EOF >ファイル名

Teeを使うことで>をしたうえでcatまでしてくれる

$ date | tee ファイル名
$ cal | tee ファイル名

(個人的には)1年に数回しか使わないやつ

$ ps # process status

プロセスID/端末/CPU時間/実行コマンドを表しています。

$ ps -f

ユーザーID/プロセスID/親プロセスID/CPU使用率/開始時間/端末/CPU時間/実行コマンドを表します。

他のアカウントについても表示

$ ps -fa

全部のプロセスを表示できる

$ ps -fe
$ top

を使うとリアルタイムでプロセスをみることができます。

vim使うことだけ

起動します。

$ vim ファイル名

ファイル名が存在しない時は新規ファイルが作成されます。

ノーマルモード

ノーマルモードで使うコマンド。

コマンド 覚え方 動作
a append カーソルのある文字の後ろで挿入モード
i insert カーソルのある文字の前で挿入モード
o,O open lines 新しい行を下に作って(オープンして)挿入モード
O open lines 新しい行を上に作って(オープンして)挿入モード
w word 次のワードに移動
e end of word 一番近くにある(次の)単語の最後部に移動
b backword 一番近くに(前の)単語の最前部に移動
u undo 実行した動作の取り消し
ctrl+f forword 前進する(下に進む) スクロール
crtl+b back
ctrl e 一行づつ前進する(下に進む) スクロール
ctrl y 一行づつ後退する(上に進む) スクロール
gg gogo 先頭に戻る(頭に数字をつけると、数字の行に移動)
yyp カーソルのある行をコピー
dd delete カーソルのある行を削除
ctrl+v Visual mode 矩形選択できる($を押せば複数行選択できる。ypでコピペできる)
^(shiftは押さない) 行頭に移動
〜(shift+^) 大文字/小文字に変更
$ 行末に移動
H High スクリーンの上部に移動
M Middle スクリーンの中央部に移動
L Low スクリーンの下部に移動
ctrl+p 補完

コマンドモード

:e ファイル名   #ファイルを開ける
:q     #終了
:q!    #強制終了
:w     #上書き保存
:wq    #保存して終了
:tabnew   #タブの作成
:! unixコマンド   #UNIXコマンドへの一時的な切り替え

これらの:が下に付いている状態をコマンドモードといいます。
/を使うことで、検索をすることが可能です。nによって次の位置に移ることができます。
コマンドモードから抜けるときはescを押します。

インサートモード

iを押して、下にINSERTが付いたら、それはインサートモードです。
編集が出来るようになります。
※aやoでもできます。開始の仕方が異なります。大文字もあります。

移動に関しては

h:左
j:上
k:下
l:右

で移動ができ
また数字+(hljk)で移動することも複数一気に移動することが可能です。

参考

面白いUnixコマンド集めてみた
仕事の役には立たない、Linuxにおけるジョークプログラムの話
Macのsayコマンドの使い方

12
13
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
12
13