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 | 行番号を表示させる |
#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
sed
sedはファイルを読み込み、指定されたコマンドに従って文字を変換するLinuxコマンドだ。
#文字を変換した上で、元のファイル内容を上書きする $ sed -i 's/置換対象文字列/置換後文字列/g' ファイル名
tail
tailはファイルの最終行から数行を表示するコマンドだ。デフォルトだと10行が表示される。
#指定したファイルの最終行から100行を表示する。追記があった場合は、追記の文を表示する(-nオプション)。 $ tail -f -n 100 ファイル名
特定のファイルから特定の文字列を検索する
git log -p -S 文字列 ファイルのパス
リモートの特定のファイルをローカルに反映させる
git checkout ブランチ名 -- ファイルのパス
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 : 変換元のファイル名
ディスク容量の使用状況を表示
$ df -h
iノード数を表示
$ df -i
別ブランチからファイルをコピーする
git checkout <ブランチ名> -- <ファイル名>
ローカルの変更を元に戻す
git checkout <filename>
nkfコマンド
「nkf」は「Network Kanji Filter」の略で、LinuxとWindowsなど、異なるOS間でテキストデータを交換する際に問題となる文字コードと改行コードを変換するためのコマンドである。
whichコマンド
whichコマンドは、環境変数のPATHに設定されているディレクトリ順に調べ、最初に見つかったコマンドを表示する。PATHに設定されている全ディレクトリを調べるには、-aオプションを使用する。
$ which httpd /usr/sbin/httpd
インストール済のパッケージ一覧を表示する
$ yum list installed | grep ファイル名
rpm
「rpm」は、Red Hat系のLinuxディストリビューションで使われている“RPM(Red Hat Package Manager)パッケージ”を扱うことができるパッケージ管理コマンドである。
2つのファイルの差分を表示する
vimdiff filename1 filename2
ブランチ間で差分のあるファイルの名前とステータスのみ表示
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 を起動する。
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 logでdiffを表示させる。
git log -p
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 'タグについてのコメント'
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 [ファイル名]
HEAD の移動履歴を一覧で表示する。
git reflog
他のブランチの特定コミットをブランチに反映する。
誤って目的とは異なるブランチにコミットした時に使える。
git cherry-pick コミットID
git pushを取り消す
git push の取り消し方法 | WWWクリエイターズ
基本的にはgt revertを使おう。
すでにpushされているcommitを打ち消す(もとに戻す)
git revert [commit id]
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