一. stat と ll#
// stat と ll stat は自分の情報しか見れない。 llはフォルダ内のものを見ることができる。
// オプションの組み合わせ(順不同) 例 ls -Al (2つの機能を同時に表示)
// du -sh ファイルとフォルダのサイズを統計
// mkdir -p 親ディレクトリが存在しない場合、新しく作成
フォルダが存在する場合はエラーを出さない
// スクリプトを書くときによく使う
-v 通知を表示(作成成功を表示)(あまり意味がない)
stat と ll と ls -l -d#
// stat と ll と ls -l -d
stat は自分のファイル情報(フォルダ自体)しか見れない
ll フォルダ内のものを見ることができる(フォルダの中身)
ls -l -d 自分の詳細情報だけを見る(フォルダ自体)
二。集合 {xx,xxx}#
1 つのコマンドで複数のフォルダを作成#
#注:重要なポイント{}
// mkdir hunantv/{weishi,jingshi,dushi} 1つのコマンドで複数のフォルダを作成
China_voiceパス内にhunantvフォルダ内のフォルダを作成(hunantvはChina_voiceの下)
{weishi,jingshi,dushi} は共通の親ディレクトリを持つ集合を表す
1つのフォルダを作成する場合、{ }で囲むことはできない、{ }はファイル名になる。
// 1つのコマンドで完了(普段はあまり使わない) 中にいくつかのレベルがある
親ディレクトリが存在しない場合は -p オプションを付ける
三. {1..100}#
#注:mkdir sc{1..100}
#注:rm -rf sc{1..100}
// mkdir sc{1..100} 1から100のファイルを生成
{1..100} は 1 から 100の集合を表し、前のscと組み合わせる
mkdir 一度に複数を作成する機能
// rm -rf sc{1..100}
rm -rf sc* 2つの方法で削除できる
// mandatory コマンドの
arguments パラメータ
// mkdir -p 親ディレクトリが存在しない場合、新しく作成
フォルダが存在する場合はエラーを出さない
// mkdir -v 通知を表示
四. du -sh#
// du -sh ディレクトリのサイズを確認
コマンド オプション パラメータ
五. cd#
// cd - 前回のパスに戻る
cd . 現在のディレクトリに入る
cd .. 上のディレクトリに戻る
cd ~ 現在のユーザーのホームディレクトリに戻る
cd 現在のユーザーのホームディレクトリに戻る
cdコマンド
用途:作業ディレクトリを切り替える(Change Directory)
フォーマット:cd [ディレクトリ位置]
#注:特殊ディレクトリ
. 現在のディレクトリ
.. 上のディレクトリ
~ ユーザーのホームディレクトリ(家ディレクトリ)
- 前回の作業ディレクトリ(リモコンの戻るボタン)
// useradd xulilin 新しいユーザーを作成
cd ~xulilin xulilinユーザーのホームディレクトリに入る
[root@localhost xulilin]# pwd
/home/xulilin
// mkdir 新しいディレクトリを作成
touch qijian 新しい空ファイルを作成
touch hengshan/yilin.txt
六. cp -r#
// cp /etc/hosts songshan/ ファイルをコピーする時は -r を付けない
cp hengshan/ songsahn/ -r フォルダをコピーする時は -r を付ける
七. file#
// file taishan ファイルタイプを確認
八。ファイルタイプ#
// 一般的なファイルタイプ:ディレクトリ directory
空ファイル empty
テキストファイル text
// du -sh taishan/ ファイルサイズを確認
// rm -rf tianshan/ 削除
九. cp#
// cp コピーする時:
コピー、貼り付け、リネームを一度に行う(リネームは後ろに存在しない必要がある)
cp a.txt abc.txt (ディレクトリ内に2つのファイル a.txt abc.txt がある)
cp a.txt songshan/feng.txt (songshanにコピーしてfeng.txtに名前を変更)
cp hengshan/ songshan/nanyue_hs -r(フォルダをコピーする時は -r を付ける)
hengshanをsongshanにコピーしてnanyue_hsに名前を変更
十. mv#
// mv カット、貼り付け、リネームを一度に行う(リネームは後ろに存在しない必要がある)
mv a.txt hengshan/aaa.txt (カットして貼り付け、aaa.txtにリネーム)
mv songshan/ hengshan/shaolinshi (移動して貼り付け、shaolinshiにリネーム)
移動してリネームする時は -r オプションは必要ない(cpとの違い)
十一。主従プロンプト#
// 主プロンプト
[ログインユーザー@ホスト名 作業ディレクトリ]
従プロンプト
# $
[root@localhost xuxia]#
[root@localhost wuxia]#
[xulilin@localhost ~]$
// linuxは多ユーザー多タスクのオペレーティングシステム
rootユーザーのホームディレクトリ /root
一般ユーザーのホームディレクトリ /homeの下にユーザー名と同名
十二. echo#
// echo 出力 printに相当
PS1 はlinuxシステム内に組み込まれている変数で、私たちが定義する必要はない
十三。第 1 プロンプト#
第1プロンプト変数 PS1 prompt symbol プロンプト シンボル variable 変数
[\u@\h \W]$ の説明#
// # echo $PS1 # 注:第1プロンプト
[\u@\h \W]\$
説明:
\u 現在のユーザーを参照 user
\u 現在のユーザー名
\h 現在のホスト名を参照 hostname
\W 現在の作業ディレクトリの名前を参照 working
\$ ユーザーがrootの場合は#を出力し、そうでない場合は$シンボルを出力
\t 現在の時間
PS1 変数の一時的な変更#
// # PS1='[\h@\u \t@\W]\$' PS1変数を一時的に変更(変更する必要はない、知っておけばよい) \t 現在の時間
[localhost@root 11:01:07@~]#
[localhost@xulilin 11:03:08@boot]$PS1='[\h#\u \t@\W]\$'
[localhost#xulilin 11:03:32@boot]$ // # も可能
第 1、2 プロンプト#
// # echo $PS1
[\u@\h \W]\$
# echo $PS2 第2プロンプト
>
// 1行が未入力の場合、第2プロンプト>が表示される(ただの通知の役割)
十四. $+ 変数名#
$PS1 $+変数名 特定の変数を参照
// # echo $PS1
[\u@\h \W]\$
// sg="tangliangfei" 変数sgを定義し、tangliangfeiを代入 右側を左側に代入
echo $sg sgという変数の値を出力
shellプログラミングでは変数を参照する際に$+変数名を付ける必要がある
Shellプログラミング linux内のコマンドプログラミング
// mv="liangly"
echo $sg $mv
tangliangfei liangly (両方表示)
十五. id#
// id コマンド
[root@localhost china_voice]# id
uid=0(root) gid=0(root) グループ=0(root) 環境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
rootユーザーのuidは0
user id ユーザーの番号 uid
group id グループの番号 gid
十六. Linux コマンド#
// Linuxコマンド
特定の機能を実現するための指示またはプログラム
コマンドの実行は解釈器プログラム(例:/bin/bash)に依存
// 人 <——> bash <——> カーネル <——> ハードウェア
bash は解釈器で、C言語で書かれたプログラムの翻訳ツール
Linuxコマンドの分類
内部コマンド:Shell解釈器の一部に属する
外部コマンド:Shell解釈器とは独立したプログラムファイル
// shell:ユーザーが入力したコマンドを解釈し、カーネルに実行を指示するプログラムの一種
bsh
sh
csh
bash
ksh
bashは最も人気のあるshellで、ほぼすべてのlinuxシステムのデフォルトのshellはbash
人——BASH——カーネル
(大体理解)
十七. cat /etc/shells#
// cat /etc/shells 自分のマシンにどのshellがあるか確認
/bin/sh 古いshell
/bin/bash
/usr/bin/sh
/usr/bin/bash
// sh shを叩くと、shを使用し、プロンプトが表示されず、exitを叩くとbashに戻る(親子プロセス)
// shellを切り替える sh と bash コマンド exit
十八. ln -s#
#注:リンクファイル 天青色
// ln -s
ln リンクファイルを作成(ショートカット)
元のファイルを削除しないでください、そうしないとリンクファイルが使えなくなります(赤く点滅)
ln -s 元ファイル リンクファイル ln -s xulilin xll
-s シンボリックリンク(ソフトリンク)
# mkdir changsha
# ln -s changsha cs
# ll
lrwxrwxrwx. 1 root root 8 9月 17 11:19 cs -> changsha
十九. echo $SHELL#
// # echo $SHELL linuxシステムのデフォルトのshellを確認
/bin/bash
二十. env#
// # env 現在のユーザーの環境変数を確認(linuxシステムで事前に定義された変数) environment
現在のユーザーの多くのプロセスが使用できる変数
環境変数--》グローバル変数
二一. set#
# set すべての変数を確認(ユーザー定義変数と環境変数)
二二。内部外部コマンド#
// bash - GNU Bourne-Again SHell
BASH_BUILTINS builtin 内部(内部) built in
追加でインストールされたコマンド--》外部コマンド
bashというプログラムをインストールすることで得られるコマンド--》bashの内部コマンド
yum install tree -y treeコマンドは外部コマンドで、追加でインストールが必要
mkdir ip 外部コマンド cd echo exit 内部コマンド
二三. which#
// which bash bashコマンドがどこにあるか確認
/usr/bin/bash
二四. rpm#
rpm -qf#
#注:rpm -qf コマンドがどのソフトウェアパッケージからインストールされたかを確認
#注:まずwhichでコマンドの絶対パスを確認
// rpm -qf /usr/bin/bash /usr/bin/bashがどのソフトウェアパッケージからインストールされたかを確認
bash-4.4.19-10.el8.x86_64
rpm#
// rpm はlinuxのソフトウェア管理コマンドで、ソフトウェアのインストールやアンインストールに使用
-qf ファイルがどのソフトウェアからインストールされたかを確認
// # which ip
/usr/sbin/ip
# rpm -qf /usr/sbin/ip
iproute-5.3.0-1.el8.x86_64
// bin バイナリ binary
二五. /usr#
#注:/usr インストールされたソフトウェアのディレクトリ unix system resource
// /usr はlinuxでインストールされたソフトウェアのディレクトリ unix system resource unix システムリソース
WindowsのProgram Filesに相当
// リンクファイル 薄青色
通常のファイル 濃青色
// / ルートディレクトリ
/root rootユーザーのホームディレクトリ
/home/ユーザー名と同名のディレクトリ 一般ユーザーのホームディレクトリ
二六. / と /root の関係#
// ルートディレクトリとrootユーザーのホームディレクトリの関係は?
/root は/ディレクトリの下にあり、包含関係にある
// ~ はホームディレクトリを表し、ファイルパスがホームディレクトリである場合、~が表示される
一般ユーザーは自分のホームディレクトリにしか入れず、rootユーザーはどのホームディレクトリにも入れる↓↓↓
他のユーザーのホームディレクトリに入る#
[xulilin@localhost /]$ cd ~xulilin # 注:一般ユーザーは自分のホームディレクトリにしか入れない
[xulilin@localhost ~]$ cd ~cali
-bash: cd: /home/cali: 権限が不足しています
[xulilin@localhost ~]$ exit
ログアウト
[root@localhost ~]# cd ~cali
[root@localhost cali]# pwd
/home/cali
[root@localhost cali]#
二七. hostname#
// # hostname ホスト名を確認
localhost.localdomain
一時的、永続的にホスト名を変更#
一時的変更#
// # hostname sanchuang-linux 一時的にホスト名を変更(アンダースコア_は使用できない)
その後再ログイン su - root (現在のターミナルでログイン)/ または新しい接続を作成(新しいターミナルでログイン) 再起動後に無効
// なぜホスト名を変更するのか?
識別を容易にし、異なるサーバーを区別するため
永続的変更#
//* 永続的にホスト名を変更
# vim /etc/hostname このファイルを変更し、新しい名前を付ける。
# cat /etc/hostname
sanchuang-linux
再起動後に有効
// reboot 再起動
// 必ずしも仮想マシンにログイン後にxshellでログインできるわけではない
// プロンプト
PS1 第1プロンプト
PS2 第2プロンプト
二八. vim#
// vimエディタの使用
vim はlinuxの文字ベースのテキストエディタ ——》メモ帳 文字しか書けない
vimをインストール yum install vim -y
// vim sc.txt
1.iキーを押して入力モードに入る insert
2.内容を入力できる、中文または英文
3.ESCキーを押してコマンドモードに戻る escape 離脱
4.:wq 退出して保存 write quit
:q! 保存せずに退出
:q 退出(変更がない場合は退出可能)
二九. cat#
// # cat sc.txt テキストファイルの内容を確認
三十。ショートカットキー#
// ショートカットキー
// ctrl + l
// ctrl + c コマンドを強制終了 # ^ C
例えば ping www.baidu.com ctrl + c
// tab コマンドを補完 # mkd (その後2回tabキーを押す)mkdで始まるコマンドがすべて表示される
パスを補完 # mkdir wang 一意性があれば直接補完 そうでなければ2回押してwang…をリストアップ
一意性を認識できるときは、1回tabキーを押す
一意性を認識できないときは、2回押してから自分で入力
// 上下方向キーで以前使用したコマンドを呼び出す
三一. pwd#
// pwd 作業ディレクトリを確認
cd 作業ディレクトリを切り替える
cd ~ (cd) ユーザーのホームディレクトリに入る
cd - 前回のディレクトリに戻る
cd ~ liangluyao liangluyaoのホームディレクトリに入る
cd .. 上のディレクトリに戻る
三二。エイリアス#
// ll は ls -l --color=autoのエイリアス
// # alias linuxに定義されたエイリアスを確認
// # alias c=clear cをclearのエイリアスとして一時的に定義
clear はlinuxシステムのコマンド コマンドにオプションがある場合は’ ’ (シングルクォート)で囲む必要がある
新しいターミナルを開くと無効になる一時的定義
cは自分で定義した名前で、エイリアスを定義する際には、既存のシステムコマンドと衝突しないようにする
エイリアスの解除#
// unalias エイリアスを解除
# alias mkdir=ls
# unalias mkdir エイリアスを解除
永続的にエイリアスを変更#
// # vim /root/.bashrc 永続的にエイリアスを変更するには、再ログインするか、suでrootに切り替える必要がある
.bashrc は隠しファイルで、iを押してエイリアス定義を行い——》ESC :wq
三三. ls#
// lsコマンド
用途:リスト(List)ディレクトリの内容を表示
フォーマット:ls [オプション]... [ディレクトリまたはファイル名]
よく使うコマンドオプション
-l :長い形式で表示
-d:ディレクトリ自体の属性を表示
-t: ファイルの変更時間でソート
-r :ディレクトリの内容を英字順に逆順で表示
-a:すべてのサブディレクトリとファイルの情報を表示、隠しファイルも含む
-A: "-a" に似ているが、"." と ".." ディレクトリの情報は表示しない
-h:より読みやすいバイト単位(K、Mなど)で情報を表示
// 必ず -l と一緒に使用する
-h, --human-readable
-l と -s と一緒に使用すると、サイズを1K 234M 2Gなどの形式で表示
-R:再帰的に内容を表示
階層ごとに表示され、treeほどの効果はなく、非常に面倒
// ls 現在のディレクトリを確認
ls /boot /bootの下のディレクトリを確認
ls -l -d /boot 自身のフォルダ情報のみ表示 ls -ld / ls -dl
ls -t 時間 ファイルの変更時間でソート
ls -r 英字 逆順で表示
ls -l -h /boot /bootの各ファイルのサイズを表示
-h は必ず -l と一緒に使用 サイズをK M Gで表示
\ls -l#
// \ls -l 列挙されたファイルタイプの色を表示しない
ls -l |grep "^d"#
// # ls -l|grep "^d"
説明は以下の通り
// | パイプシンボル: プロセス間の通信の一種
作用:前のコマンドの出力を次のコマンドの入力として送る
仲介者、花を借りて仏に捧げる、バスケットを持つ
// grep :テキストフィルタリングコマンド
一致する文字列に基づいてフィルタリングし、一致する内容の行を表示
// ^d はdで始まる行を示す
// # ll|grep "txt"
-rw-r--r--. 1 root root 0 9月 17 15:58 a.txt
-rw-r--r--. 1 root root 0 9月 17 16:02 sc10.txt
# ll|grep "^d"
drwxr-xr-x. 5 root root 48 9月 17 09:51 hunantv
drwxr-xr-x. 4 root root 42 9月 17 09:54 jiangsutv
# ll|grep "^-"
-rw-r--r--. 1 root root 0 9月 17 15:58 a.txt
-rw-r--r--. 1 root root 0 9月 17 16:02 sc10.txt
# ll|grep "^-"|wc -l
11
三四. ASCII#
// ASCII アメリカ情報交換標準コード
数字、大文字、小文字 ASCIIコード値 小——》大
// 1バイト=8ビット
101010101
// man ls ——》/-h -hを含む行を検索
// # man ls
Enter:1行ずつ下に進む
/-h -hを含む行を検索
n 次を検索
N 前を検索
q 退出
三五。ファイルタイプ#
// ファイルタイプ 略称 用途
一般ファイル - データを保存
ディレクトリ d ファイルを格納 directory
シンボリックリンクファイル l 他のファイルを指す link
文字デバイスファイル c character --》文字表示に関連するファイル
ブロックデバイスファイル b block -->データを格納するブロックファイル
s socketファイル
p パイプファイル pipe
三六. 「drwxr-xr-x. 5 root root 48 9 月 17 09:51 hunantv」の説明#
// [root@sanchuang-linux china_voice]# ls -l
合計 0
drwxr-xr-x. 5 root root 48 9月 17 09:51 hunantv
d はファイルタイプを示す directory ディレクトリ
rwxr-xr-x 権限 r 読み取り read w 書き込み write x 実行 execute
. はselinux権限に関連
5 ファイルのリンク数
root ユーザー
root グループ
48 ファイルサイズ
9月 17 09:51 ファイルの作成時間
三七. wc#
// wc は統計コマンドで、ファイル内の行数、単語数、バイト数を統計
-l 行数を統計 lines
wc -l 行数を統計
ファイル名を表示しない#
//# wc -l a.txt (wc -l でもファイルの行数を統計) 直接統計するとファイル名が表示される
3 a.txt
//# cat a.txt |wc -l (catがwcにパイプで渡すのでファイル名は表示されない)
3
//# cat /etc/passwd|wc -l
27
//# cat /etc/passwd|grep "liang"
liangluyao:x:1001:1001::/home/liangluyao:/bin/bash
liangluyao2:x:1002:1002::/home/liangluyao2:/bin/bash
# cat /etc/passwd|grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
練習#
// 1./devディレクトリ内にどれだけの文字デバイスファイルがあるかを統計
ll /dev|grep “^c”|wc -l
2./devディレクトリ内にどれだけのブロックデバイスファイルがあるかを統計
ll /dev|grep “^b”|wc -l
3./etc/ディレクトリ内にどれだけのフォルダと一般ファイルがあるかを統計
ll /dev|grep “^-”|wc -l ファイル
ll /dev|grep “^d”|wc -l フォルダ
ll -R /etc|grep “^-”|wc -l /etcとサブフォルダ内のすべての一般ファイルを統計(サブディレクトリを含む)
ll -R /etc|grep “^d”|wc -l /etcとサブフォルダ内のすべてのフォルダを統計(サブディレクトリを含む)
4./etc/ssh/sshd_configファイルに何行あるかを統計
cat /etc/ssh/sshd_config |wc -l
// フォルダ内にどれだけのファイルがあるかを統計
ll | grep wc
// ファイルに何行あるかを統計
cat | wc
三八. du#
// du ディレクトリとファイルのスペース使用状況を統計 disk usage(推定値であり、非常に正確ではない)
*du -sh 統計の合計サイズ(よく使う)黄金の組み合わせ
-s
-s, --summarize 合計サイズを表示
各引数の合計のみを表示
-h
-h, --human-readable
人間が読みやすい形式でサイズを表示(例:1K 234M 2G)
-a ファイルとフォルダを統計
-a, --all
すべてのファイルのカウントを記録し、ディレクトリだけでなく
du -sh と ll -h の違い#
du -sh /boot
ll -h /boot
// # ll -h /boot はファイルのサイズのみを統計し、フォルダ内のすべてのファイルは合計されない
合計 134M
du -sh は合計を合算できる
ll -h はファイル内にどれだけの単語があるか、どれだけの文字があるかを表示
# du -sh /boot
140M /boot
# ll -h -d /boot
dr-xr-xr-x. 6 root root 4.0K 9月 13 14:38 /boot
// 英字、数字は1バイトを占める
中文字母:utf8エンコーディングで3バイト
ll -h はファイル内にどれだけの文字があるかを統計
ファイル内の文字のバイト数を統計
du はどれだけのブロックを占有しているかを統計
ファイルがディスク上で消費しているブロック数を統計
// 1ブロックのサイズは4096(4K)
// touch 新しい空ファイルを作成
更新時間
// stat host 3つの時間を確認
最近のアクセス
最近の変更
最近の変更
三九。英文エンコーディングに変更#
// 英文エンコーディングに変更
# LANG=en_US.UTF8
# ll hosts
-rw-r--r--. 1 root root 158 Sep 17 16:57 hosts
四十. 3 つの時間#
# stat hosts
File: hosts
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17162314 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:default_t:s0
Access: 2020-09-17 16:57:57.748799777 +0800
Modify: 2020-09-17 16:57:57.748799777 +0800
Change: 2020-09-17 16:57:57.748799777 +0800
Birth: -
時間:
アクセス時間 access time --》atime このファイルを開く cat
変更時間 modify time --》mtime 内容を変更、追加、削除するなど vim
変更時間 change time --》ctime ファイルの属性(名前、権限、サイズ、時間、ユーザー、グループ)を変更
ナノ秒単位で精密
touch hosts 3つの時間をすべて更新(すべて変更)
四一. chmod#
// chmod 権限を変更 change mode
chmod a+w hosts
chown 所有者とグループを変更 change owner
vim hosts 入力 :wq データを変更
// +0800 は東八区を示し、中国の上海、北京
ウルムチは東六区
// # cp /etc/passwd . /etc/passwdを現在のディレクトリにコピー
今私たちが叩いているcpは、すべて cp -i で、cpはエイリアス
# alias
alias c='clear'
alias cp='cp -i'
-i, --interactive インタラクティブ
上書き前にプロンプトを表示(以前の -n オプションを上書き)
四二. cp でファイルを上書きする際に警告を出さない方法#
// cpでファイルを上書きする際に警告を出さない方法
1.エイリアスを解除する --》推奨しない
# unalias cp
2.cpコマンドの絶対パスを使用する --》推奨
# which cp
alias cp='cp -i'
/usr/bin/cp
# /usr/bin/cp feng changsha/ -r
# /usr/bin/cp feng changsha/ -r 再度コピーして上書きする際に警告を出さない