はじめに
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.txt
1,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 指定のURL
Headerだけをみたい場合
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上に存在するシェルスクリプトが認識され、コマンドとして使用することが出来るようになります