03_Linux基礎-文件類型-主輔提示符-第1提示符-Linux命令-內外部命令-快捷鍵-改為英文編碼-3個時間-stat-其他基礎命令
03_Linux基礎-文件類型-主輔提示符-第1提示符-Linux命令-內外部命令-快捷鍵-改為英文編碼-3個時間-stat-{1..100}-du-cd-cp-file-mv-echo-id-shell-ln-env-set-which-rpm-/usr-/與/root-hostname-vim-cat-pwd-alias-unalias-ls-ASCII-wc-chmod
部落格🔗://blog.csdn.net/cpen_web
一. 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 再次複製 覆蓋不給提醒