Honmushi blog
よく使う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
ディレクトリを作成します。以上。
オプションでパーミッションの設定とかも出来ますが、私は作ってから変更します。

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
グループを作成

gpassword

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

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

gpassword 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 リクエストを行います。こうなると何かしらのアプリケーション使ったほうがいいです。ブラウザ拡張とか。

おわりに

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

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

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