0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

俺のLinuxチートシート

Posted at

はじめに

Linuxで使ったことのあるコマンドです。
都度調べるのは面倒なのでboostnoteにまとめてます。
今回はそれを共有
別々で保存していた記事をくっつけているので、途中で書き方が変わってますがあしからず

Linux コマンド

cdコマンド

ディレクトリを移動します。

lsコマンド

ディレクトリの内容を表示します。 ls -a コマンドで、隠しファイルを含めたディレクトリ全内容を表示します。

mkdirコマンド

ディレクトリを新規作成します。

touch ファイル名

ファイルを作成 タイムスタンプの更新

rmコマンド

ファイルを削除します。

rm -r <ディレクトリ名>
ディレクトリを消去

cpコマンド

ファイルをコピーします。

cp -r <ディレクトリ名> <コピー後の名前>
ディレクトリごとコピー

mvコマンド

ファイルの移動とファイル名の変更を行います。

catコマンド

ファイルの中身を表示します。

open .
カレンとディレクトリをFinderで開く

root権限を借りて実行
sudo コマンド

タイムスタンプ更新
touch -t YYYYMMDDHHmm.ss 既存のファイル名

ファイルの種類を識別
file 既存ファイル名

リダイアレクト(書き込む+新しいファイルを作成もできる)
echo hogehoge > test.txt
echo piyopiyo >> test.txt

パイプ(コマンドの入出力を他のコマンドに渡す)
ls | grep

出力結果を捨てる
./main 2> /dev/null

結果を反転させる
./main 2> /div/null | rev

プロセスを管理する
ps aux

バックグラウンドでジョブを実行
コマンド名 &

実行中のコマンドを強制終了
kill コマンド名
kill PID

PATHを一覧を表示
echo $PATH$

実行に必要なファイルのPATHを表示
which コマンド

PATHを通す
export PATH=$PATH:/home/sample

実行権限を確認
ls -l

権限を設定・変更
chmod 権限 ファイル名 詳しい説明はLinux 基礎

ファイルやディレクトリの所有者を変更
chown 新しい所有者 ファイル名

所属しているグループの権限も変更
chown 新しい所有者:新しい所有グループ ファイル名

ディレクトリ内全てのファイルやディレクトリの権限を変更
chown -R 新しい所有者:新しい所有グループ ファイル名

ユーザ関連
useradd -m ユーザ名userを追加 optでhomeディレクトリも作成
userdel -r ユーザ名userを削除 optでhome...
passwd userのpasswordを設定
passwd ユーザ名自分以外のuserのpasswordを設定
passwd -S ユーザ名 passwordを確認
passwd -d ユーザ名 passwordを削除

環境変数関連
env 現在ある環境変数を確認
export 環境変数名=値 環境変数を追加
unset 環境変数名 環境変数を削除

ファイルやディレクトリを探す
find ./*.java
find ./*.java -atime 1 昨日アクセス
find ./*.java -atime -2 2日以内にアクセス
find ./*.java -atime +2 2日より前にアクセス
find ./*.java -mtime 0 特定の日に更新されたファイルやディレクトリ
find ./*.java -empty 空のディレクトリ検索

ファイルの中身を絞り込み
grep 特定の文字 ファイル名

カレントディレクトリにあるファイルやディレクトリを絞り込み
grep 特定の文字 ./*

ファイルの中身を並び替える
sort ファイル名
-n 代償を基準に並び替える
-k空白で区切られる何個目のフィールドを基準にするか

隣り合った行で重複しているものをまとめる
uniq ファイル名
sort ファイル名 | uniq組み合わせる
-u 重複していない行だけ抽出する

2つのテキストファイルの差分を見る
diff 1つ目のファイル名 2つ目のファイル名

文字列の置き換え
tr 先に対象が必要でパイプを併用する
cat sample.txt | tr s a > new.txt sをaに変更

sedを使った文字列の置き換え
sed
sed -e 's/te/se/' old.txt > new2.txt teをseに変更

cutコマンドで指定した文字列を切り取る
切り取った部分が結果として出力される点に注意
cut -c 2 sample.txt sampleから2文字目を切り取る
cut -c 1-2 sample.txt 1~3文字目を切り取る
cun -c 1,2,3,4 sample.txt1,2,3,4文字目を切り取る
cut -d , -f 1 sample.txt | sort | uniq -u組み合わせで細かくフィルターをかけられる
echo aaa:bbb:ccc | cut -d : -f 2 bbbが出力される(区切り文字列追加)

ファイルの文字数を数える
wc -c ファイル名

応用?? ちょいむず

ftpで接続 ftpは主にファイルを送受信するために使う
ftp サーバーのアドレス

ファイルの送受信
ftp > get ./ファイル名ftpに接続した際にいたディレクトに保存される
ftp > put ./ファイル名

ホームゲートウェイを確認
route

特定の相手への応答と所要時間を確認
pin IPアドレスまたはドメイン名
pin -c 2 IPアドレスまたはドメイン名リクエスト数を設定
pin -w 5 IPアドレスまたはドメイン名リクエストを秒数で設定

特定のドメインに対して名前解決する
nslookup ドメイン名

現在使用しているDNSサーバーを確認
cat /etc/resolv.conf resolv.confファイルを確認する

HTTPレスポンスの中身を見る(Get)
指定のURLはサーバーIDでも同じこと
curl 指定のURL httpレスはheaderとbodyに分かれてる デフォはbody
curl -I 指定のURLHeaderだけをみたい場合
curl -i 指定のURL headerもbodyも両方表示する
curl 指定のURL -o res.txtレスをファイルに出力する

POSTで確認する
curl -XPOST -d 'name=user' 指定したURL -dの後ろにPOSTする内容
curl -XPOST -d 'name=user&job=engineer' 指定したURL

特定のURLからリソースをダウンロードする
sudo apt install wget Linux標準機能ではないためinstall
wget 指定したURL
wget 指定したURL -O ./sample.txt -Oでdirとfile名と指定

Linuxのパッケージ管理ツール
dpkg --help dpkgコマンド一覧
dpkg -l 既存パッケージ一覧
dpkg -s パッケージ名 特定のパッケージの詳細情報
dpkg -i パッケージファイル名 package fileのdevファイルを元にinstall

Linux依存関係も解決する管理ツール
apt update aptを使う前に必ずupdateする
apt install パッケージ名
apt remove パッケージ名
apt --purge remove パッケージ名 依存関係も含めてアンインストール

Apachでwebサーバーを立てる
sudo apt install apach2 apach2をinstall
sudo apache2ctl start apach2を起動

Apacheで自分の作成したhtmlファイルを公開
/var/www/html ここにhtmlファイルを移動する 最初に表示するファイルはindex.html

Nginxでwebサーバーを立てる
sudo apt install nginx nginxをinstall
sudo nginx nginxを起動

Nginxで自分の作成したhtmlファイルを公開
/etc/nginx/sites-enabled/default にrootの記載あり defaultはfile
/var/www/html デフォルトだとここにhtmlファイルを置いて公開可能

defaultを編集してrootを書き換えることも可能
nginx -s reloadで際読み込み

説明形式じゃないと理解しづらいコマンド

実行権限

ファイルの種類
テキストファイル
バイナリファイル

実行権限を確認する
ls -l

1文字目: ファイルの種類 「-」だとファイル。「d」だとディレクトリ

2文字目から3文字刻みで 所有者 グループ その他のユーザー

d rwx r-x r-x

読む(4) : r → ファイルの中身を見る権限
書く(2) : w → ファイルを編集する権限
実行(1) :x → ファイルを実行する権限

読む(4)+書く(2)+実行(1)=7

drwxrwxrwsなら 777で表すことができる

実行権限を変更する
chmod 744 ファイル名


実行ファイルを実行する際に問題が派生した場合
ELFファイルなのか
実行権限は持っているのか
パスは適切か
を疑う

消去コマンド*
dw de d$

標準入力・標準出力・標準エラー出力

Linuxには3種類の入出力名が存在します。

標準入力:0
標準出力:1
標準エラー出力:2
それぞれには、上記のように割り振り番号が指定されています。

/dev/nullファイルは特殊で、MacやWindowsなどのOSでいうゴミ箱に該当するものです。

そのことから、/dev/nullファイルに出力結果をリダイレクトすることを「捨てる」と言ったりします。

エラー出力をゴミ箱に擦れる
出力結果 2>/dev/null 2と>の間にスペースを開けないことがポイント

正規表現

^文字 → 行頭の文字は何かを表す
$文字 → 行末の文字は何かを表す
. → 任意の1文字があることを表す

  • → 直前の文字を0回以上繰り返すことを表す
    [文字] →[]の中に入っている文字のどれかがあることを表す
    [^文字] → []の中に入っている以外の文字を表す
    ¥ → 正規表現で使われている記号をふつうの文字として使う
    () → 正規表現適用範囲のグループ化

正規表現の例
grep -E '(=6)(.)*(9)$' secrets.txt

IPアドレスを調べる

ifconfig

IPアドレス inet
MACアドレス ether
サブネットマスク netmask
サーバーのネットワークアドレス inetとnewmaskをAND計算

ncコマンドでサーバーと通信

netcatの略
TCPまたはUDPの通信

ipアドレスとポート番号を指定して相手のサーバーに接続する
nc サーバーのアドレス サーバーのポート番号

自分がサーバーとなり、相手からの接続を待ち受ける
nc -l 受診したいポート番号

UDPで通信
nc -ulp 受診したいポート番号

シンボリックリンク

特定のファイルやディレクトリのパスを保存し、使用することで実際にそのパスにアクセスできるもの

新規のシンボリックリンクを作成
ln -s 元のファイルやディレクトリ シンボリックリンクの名前

既存のパスの情報を変更
ln -nfs 元のファイルやディレクトリ シンボリックリンクの名前

削除
unlink シンボリックリンクが存在する元のファイルやディレクトリ

SSHコマンドと認証

SSHとはネットウェアークを介して別のコンピュータに接続する通信プロトコルの1種
データやパスワードなどを暗号化して安全に通信することができる
パスワード認証と公開鍵認証の2つの認証方法があるが、鍵の使用が推奨
/etc/ssh/sshd_configファイルでパスワド認証を無効にできる
鍵の保存場所はauthorized_keys

sshでコンピュータに接続する
ssh ユーザー名@IPアドレス

ペアの鍵を作る
ssh-keygen
ssh-keygen -f 鍵を保存したい場所/名前保存場所をやファイル名を指定

公開鍵をsshで接続したサーバーに設定する例
cat id_rsa.pub | ssh envader@172.19.2.11 'cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys'

パスワードログインを禁止にする
sudo vi /etc/ssh/sshd_config
PasswordAuthenticationの部分をnoにして #を取る

バージョンの確認

unameでカーネルの名前やバージョンなどを確認できる
これだけでは、Linuxという情報以外何も分からないので、知りたい情報に合わせてオプションを指定します。

-o → OSの名前を表示
-v → カーネルのバージョンを表示
-r → カーネルのリリース番号を表示
-p → CPUの種類を表示
-a → unameコマンドで確認できる全ての情報を表示
OSのバージョンを確認する場合は/etcにあるos-releaseというファイルを確認します。

cat /etc/os-release

path

PATHの一覧を確認するためには、以下のコマンドを使用します。
echo $PATH

PATHは環境変数に登録されているため、$という記号を前に付けてechoで出力することで、環境変数として登録されているPATHの一覧を表示することができるのです。

whichとは、特定のLinuxコマンドの実行に必要なファイルのPATHを表示するのに使用するコマンドです
thich ls

「PATHを通す」とは、新たなパスを追加して他のディレクトリ上にあるコマンドを認識させることです。
export PATH=$PATH:/home/sample
上記のコマンドを使うことで、新たに/home/sample上に存在するシェルスクリプトが認識され、コマンドとして使用することが出来るようになります

0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?