Linuxコマンドの基礎知識 (1)

lsコマンドに関する基本オプションとその動作について説明します。

-1#各ファイルを1行ずつ表示
-n/--numeric-uid-gid#-lと似ていますが、ユーザーIDとグループIDを数値で表示
-i/--inode#各ファイルのインデックス番号を出力
-F#ファイルタイプを示す文字をファイル名に追加
#実行可能ファイルには'*'を付与
#ディレクトリは'/'、シンボリックリンクは'@'、FIFOは'|'、ソケットは'='、ドアは'>'、通常ファイルは何も付けない

-d#ディレクトリ自体をリスト表示し、その中身は表示しない
ls -d /var/tmp -l#-dなしの場合、/var/tmpの中身が表示される
#drwxrwxrwt. 2 root root 6 Mar 24 00:26 /var/tmp
ls -d#カレントディレクトリを表示、lsはその中のファイルを表示
ls -d */#ディレクトリのみを表示(隠しディレクトリは除く)
ls -d .*/#隠しディレクトリのみを表示
ls -d .*#カレントパス内の隠しファイルと隠しディレクトリを表示

#ディレクトリのみを抽出
ls -F | grep "/$"
ls -al | grep "^d"
-l#ファイル種別|アクセス権|ハードリンク数|所有者|グループ|サイズ|更新日時|ファイル名
ディレクトリをリスト表示する際、最初に'合計ブロック数'を表示。ブロックサイズは通常1024バイト。
-s#ファイルのファイルシステム割当量をファイル名の左側に表示
これはファイルが使用するファイルシステム空間であり、通常はファイルサイズよりわずかに大きいが、ファイルに穴がある場合小さいこともある。
通常は1024バイト単位で表示され、この値は変更可能。

pwd#現在の作業ディレクトリを表示
ctrl c#プロセスを終了
ctrl z#プロセスを一時停止
cd#ディレクトリを切り替え。cdのみでホームディレクトリへ移動
cd - #前回の作業ディレクトリに戻る
cd ../#親ディレクトリへ移動

#タブキー補完機能
ca#caから始まるコマンドをすべて表示
#ファイルやディレクトリ名の後で使用
cd ../#親ディレクトリ内のファイルを表示
.autorelabel etc/ opt/ sys/

mkdir filename#現在のディレクトリにサブディレクトリを作成
mkdir -p a/b/c#複数階層のディレクトリを一括作成
mkdir -p /a/b/c#ルートディレクトリ以下に同様に作成
rm filename1 filename2#複数ファイルを削除(スペース区切り)
-r#ディレクトリを削除
#rm -rvf 強制削除、慎重に使用

find / -name filename#ルートディレクトリからfilenameという名前のファイルを検索
find / -atime n#ルートディレクトリからn*24時間前に最後にアクセスされたファイルを検索
-amin n#n分前にアクセスされたファイル
-ctime n#n*24時間前に状態が変更されたファイル
-cmin n#n分前に状態が変更されたファイル

cp [パラメータ] ソース 先
#複数のソースがある場合、先はディレクトリである必要がある
cp –r test/ newtest#testディレクトリ以下のすべてのファイルとディレクトリをnewtestにコピー
cp file1 file2#file2が存在しなければ作成される

#ファイルの名前変更・移動
mv 1.txt 2.txt#1.txtを2.txtに名前変更。第二引数がディレクトリの場合は移動
cat a.c main.c > file.c#ファイルを結合
cat > main.cpp#ファイルの作成(上書き)、Ctrl+dで終了
tail filename#ファイルの末尾10行を表示、headは先頭10行
head -6 filename#先頭6行を表示
tail -20 filename#末尾20行を表示
awk 'NR==2' result.txt#2行目だけを表示
sed -n '2p' result.txt#2行目だけを表示
cat filename #すべて表示、-nで行番号も表示(nlコマンドも同様)
tee [FILE]#標準入力を各FILEおよび標準出力へ出力

chown#ファイルまたはディレクトリの所有者とグループを変更
ifconfig#ネットワークインターフェース情報を表示
uname -a#(カーネル名|ホスト名|カーネルバージョン|ビルド日時|マシンアーキテクチャ|プロセッサアーキテクチャ|ハードウェアプラットフォーム|オペレーティングシステム名)
#カーネル名はLinux、OS名はGNU/Linuxが一般的。アーキテクチャは通常同じ
uname -r#カーネルバージョン
uname -v#カーネルビルド日付
#224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023
#224はカーネルビルド番号、-UbuntuはUbuntuカスタマイズ版、SMPはマルチコア対応
#5 Wed Feb 25 21:49:24 MET 1998
#5はこのソースベースからビルドされたカーネルの5番目を意味し、その後の日付はビルド日時

/proc/version#Linuxカーネルバージョン、GCCバージョン、ビルド日時
/proc/sys/kernel/version#Linuxカーネルビルド日時
/etc/redhat-release,/etc/centos-release#CentOSバージョン情報
/etc/os-release,/etc/lsb-release#Ubuntuバージョン情報

realpath 相対パス#相対パスを絶対パスに変換して表示
free -mh#メモリ使用量を表示
ipcs -q#メッセージキューを確認

#オプションなしの場合、statはファイルに関するすべての情報を表示
#また、ファイルが存在するファイルシステムに関する情報も表示可能
stat main.c -f#ファイルが属するファイルシステムの情報を表示
stat main.c -c "%T" -f#-cで表示形式を指定し、ファイルシステムのタイプを表示
stat -c "%s" main.c -f#ファイルシステムのブロックサイズ
stat -c "%s" main.c#ファイルの実際のサイズ(バイト単位)
stat -c "%b" main.c#ファイルが占めるブロック数(通常512バイト単位)
stat -c "%B" main.c#各ブロックのサイズ(通常512バイト)

# atime: 最後にデータにアクセスした時間
# mtime: データの最終更新時間
# ctime: ステータスが最後に変更された時間

# touchコマンドはこれらの3つのタイムスタンプを変更
# catコマンドはatimeのみ変更

touch#ファイルのタイムスタンプを変更
#指定されたファイルのアクセスおよび/または更新タイムスタンプを変更
#存在しないファイルは--no-createオプションがない限り空のファイルとして作成

#'-a'という名前のファイルを作成
touch -a#エラー。-aがオプションと認識され、ファイル名が指定されていないため
touch ./-a#正常
touch -- -a#正常。--以降はオプション終了、以降は引数として扱われる

chmod 664 filename
chmod +x filename#所有者、グループ、その他に実行権限を追加。a+xと同じ
-R#サブディレクトリ内のファイルも含めて権限を変更

grep "game" /etc/passwd
よく使う組み合わせ:-rn, -rwn, -rwnF
-r#再帰的に各ディレクトリ内のファイルを読み込み。ファイル引数がない場合、現在ディレクトリを読む
-w#一致する語がファイル内に単語として存在することを要求
-v#一致しない行を出力
-F#検索語を正規表現として解釈しない
-i#大文字小文字を無視
-n#行番号を表示
--include="*.h" #ヘッダーファイルのみを対象にする
--exclude-dir="xxx" #特定のディレクトリを除外
-A 10#一致行とその下10行を表示
-B 10#一致行とその上10行を表示
-C 10#一致行とその上下10行を表示
-l#一致行を出力せず、一致するファイル名のみを表示
-L#一致行を出力せず、一致しないファイル名のみを表示
-I#バイナリファイルを処理しない

ps にはいくつかのオプションがあります:
UNIX形式のオプションはグループ化でき、ダッシュで始める必要があります。
BSD形式のオプションはグループ化でき、ダッシュなしで使用します。
# psはデフォルトで同じ有効ユーザーIDかつ同じ端末に関連するプロセスのみを表示
-e#すべてのプロセスを選択。-Aと同等。
ps xjf#プロセスツリーを表示
#プロセス終了:kill、kill -9(強制終了)

#操作:
-c#新しいtarアーカイブを作成
-r#アーカイブの末尾にファイルを追加
-t#アーカイブ内のメンバー名を取得
-x#アーカイブからファイルシステムに展開
#オプション:
-v/--verbose#処理しているファイルを表示
-z#GNU tarの-zオプションでgzipを透明に使用

-cvf  [xxx.tar] filename1 filename2 filename3#圧縮しないアーカイブ作成
-zcvf [xxx.tar.gz] filename1 filename2 filename3#圧縮してアーカイブ作成

-xvf  [xxx.tar]#アーカイブからファイルを展開
-zxvf [xxx.tar.gz] -C path#指定ディレクトリに解凍
-Jxvf#xz形式の圧縮ファイルを解凍

-tvf  [xxx.tar]#アーカイブ内のファイルを表示
-rvf  [xxx.tar] filename1 filename2 filename3#アーカイブにファイルを追加

ln -s /root/info myInfo#現在ディレクトリにmyInfoという名前のシンボリックリンクを作成し、/root/infoを指す

# コマンドの末尾に&を付けることでバックグラウンド実行
# nohupはログアウト後も実行継続
# 出力はhello.logにリダイレクト
nohup java -jar xxx.jar &
nohup java -jar xxx.jar &> hello.log &

netstat -tunlp#ポート使用状況を確認。tはTCP、uはUDP、nはIPとポートを数値で表示、lはリッスン状態、pは関連プロセスとPIDを表示
ss -tunlp |grep 3306#特定ポートの使用状況を確認
ss -tunp | grep ip\pid\process_name\port#各列の意味はssコマンドで確認可能

systemctlはサービスの起動、停止、状態確認などを制御します。

RHEL6RHEL7役割
service foo startsystemctl start fooサービス起動
service foo restartsystemctl restart fooサービス再起動
service foo stopsystemctl stop fooサービス停止
service foo reloadsystemctl reload foo設定ファイル再読み込み
service foo statussystemctl status fooサービス状態確認
chkconfig foo onsystemctl enable foo起動時に自動開始
chkconfig foo offsystemctl disable foo起動時に自動開始しない
chkconfig foosystemctl is-enabled foo特定サービスの自動起動状態確認
Command | less

lessモード(スペースでページ送り、bで戻る、Enterで1行スクロール)

先頭にスラッシュを入力してテキストを入力すると、全文の中で該当箇所をハイライト表示。

Ctrl+zまたはqでlessモードを終了。

参考:

タグ: linux コマンドライン ls find cp

5月15日 06:26 投稿