Linux コマンド集

ファイル/ディレクトリ関連
コマンド 説明
cd [移動先のディレクトリ] ディレクトリ移動
pwd カレントディレクトリの表示
mv [file] [file] ファイル名の変更
touch [file] 空のファイルを作成する
rm [file] ファイルの削除
mkdir [directory] ディレクトリの作成(既に存在するファイル名と同名のディレクトリを作成することはできない)
rmdir [directory] ディレクトリの削除


ファイル/ディレクトリ一覧を表示する
コマンド 説明
ls ファイル・ディレクトリ一覧の表示
ls [directory] 指定したディレクトリ内のファイル・ディレクトリの表示
ls -a [directory] 隠しファイル(.から始まるファイル)も表示
ls -l [directory] ディレクトリのリスト表示
ls [directory] ディレクトリのリスト、パーミッションの表示
ls [file] 指定ファイルの詳細情報を表示
ls -F ファイル・ディレクトリの種別を一覧で表示(ディレクトリは"/"、実行可能ファイルは"*"、シンボリックリンクは"@"、通常ファイルは記号なし)
cp [file/directory] [file/directory] ファイルやディレクトリのコピー(ディレクトリをコピーする場合は、-rオプションを使用する)


ファイルの中身を見る
コマンド 説明
cat [file] ファイルの中身を表示
less [file] ファイルの中身をスクロール表示
head [file] ファイルの先頭のみを表示(初期設定は10行)
tail [file] ファイルの末尾のみを表示(初期設定は10行)


権限を変更する
コマンド 説明
su - rootユーザーに切り替える
su - [user] [user]に切り替える
sudo [コマンド] rootユーザーとしてコマンドを実行する


その他
コマンド 説明
history [オプション] [表示するコマンド数] コマンド入力の履歴を表示する
ctrl + a コマンドラインの行頭にカーソルを移動する
ctrl + e コマンドラインの行末にカーソルを移動する
esc + f 前方に単語1つ分移動する
esc + b 後方に単語1つ分移動する
ctrl + k カーソル位置から行末までを削除する
ctrl + u カーソル位置から行頭までを削除する
ctrl + y 最後に削除した内容を挿入する
source シェルの設定を即座に反映させる
who ログインしているユーザを探す
clear 画面をクリア(消去)にする
diff [-bciqrw] ファイル1 ファイル2 2つのテキストファイルの内容を比較する
ftp リモート・ホストに接続してファイルの送受信を行う
nohup [コマンド] ログアウト後もバックグラウンドでコマンドを実行する
rcp [-prxK] コピー元 コピー先 ネットワーク上の異なるマシン間でファイルをコピーする
scp [オプション] コピー元 コピー先 リモートホストからローカルにファイルをコピーする(暗号化するので安全)
rsh [-xK] [-l ユーザー] ホスト コマンド 指定されたリモート・マシンにコマンドを送り実行させる。
sort ファイル内の行を並び替える
split ファイルを分割して複数の新ファイルを生成する
hostname システムのホスト名を表示する(間違えて変な引数をとると名前を変更してしまうのでuname -aを使ったほうがいい
uname -n ユーザ名を表示する
sed -n 行番号A,行番号Bp file 行番号Aから行番号Bを表示する


grep

grepはファイル中の文字列に対して正規表現を使って検索し表示するLinuxコマンドだ。

オプション 説明
-r ディレクトリ内容も検索対象とする
-n 行番号を表示させる

grepコマンドの詳細まとめました【Linuxコマンド集】

#libディレクトリ以下のファイルの全ての中からaという文字を再帰的に検索する。
$ grep -rn a lib*



再帰的に検索するとは
対象となるディレクトリ内にディレクトリ がある場合は、そのディレクトリ内のファイルも含めて検索を行うということ。

grepの派生コマンド
コマンド 説明
grep 簡単な絞り込みに用いられる
egrep より強力な拡張正規表現(EREs)が使える
fgrep grepやegrepよりも早いが限定的な正規表現しか使えない
zgrep gzipなどで圧縮されたファイルも対象にできる
zegrep zgrep + egrep
zfgrep zgrep + fgrep


find

findは指定した名称のファイルやディレクトリが存在するか正規表現を使って検索し表示するLinuxコマンドだ。

"."を検索開始ディレクトリとして".tt"という文字列を含むファイルをprintする。
$ find . -name "*.tt" -print

findコマンドで覚えておきたい使い方12個(+1個) | 俺的備忘録 〜なんかいろいろ〜

sed

sedはファイルを読み込み、指定されたコマンドに従って文字を変換するLinuxコマンドだ。

#文字を変換した上で、元のファイル内容を上書きする
$ sed -i 's/置換対象文字列/置換後文字列/g' ファイル名


tail

tailはファイルの最終行から数行を表示するコマンドだ。デフォルトだと10行が表示される。

#指定したファイルの最終行から100行を表示する。追記があった場合は、追記の文を表示する(-nオプション)。
$ tail -f -n 100 ファイル名


特定のファイルから特定の文字列を検索する
git log -p -S 文字列 ファイルのパス


特定の文字列を含むファイルを完全一致で検索する
grep -rn -w 文字列 .

cpanでインストールしたモジュールは基本的にホームディレクトリ以下に作成される。


リモートの特定のファイルをローカルに反映させる
git checkout ブランチ名 -- ファイルのパス


ファイルの文字コードの判別をする
nkf --guess ファイル名


CPANモジュールのインストール場所の確認をする
perldoc -l モジュール名


CPANモジュールのバージョンを確認する
perl -lM'モジュール名' -e 'print $モジュール名::VERSION'
# 例
perl -lMImager -e 'print $Imager::VERSION'


デーモンを起動する
service サービス名 start


リモートブランチを削除する
git push --delete origin branch_name


ローカルブランチをマージしたかどうかを問わずに削除する
git branch -D branch_name


特定の行のみ表示する
sed -n 10p file_path


プロセスが使用しているポートを表示する。表示されたポート番号の使用を止める。
lsof -i:ポート番号
kill -9 ポート番号


shift jisで文字化けしているファイルを正常に表示させる。
iconv -f SJIS "ファイル名"


ファイルの文字コードを変換する。
iconv -f sjis -t utf-8 sample.pl -o sample.pl
# オプション
-f : 変換元の文字コード
-t : 変換後の文字コード
-o : 出力するファイル
INPUTFILE : 変換元のファイル名


duコマンドで一番容量を食っているディレクトリを探す
du -sh * | sort -nr


ディスク容量の使用状況を表示
$ df -h


iノード数を表示
$ df -i


ルートディレクトリの各ディレクトリのディスクの利用状況把握
sudo du -sh /*


別ブランチからファイルをコピーする
git checkout <ブランチ名> -- <ファイル名>


ローカルの変更を元に戻す
git checkout <filename>


nkfコマンド

nkf」は「Network Kanji Filter」の略で、LinuxWindowsなど、異なるOS間でテキストデータを交換する際に問題となる文字コードと改行コードを変換するためのコマンドである。

whichコマンド

whichコマンドは、環境変数のPATHに設定されているディレクトリ順に調べ、最初に見つかったコマンドを表示する。PATHに設定されている全ディレクトリを調べるには、-aオプションを使用する。

$ which httpd
/usr/sbin/httpd


インストール済のパッケージ一覧を表示する
$ yum list installed | grep ファイル名


リポジトリ内で利用可能なパッケージを表示する
$ yum list available | grep ファイル名


rpm

rpm」は、Red Hat系のLinuxディストリビューションで使われている“RPMRed Hat Package Manager)パッケージ”を扱うことができるパッケージ管理コマンドである。

2つのファイルの差分を表示する
vimdiff filename1 filename2


作業ブランチの変更を元に戻す
git checkout ファイル名

www.atmarkit.co.jp

ブランチ比較

br1ブランチのfoo/bar.tx と br2ブランチのhoge/fuga.txtを比較する

git diff br1:foo/bar.txt br2:hoge/fuga.txt


ブランチ間で差分のあるファイルの名前とステータスのみ表示
git diff --name-status  feature source/js/


setuidgid

setuidgid は明記されたアカウントの uid と gid で別のプログラムを起動する。

setuidgid account child

account は一つの引数で、child は一つ以上の引数からなる。
setuidgid は account の uid と gid に自身の uid と gid を設定し、全ての補助グループ(supplementary groups)を解除する。 それから child を起動する。


mysql マイグレーション
mysql -uroot DB名 < hoge.sql


ps auxf

プロセスごとの実行状態などを階層構造で表示する。
https://mag.osdn.jp/07/06/19/012222

crontab

crontab(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnixオペレーティングシステム (OS) において、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。

指定したDB名/テーブル名のデータのSELECT文を取得する。
mysqldump -uroot -t --compact --skip-extended-insert DB名 テーブル名 --where="条件" > ファイル名


コンフリクトを解消する
git mergetool ファイル名


コミット前の内容を一時的に避ける
git stash

色々な git stash - Qiita

mysqlのSELECT結果をファイルに出力する
mysql -uroot -e "select * from test where id = 11111¥G" DB_NAME > test.dmp


git logでdiffを表示させる。
git log -p


git log に変更したファイルの簡易情報(ファイル名と変更した行数)を表示する。
git log --stat

git log の option 色々 - Qiita

git addとgit commitを同時に行う。
git commit -a -m "commit message"


git add した後にインデックスと最新のコミットとの変更点を見る。
git diff --cached
git diff --staged


git の管理対象にあるファイルを移動する。
git mv [ファイルのパス] [移動後のファイルのパス]

git を通さないと、移動後のファイルがUntracked file扱いとなりgit addする手間が生じるのでgit mvを使う。同様にrmについてもgit rmを使う。

ステージングエリアから変更を削除する。
git reset

git resetでどのオプション(hard, mixed, soft)を指定すべきか、シチュエーション別に分けてみる - Qiita
--hardを使うことはまずなさそう。
インデックス=ステージ
基本的には--mixedを使うことが多そう。


ファイル内の一部をステージングする。
git add -p


特定のファイルに関するコミットのみ表示させる(diffも)。
git log -p ファイル名


HEAD

HEAD はシンボリックリファレンス(symbolic reference)であり、現在チェックアウトされているブランチ(reference)、またはコミットIDを参照する。

コミットに任意の名前をつける

タグとは、コミットに対して分かりやすい名前を付けたもののことである。コミットのエイリアスと言うこともできる。

git tag -a タグ名 -m 'タグについてのコメント'

GitのTagの使い方 - 30歳からのプログラミング

masterブランチ

一番最後に行われたコミットへの参照のこと

ブランチ間の差分を表示する。
git diff branch1...branch2


fast-forwardマージ

ブランチAと、そこから切ったブランチBがあるとする。BがAでの変更をすべて含むときに行われるマージをfast-forward(早送り)マージという。つまり、分岐後に、元ブランチAにおいて変更がないときに行われるマージのこと。git pushはリモートがローカルをfast-forwardマージとして取り込める前提にたっているので、git rebaseをした結果fast-forwardでなくなった場合はgit push -fすれば良い。

リモートの追跡ブランチ(リモートのブランチではない)とローカルのブランチの両方を表示させる。
git branch -a 


リモートの追跡ブランチを最新の状態に変更する。
git fetch


FETCH_HEADからの新しいコミットを、カレントブランチにマージする。
git merge FETCH_HEAD

git pull = git fetch + git merge FETCH_HEAD

FETCH_HEADがカレントブランチの子孫である場合に限り、マージを許可する。(fast-fowardマージ)
git pull --ff-only


gitによる出力結果においてページ移動をする。

スペースキーで次のページに進み、bで前のページに戻る。

ファイルの特定の行の修正及び追加を誰が行ったか確認する。
git blame [ファイル名]

[Git] blameコマンドで特定の行がいつ変更されたのか調べて、バグの混入を見つける - YoheiM .NET

HEAD の移動履歴を一覧で表示する。
git reflog


他のブランチの特定コミットをブランチに反映する。

誤って目的とは異なるブランチにコミットした時に使える。

git cherry-pick コミットID


git pushを取り消す

git push の取り消し方法 | WWWクリエイターズ
基本的にはgt revertを使おう。

すでにpushされているcommitを打ち消す(もとに戻す)
git revert [commit id]


特定の文字列を含むプロセスをリアルタイムで管理する
top -c | grep [文字列]

Linux負荷監視コマンドまとめ - Qiita

mvでファイル名を変える時にパスを指定するのが面倒な件の解決
$ mv path/to/file/{old_file_name,new_file_name}.txt


gitの追跡対象にあるファイル名を検索
git ls-files *cache*


ターミナルで過去に実行したコマンドの履歴を検索する。
ctrl + r
テーブル名を知るために曖昧検索をする。
show tables LIKE "%文字列%"
指定したカラムの行数を調べる
SELECT COUNT(name) FROM テーブル名


ファイルの行数を出力する
wc -l [ファイル名]


URLを指定してファイルをダウンロードする
curl [url] > [ファイル名]


screenでdeadされているセッションを削除する
screen -wipe