一. 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} 一條命令建多個文件夾
在 China_voice路徑下建 hunantv文件夾下的 文件夾(hunantv在 China_voice下)
{weishi,jingshi,dushi} 表示一個集合,有共同的上級目錄
只建一個文件夾的時候,不能用 { } 括起來,{ } 會成為文件名。
// 一條命令完成(日常用的不多) 裡面有好幾級
父目錄不存在時 接 -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 # 注:第一提示符
[\u@\h \W]\$
解釋:
\u 引用當前的用戶 user
\u the username of the current user
\h 引用當前的主機名 hostname
\W 引用當前工作的目錄的名字 working
\$ 當用戶為root的時候,就輸出#,如果不是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提示符
>
// 一行沒輸完 會顯示第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——kernel
(大概了解)
十七. cat /etc/shells#
// cat /etc/shells 查看本機裡有哪些shell
/bin/sh 比較老的shell
/bin/bash
/usr/bin/sh
/usr/bin/bash
// sh 敲sh,使用sh,沒有提示符,退出去 敲bash 或者 exit (父子進程)
// 切換shell sh 和 bash 命令 exit
十八. ln -s#
#注:鏈接文件 天藍色
// ln -s
ln 創建鏈接文件(快捷方式)
不要去刪除原文件,不然會導致鏈接文件不可用 (一閃一閃 冒紅)
ln -s 源文件 鏈接文件 ln -s xulilin xll
-s symbol link 符號鏈接(軟鏈接 soft)
# 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 第一提示符
PS2 第二提示符
二八. 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 唯一性就直接補齊 否則敲兩下 列出wang…
能識別唯一性時,按一次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
with -l and -s, print sizes like 1K 234M 2G etc.
-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碼值 小——》大
// 一個字節=8位
101010101
// man ls ——》/-h 查找 -h
// # man ls
回車:一行一行的往下走
/-h 查找包含-h的行
n 查找下一个 next
N 查找上一个 next
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 匯總的大小
display only a total for each argument
-h
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
-a 統計文件和文件夾
-a, --all
write counts for all files, not just directories
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 查看三個時間
最近訪問
最近更改
最近改動
三九。改為英文編碼#
// 改為英文編碼
# 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 三個時間都更新(都改了)
四一. 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 交互式
prompt before overwrite (overrides a previous -n option)
四二. 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 再次複製 覆蓋不給提醒