シェルはユーザーコマンドを受け取り、os に実行を渡します
基本ナビゲーションと表示#
pwd#
pwd、現在のディレクトリの絶対パスを表示します
ls#
list、現在のディレクトリ内のファイルを列挙します
パラメータ:
-l
各ファイルの属性を列挙します。一般的には ll
の略称があります。
drwxr-xr-x@ 2 fling staff 64 5 24 15:42 test
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | | | | | |
| | | | | | | | | | | | └─ ファイル名/ディレクトリ名 (Name)
| | | | | | | | | | | └─────── 最後の修正時間 (Modification Time)
| | | | | | | | | | └────────── 最後の修正日 (月の中の日) (Day of Month)
| | | | | | | | | └──────────── 最後の修正月 (Month)
| | | | | | | | └──────────────── ファイルサイズ (バイト) (Size)
| | | | | | | └─────────────────────── 所属グループ (Group)
| | | | | | └──────────────────────────── ファイル所有者 (Owner)
| | | | | └──────────────────────────────── ハードリンクの数 (Number of Hard Links)
| | | | └────────────────────────────────── 拡張属性フラグ (Extended Attributes Flag - @) (macOS 特有)
| | | └──────────────────────────────────── 他のユーザーの権限 (Others' Permissions)
| | └─────────────────────────────────────── グループユーザーの権限 (Group's Permissions)
| └────────────────────────────────────────── ファイル所有者の権限 (Owner's Permissions)
└──────────────────────────────────────────── ファイルタイプ (File Type)
属性の詳細:
- ファイルタイプ:
-
: 通常のファイル (例:1.txt
)d
: ディレクトリ (例:test
)l
: シンボリックリンクc
: キャラクタデバイスファイルb
: ブロックデバイスファイルs
: ソケットファイルp
: 名前付きパイプ
- ファイル権限:
- 三つのグループに分かれ、各グループは三文字で、ファイル所有者、所属グループユーザー、他のユーザーの権限を表します
- 各グループの文字は
rwx
で、読み取り、書き込み、実行の権限を表し、相応の権限がない場合は-
で代用され、簡潔に表すためにr\w\x
に数字4\2\1
を割り当てます。
- ハードリンクの数:
- ファイルの場合、何個のファイル名がこのファイルの
inode
を指しているかを示します - ディレクトリの場合、通常は 2 + サブディレクトリの数で、各ディレクトリには
.
が自身を指し、..
が親ディレクトリを指します
- ファイルの場合、何個のファイル名がこのファイルの
-a
すべてのファイルを列挙し、隠しファイルも含まれます
. .. .env 1.txt test
cd#
c、ディレクトリに入ります
前述の通り ..
は親ディレクトリを表します
cd -
は前回の位置に戻ることを意味します
tree#
tree []
ディレクトリ []
の構造を表示します
ファイルとディレクトリの操作#
touch#
touch、タイムスタンプを更新しますが、ファイルを作成することもできます
mkdir#
mkdir、ディレクトリを作成します
cat#
cat、特定のファイルの内容を出力します
less#
less、特定のファイルを表示し、上下にスクロールできます。q
を押すと戻ります
必要な部分だけを読み取り、表示します
g
は先頭、G
は末尾
%
または p
はパーセントジャンプ
/pattern
は前方検索、?pattern
は後方検索、n
は次の一致、N
は前の一致
F
はファイルの末尾の新しい内容を継続的に監視し、tail -f
に似ています
more#
more、特定のファイルを表示し、上にスクロールできません。q
を押すと戻ります
ファイル全体を一度にメモリに読み込み、表示します
head#
head、特定のファイルの先頭を出力します
head --lines=n file
は file
の最初の n
行を出力します
tail#
tail、特定のファイルの末尾を出力します
tail --lines=n file
は file
の最後の n 行を出力します
tail -f
は後続の内容を継続的に表示します
cp#
cp 源 目的
ファイルまたはディレクトリをコピーします
mv#
mv 源 目的
移動、または名前を変更するためにも使用できます
rm#
rm、削除します
rm -r
は再帰的に削除し、ディレクトリに使用します
ln#
ln、リンクを作成します
ln -s 源 目的
ソフトリンクで、ファイルを保存せず、単なるショートカットファイルです
ln 源 目的
ハードリンクで、源ファイルのポインタを指し、同じ inode を共有します。参照と見なすことができ、ファイルのみを指すことができます
権限と検索#
chmod#
権限を変更します
u\g\o
は三つのグループの権限を表します
chmod u+x file
は所有者に実行権限を与えます
数字を使って変更することもでき、例えば chmod 744 file
です
file#
file、ファイルの種類を示します。例: 1.txt: ASCII text
where/which/whereis#
where、ファイルの場所を見つけます
出力、パイプと編集#
echo#
echo、コマンドラインに出力します。特殊文字が出現する場合は " "
で囲みます
>
標準出力をファイルにリダイレクトします。例: echo "1" > 1.txt
>>
はファイルに追加します
<
標準入力をファイルからリダイレクトします
pipe#
command1 | command2 | command3
一つのコマンドの標準出力を別のコマンドの標準入力として使用します
ls -l | grep "*.txt"
cat server.log | grep "ERROR" | less
nano#
Crtl+X
で終了、Crtl+O
で保存します
vim#
コマンドモードで、:wq
で保存して終了、:q!
で強制終了、[n]yy
で n 行をコピーし、[n]p
で n 回をカーソルの次の行に貼り付け、dd
で削除します
コマンドモードで i\a\o\I\A\O
を入力すると挿入モードに入り、挿入モードで esc
を押すとコマンドモードに戻ります
挿入モードで ^
は行の先頭に移動し、$
は行の末尾に移動します
コマンドモードで :
を入力すると行末モードに入り、行末モードで esc\enter
を押すとコマンドモードに戻ります
変数とワイルドカード#
shell#
変数を定義するには variable=value
と記述するだけで定義され、echo ${variable}
で確認できます。中括弧は曖昧さを防ぐために使用されます
前方カット、例えば ff=week01
の場合、echo ${ff#week}
は 01
を出力します
末尾 %
?
は一文字のプレースホルダー、*
は任意の文字のプレースホルダーを指します
for i in $(seq 1 10)
1 から 10 までのシーケンス
for ((i=0;i<10;i++))
C スタイルのループ
一括リネーム
for> do
for> mv ${d} chapter${d#week}
for> done
この記事は Mix Space によって xLog に同期更新されました
元のリンクは https://blog.chanler.dev/posts/tech-learn/linux-command