本サイトではアフィリエイト広告を利用しています。
よく使うLinuxコマンドのメモ2019/11/06

よく使うLinuxコマンドのメモ

今回はLinuxのよく使うコマンドをメモとして残します。 簡単なものは覚えているのですが、オプションを忘れて検索することが多いです。検索して使えるので特に問題ないですが、せっかくなら一箇所にまとめておきたいのでこの記事を作ります。

大きくはsed と grepのことを書き残そうと思ったのですが、思ったよりも書きたいコマンドが多かったです。 一個ずつに分けたほうが見やすいですが、思い出すためのメモなので気にしません。この記事を見れば使い方を思い出せるのが目的です。

新しいものをやよく使うものが増え次第、ここに追加していくつもりです。
多すぎて見にくいので整理方法も考え中です。検索できるようにすればいいのか。

ls

ls -la

出力内容

  • ファイルタイプ
  • パーミッション
  • ハードリンク
  • オーナー
  • グループ
  • サイズ
  • タイムスタンプ
  • ファイル名

オプション

-t # 更新時間順
-S # ファイルサイズ順
-X # 拡張子でまとめる
-R # 再帰的に表示する、見づらいけど
-m # カンマ区切りで出力

使うとしたら上記でしょうか。

stat

stat 001.txt
ファイルのステータスや情報を確認します。

オプション

-f # ファイルシステムの情報を表示
-t # 簡易な表示にする

file

file 001.txt
形式を確認。拡張子からではなく中身から判別。

file -z
圧縮状態の元の形式を確認できます。

mv

mv 001.txt bac
ファイルやディレクトリの移動。名前変更にも使います。

オプション

-i # 上書きの確認
-n # 上書き出来ない

cp

cp 001.txt bac
ファイルやディレクトリをコピーします。

オプション

-r # 再帰的にコピーできます。
-s # シンボリックリンクを作れます。

touch

touch 001.txt
タイムスタンプの更新、なければ空のファイルを作成します。

tee

ls | tee 01.txt | less
標準出力に流しながらファイルに出力できます。

ls | tee 01.txt 02.txt 03.txt 複数のファイルに出力したい場合に使えます。

rsync

rsync -av dev/ backup/
変更を同期します。 ローカルでもバックアップとかに使えますが、ほとんど使わないと思います。

ln

ファイルのハードリンクとシンボリックリンクを作ります。

ln -s ファイル リンクでシンボリックリンク
ln ファイル リンクでハードリンク

rm

rm 01.txt
ファイルを削除します。

対象ファイル名は*で副数の任意文字、?で1文字の任意文字を定義できます。

rm -r dir
ディレクトリを再帰的に削除する場合です。

mkdir

mkdir dev
ディレクトリを作成します。
オプションでパーミッションの設定とかも出来ますが、私は作ってから変更します。

mkdir -pにすると親ディレクトリが無い場合も階層ごと作成できて便利です。

cd

カレントディレクトリを移動

cd - にすると直前のディレクトリに戻ることができる。

オプション

-P # シンボリックリンクではない物理的な場所に移動

tar

tar -czf a.tgz 01.txt
アーカイブを作成、圧縮します。

tar -xzf a.tgz
アーカイブを展開します。

アーカイブにしたものが.tar。それを圧縮したものが.tgz.tar.gzになります。

オプション

-c # 作成
-x # 展開
-z # gzip圧縮
-v # 対象ファイルのリストを表示
-f # アーカイブファイル名を指定

ssh

ssh xxx
sshで接続

ssh -l user xxx
ssh user@xxx
ログイン名を指定して接続

ssh -l user xxx ls -la > 01.txt
ログインしてコマンドを実行。結果はローカルのテキストファイルに出力。接続先ではなく接続元ということ。

オプション

-p # ポートを指定
-l # ユーザー名を指定
-i # 公開鍵を指定

alias

alias
定義されているエイリアスを表示します。

alias xxx
定義されているエイリアスxxxを表示します。

alias xxx='ls -la'
エイリアスxxxを作成します。
一時的な定義なので、よく使うものは.bashrcに定義することでいつでも使えます。

alias -p
定義されているエイリアスを定義する書式で出力します。
.bashrcに定義するときや再利用に使います。

unalias

unalias xxx
定義されているエイリアスxxxを削除します。

whoami

自分のユーザー名を表示

groups

自分が所属しているグループを表示

pwd

カレントディレクトリを表示

オプション

-P # シンボリックリンクではない物理的な場所を表示

type

type xxx
コマンドの起動先を表示します。whichみたいな感じです。

オプション

-a # 該当をすべて表示、通常一番上が実行される
-P # PATH内のみ対象にする、whichと同じ
-t # 種別を表示

echo

echo $LANG
定義されている変数の中身を出力します。

pushd

pushd dir
カレントディレクトリをディレクトリスタックに追加、さらにカレントディレクトリを移動します。
-n でスタックへの追加のみにできます。その場合は移動しません。

popd

popd
ディレクトリスタックから一つ取り出して移動します。
-n でスタックの削除のみにできます。その場合は移動しません。

dirs

dirs
ディレクトリスタックを表示します。

オプション

-c # 空にする
-p # 行に分けて表示
-v # 番号付きで表示

chmod

chmod 774 001.txt
ファイル、ディレクトリのパーミッションの変更。 所有者、グループ、その他の順に設定。数値は以下を足します。 4 # 読みこみ 2 # 書き込み 1 # 実行

他の書き方

以下の書き方もできる。

# chmod ユーザー 追加か解除か アクセス権限 ファイル名
chmod o-x 01.txt # その他ユーザーの実行権限を解除
chmod u+r 01.txt # 所有者の読み取り権限を追加
chmod g+w 01.txt # グループの書き込み権限を追加

オプション

-v # 実行結果を表示
-R # 再帰的に実行

chgrp

chgrp group 001.txt
ファイル、ディレクトリの管理グループを変更します。

オプション

-v # 実行結果を表示
-R # 再帰的に実行

chown

chown user 001.txt
ファイル、ディレクトリの管理者を変更します。

オプション

-v # 実行結果を表示
-R # 再帰的に実行

groupadd

groupadd group
グループを作成

gpasswd

gpasswd -a user group
グループにユーザーを追加

gpasswd -d user group
グループのユーザーを解除

gpasswd group
グループのパスワードを設定

groupmod

groupmod -n newName oldName
グループ名を変更

groupmod -g newID oldName
グループIDを変更

groupdel

groupdel group
グループを削除

useradd

useradd user
ユーザーを作成します。adduserのほうが便利です。

adduser

adduser user
ユーザーを作成します。対話式にパスワードなどの設定が出来ます。

usermod

usermod user
ユーザーの情報を変更します。

usermod -l newuser olduser
ユーザー名を変更します。

オプション

-L # ユーザーをロック 
-U # アンロック
-l # ログイン名を変更
-p # パスワードを変更
-g # プライマリーグループを変更
-G # セカンダリーグループを変更
-G-a # セカンダリーグループを追加

userdel

userdel user
ユーザーを削除

userdel -r user
ホームディレクトリも削除

ps

実行中のプロセスを表示します。
PIDを確認してkillコマンドで終了させるとかですね。

kill

kill 111
PID 111を終了

tail

tail -f 001.log

ファイルの末尾を表示します。デフォルトは10行です。

-n 5 で行数の指定が可能。 -fでファイルの更新を監視できます。止めるときは<C-c>です。

head

ファイルの先頭を表示します。tailの逆。

head -n 8 001.log

cat

cat 001.txt
cat 001.txt 002.txt > 0102.txt

簡単に内容を確認する際に使います。別のファイルに流したり、結合させるのがもともとの役目の様子です。

オプション

-n # 行番号
-s # 連続した空行をまとめる

他にもプションはあるけど、そんなに使わないです。

less

パイプでつなげて使うとか。コマンド | less

ls -la | less

ファイルを指定してとか。

less 01.txt

オプション

-s # 連続した空行をまとめる
-S # 折り返さない
-N # 行番号を表示
-~ # 末尾以降の~チルダを表示しない

使うとすれば上記か。

キー操作

操作はjkとGとg。
dで半画面進む、uで半画面戻る。
/で検索、nとNで一致候補を前後、qで終了。

find

find ./ -name '01.txt'
ファイル名で検索します。

オプション

-type d # ディレクトリが対象
-type f # ファイルが対象 
-type l # シンボリックリンクが対象

grep

grep xxx 01.txt
ファイル中の文字列 xxx を検索

ls -la | grep xxx
コマンドの出力から文字列 xxx を検索

オプション

-G # 正規表現を使用
-r # 再帰的に検索
-5 # 前後5行を表示
-n # 行番号
-l # ファイル名のみ表示

xargs

xxx | xargs yyy
xxxの実行結果を受け取り、yyyの引数にして渡します。ややこしいけどとても便利。 単体でなく、使えるパターンだけ覚えておけば良い。

xxxの実行結果が末尾に「01.txt 02.txt 03.txt」 とつけられるイメージ

sed

cat ./01.txt | sed -e 's/xxx/XXX/g' > ./02.txt
sed -e 's/xxx/XXX/g' ./01.txt > ./02.txt

オプション-iをつけないと出力するだけ、付けるとファイルを上書きします。 -eはコマンドを指定するもので省略できます。複数の操作を行う場合、その度に必要。

grep 'emotion/core' -rl src/ | xargs sed -i -e 's/emotion\/core/emotion\/styled/'

よく使うのは置換のとき。emotion/coreをemotion/styledに置換しました。

オプション

-i # 結果を標準出力しないで上書き
-i.bak # 上書き前を拡張子をつけてバックアップ

-e # 処理内容を指定
-e 's/xxx/XXX/g' # 正規表現で置換
-e '30,31d' # 30,31行を以外を出力

-n # 標準の出力がなくなる -pのコマンドのみ出力
-n -e '30p' # 30行を出力

tree

tree
ツリー形式でファイルディレクトリを表示します。

tree -f -i
ツリー構造にしないでパスを表示します。ファイルリスト作るときに便利です。

オプション

-a # 隠しファイルも対象
-d # ディレクトリのみ
-L 2 # 2階層まで
-i # ディレクトリも出力
-f # 表示をツリー状にしない

apt

apt install xxx
パッケージ管理コマンド。主なコマンドは以下

list # パッケージ一覧を表示
search # パッケージを検索
show # 特定のパッケージの情報を表示
install # 指定パッケージをインストール
remove # 指定パッケージを削除
autoremove # 使われていないパッケージを削除
update # 利用可能パッケージの一覧を更新
upgrade # パッケージを更新
full-upgrade # パッケージを更新、不要なものは削除

curl

curl url > 01.txt
urlにHTTPリクエストを行います。

curl -X POST url -d 'name=user&data=text' > 01.txt
urlにHTTP POST リクエストを行います。こうなると何かしらのアプリケーション使ったほうがいいです。ブラウザ拡張とか。

xdg-open

xdg-open . 現在のディレクトリをデフォルとアプリケーションで開く。 ファイル名を指定すればデフォルトアプリケーションでファイルを開きます。

おわりに

基本的にコンソールでの作業がほとんどなのでこれらを身につけられるととても快適になります。 サーバエンジニアの最初の一歩でしょうか。

また新しいものや気になるものがあったら追記していく予定です。
awkに関する書籍を読んでいるので、それについても後日まとめる予定です。

UbuntuのLTSも18.04がリリースされたので頃合い見計らってアップデートしたいです。

  • このエントリーをはてなブックマークに追加
prev
next