發現學習難度逐漸提高,真的要多練啊!node
一、文件目錄管理命令
用於建立空白文件或設置文件的時間 git
參數 | 做用 |
---|---|
-a | 僅修改「讀取時間」(atime) |
-m | 僅修改「修改時間」(mtime) |
-d | 同時修改atime與mtime |
實驗:同時修改讀取時間和修改時間後效果以下vim
[root@mingmingxingforcomputer ~]# stat anaconda-ks.cfg File: anaconda-ks.cfg Size: 1404 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 35268260 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2021-06-27 17:22:00.000000000 +0800 Modify: 2021-06-27 17:22:00.000000000 +0800 Change: 2021-06-27 17:22:56.840020967 +0800 Birth: - [root@mingmingxingforcomputer ~]# touch -d "2022-6-27 15:01" anaconda-ks.cfg [root@mingmingxingforcomputer ~]# stat anaconda-ks.cfg File: anaconda-ks.cfg Size: 1404 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 35268260 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2022-06-27 15:01:00.000000000 +0800 Modify: 2022-06-27 15:01:00.000000000 +0800 Change: 2021-06-27 17:23:24.010018406 +0800 Birth: -
修改後對比安全
原值 | 修改後 |
---|---|
Access: 2021-06-27 17:22:00.000000000 +0800 | Access: 2022-06-27 15:01:00.000000000 +0800 |
Modify: 2021-06-27 17:22:00.000000000 +0800 | Modify: 2022-06-27 15:01:00.000000000 +0800 |
建立目錄bash
嵌套關係目錄建立 mkdir -p(遞歸方式建立)markdown
實驗1:遞歸建立目錄編輯器
[root@mingmingxingforcomputer ~]# mkdir a [root@mingmingxingforcomputer ~]# ls a Desktop Downloads Music Public Videos anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates [root@mingmingxingforcomputer ~]# rm -rf a [root@mingmingxingforcomputer ~]# mkdir a/b/c mkdir: cannot create directory ‘a/b/c’: No such file or directory [root@mingmingxingforcomputer ~]# mkdir -p a/b/c [root@mingmingxingforcomputer ~]# cd a/b/c [root@mingmingxingforcomputer c]# pwd /root/a/b/c
若是不加參數-p遞歸建立目錄,會報錯ide
[root@mingmingxingforcomputer ~]# mkdir a/b/c mkdir: cannot create directory ‘a/b/c’: No such file or directory
實驗2:先建立一個名爲a的目錄,在當前目錄下執行mkdir a/b/c -p命令,該方法可行學習
[root@mingmingxingforcomputer ~]# mkdir a [root@mingmingxingforcomputer ~]# mkdir a/b/c -p [root@mingmingxingforcomputer ~]# cd a/b/c [root@mingmingxingforcomputer c]# pwd /root/a/b/c
顯示目錄中的文件信息 code
LS命令相關參數 | 含義 |
---|---|
-a | 所有文件 |
-l | 查看文件的屬性、大小等詳細信息 |
-d | 目錄權限 |
-Z | 安全上下文 |
實驗:查看文件詳細信息,列表方式顯示
[root@mingmingxingforcomputer ~]# ls -al | tail -n 3 drwxr-xr-x. 2 root root 6 Jan 4 03:40 Videos -rw-------. 1 root root 8715 Jun 27 14:20 .viminfo -rw-------. 1 root root 69 Jun 27 17:14 .Xauthority
複製文件或目錄
cp [參數] 源文件名稱 目標文件名稱
參數 | 做用 |
---|---|
-p | 保留原始文件的屬性 |
-d | 若對象爲「連接文件」,則保留該「連接文件」的屬性 |
-r | 遞歸持續複製(用於目錄) |
-i | 若目標文件存在則詢問是否覆蓋 |
-a | 至關於-pdr(p、d、r爲上述參數) |
實驗:將a.txt複製給b.txt
[root@mingmingxingforcomputer ~]# echo "hello world!" > a.txt [root@mingmingxingforcomputer ~]# cat a.txt hello world! [root@mingmingxingforcomputer ~]# cp -a b.txt a.txt cp: cannot stat 'b.txt': No such file or directory [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg b.txt Documents initial-setup-ks.cfg Pictures Templates a.txt Desktop Downloads Music Public Videos [root@mingmingxingforcomputer ~]# cat b.txt hello world!
注意:先寫源文件,再寫目標文件
[root@mingmingxingforcomputer ~]# cp -a b.txt a.txt cp: cannot stat 'b.txt': No such file or directory
剪切,重命名文件
cp [參數] 源文件名稱 目標文件名稱
實驗:重命名、移動
一、將a.txt文件更名成b.txt
[root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads Music Public Videos a.txt Documents initial-setup-ks.cfg Pictures Templates [root@mingmingxingforcomputer ~]# mv a.txt b.txt [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads Music Public Videos b.txt Documents initial-setup-ks.cfg Pictures Templates
二、將b.txt文件移到到home目錄下
[root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads Music Public Videos b.txt Documents initial-setup-ks.cfg Pictures Templates [root@mingmingxingforcomputer ~]# mkdir NICE [root@mingmingxingforcomputer ~]# mv b.txt NICE/b.txt [root@mingmingxingforcomputer ~]# cd NICE [root@mingmingxingforcomputer NICE]# ls b.txt [root@mingmingxingforcomputer NICE]# cd .. [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg NICE Public Videos Desktop Downloads Music Pictures Templates
刪除文件或目錄
rm [參數] 文件名稱
參數 | 做用 |
---|---|
-f | 強制執行 |
-i | 刪除前詢問 |
-r | 刪除目錄 |
-v | 顯示過程 |
工做中千萬不要使用rm -rf /*命令!!!
實驗:刪除文件、目錄
一、刪除b.txt文件
[root@mingmingxingforcomputer NICE]# ls b.txt [root@mingmingxingforcomputer NICE]# rm -f b.txt
二、刪除目錄NICE
[root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg NICE Public Videos Desktop Downloads Music Pictures Templates [root@mingmingxingforcomputer ~]# rm -rf NICE/ [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Documents Downloads initial-setup-ks.cfg Music Pictures Public Templates Videos
複製文件中一部份內容
實驗::分區表備份命令:dd if=/dev/sda of=backup bs=512 count=1
[root@mingmingxingforcomputer ~]# dd if=/dev/sda of=backup bs=512 count=1 1+0 records in 1+0 records out 512 bytes copied, 0.000116656 s, 4.4 MB/s
文件中出現backup備份文件
[root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads Music Public Videos backup Documents initial-setup-ks.cfg Pictures Templates 判別文件類型
查看文件類型
實驗:查看文件類型
[root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads Music Public Videos backup Documents initial-setup-ks.cfg Pictures Templates [root@mingmingxingforcomputer ~]# file backup backup: DOS/MBR boot sector [root@mingmingxingforcomputer ~]# file anaconda-ks.cfg anaconda-ks.cfg: ASCII text
壓縮、解壓縮文件
經常使用壓縮方式:
壓縮:tar czvf/cjvf 壓縮包名 文件名
解壓縮:tar xzvf 壓縮包名
參數 | 做用 |
---|---|
-c | 建立壓縮文件 |
-x | 解開壓縮文件 |
-t | 查看壓縮包內有哪些文件 |
-z | 用Gzip壓縮或解壓 |
-j | 用bzip2壓縮或解壓 |
-v | 顯示壓縮或解壓的過程 |
-f | 目標文件名 |
-p | 保留原始的權限與屬性 |
-P | 使用絕對路徑來壓縮 |
-C | 指定解壓到的目錄 |
實驗:壓縮hello.txt文件
一、將hello.txt壓縮成hello.gz
二、刪除源文件hello.txt
三、將hello.gz解壓縮成hello.txt
[root@mingmingxingforcomputer ~]# echo "nice!" > hello.txt [root@mingmingxingforcomputer ~]# cat hello.txt nice! [root@mingmingxingforcomputer ~]# tar czvf hello.gz hello.txt hello.txt [root@mingmingxingforcomputer ~]# rm -rf hello.txt [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads initial-setup-ks.cfg Pictures Templates backup Documents hello.gz Music Public Videos [root@mingmingxingforcomputer ~]# tar xzvf hello.gz hello.txt [root@mingmingxingforcomputer ~]# ls anaconda-ks.cfg Desktop Downloads hello.txt Music Public Videos backup Documents hello.gz initial-setup-ks.cfg Pictures Templates
輸出重定向
命令 > 文件 | 將標準輸出重定向到一個文件中(清空原有文件的數據) |
---|---|
命令 2> 文件 | 將錯誤輸出重定向到一個文件中(清空原有文件的數據) |
命令 >> 文件 | 將標準輸出重定向到一個文件中(追加到原有內容的後面) |
命令 2>> 文件 | 將錯誤輸出重定向到一個文件中(追加到原有內容的後面) |
命令 >> 文件 2>&1 或 命令 &>> 文件 | 將標準輸出與錯誤輸出共同寫入到文件中(追加到原有內容的後面) |
實驗1:屏幕上的文字傳輸到文本中
[root@mingmingxingforcomputer ~]# echo "nice" > a.txt [root@mingmingxingforcomputer ~]# cat a.txt nice
實驗2:追加寫入一段文字進入文本
[root@mingmingxingforcomputer ~]# echo "MMX 2021" >> a.txt [root@mingmingxingforcomputer ~]# cat a.txt nice MMX 2021
實驗3:錯誤信息寫入文本
實驗中:發現錯誤信息直接輸入會報錯,須要在重定向符前面加上「2」
[root@mingmingxingforcomputer ~]# find /a -name good find: ‘/a’: No such file or directory [root@mingmingxingforcomputer ~]# find /a -name good > a.txt find: ‘/a’: No such file or directory [root@mingmingxingforcomputer ~]# find /a -name good 2> a.txt [root@mingmingxingforcomputer ~]# cat a.txt find: ‘/a’: No such file or directory
實驗4:所有追加,不管是否報錯
實驗中,發現>>追加劇定向遇到錯誤信息會報錯,須要在前面加上「&」
[root@mingmingxingforcomputer ~]# ls -l lx ls: cannot access 'lx': No such file or directory [root@mingmingxingforcomputer ~]# ls -l lx >> a.txt ls: cannot access 'lx': No such file or directory [root@mingmingxingforcomputer ~]# ls -l lx &>> a.txt [root@mingmingxingforcomputer ~]# cat a.txt ls: cannot access 'lx': No such file or directory
輸入重定向:把文件導入到命令中,而輸出重定向則是指把本來要輸出到屏幕的數據信息寫入到指定文件中
符號 | 做用 |
---|---|
命令 < 文件 | 將文件做爲命令的標準輸入 |
命令 << 分界符 | 從標準輸入中讀入,直到碰見分界符才中止 |
命令 < 文件1 > 文件2 | 將文件1做爲命令的標準輸入並將標準輸出到文件2 |
實驗:統計行數
[root@mingmingxingforcomputer ~]# wc -l anaconda-ks.cfg 45 anaconda-ks.cfg [root@mingmingxingforcomputer ~]# wc -l < anaconda-ks.cfg 45
簡而言之:
輸出重定向:命令 → 文件(用的多)
輸入重定向:文件 → 命令(用得少)
把前一個命令本來要輸出到屏幕的信息看成是後一個命令的標準輸入
實驗1:統計文本行數
[root@mingmingxingforcomputer ~]# cat anaconda-ks.cfg | wc -l 45
實驗2:查看內存使用狀況
[root@mingmingxingforcomputer ~]# free -h | grep Mem: | awk '{print $4}' 6.4Gi
實驗3:修改用戶密碼
[root@mingmingxingforcomputer ~]# echo "123456" | passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully.
實驗4:多命令結合使用
[root@mingmingxingforcomputer ~]# ps aux | grep root | tail -n 3 > a.txt [root@mingmingxingforcomputer ~]# cat a.txt root 4641 0.0 0.0 57172 3900 pts/0 R+ 20:35 0:00 ps aux root 4642 0.0 0.0 12112 964 pts/0 S+ 20:35 0:00 grep --color=auto root root 4643 0.0 0.0 7320 832 pts/0 S+ 20:35 0:00 tail -n 3
通配符 | 含義 |
---|---|
* | 任意字符 |
? | 單個任意字符 |
[a-z] | 單個小寫字母 |
[A-Z] | 單個大寫字母 |
[a-Z] | 單個字母 |
[0-9] | 單個數字 |
[:alpha:] | 任意字母 |
[:upper:] | 任意大寫字母 |
[:lower:] | 任意小寫字母 |
[:digit:] | 全部數字 |
[:alnum:] | 任意字母加數字 |
[:punct:] | 標點符號 |
*實驗1:通配符 「」 查看相關文件
[root@mingmingxingforcomputer ~]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2
實驗2:通配符 「?」查看相關文件
[root@mingmingxingforcomputer ~]# ls /dev/sd? /dev/sda
實驗3:通配符特殊玩法
[root@mingmingxingforcomputer ~]# echo file{1,2,3,4,5} >> a.txt [root@mingmingxingforcomputer ~]# cat a.txt file1 file2 file3 file4 file5
反斜槓(\):使反斜槓後面的一個變量變爲單純的字符。
單引號(''):轉義其中全部的變量爲單純的字符串。
雙引號(""):保留其中的變量屬性,不進行轉義處理。
反引號(``):把其中的命令執行後返回結果。
定義一個變量
[root@mingmingxingforcomputer ~]# PRICE=5
實驗1:定義變量
[root@mingmingxingforcomputer ~]# echo $PRICE 5
實驗2:打印"PRICE=$5"
[root@mingmingxingforcomputer ~]# echo PRICE=\$$PRICE PRICE=$5
實驗3:使用反引號賦值(查看當前使用內存)
[root@mingmingxingforcomputer ~]# echo `free -h | grep Mem:|awk '{print $3}'` 763Mi
別名定義:alias 別名=命令
實驗1:查看別名
[root@mingmingxingforcomputer ~]# which ls alias ls='ls --color=auto' /usr/bin/ls
實驗2:定義一個別名
[root@mingmingxingforcomputer ~]# alias mmx='ll -al|tail -n 5' [root@mingmingxingforcomputer ~]# mmx -rw-r--r--. 1 root root 129 Aug 13 2018 .tcshrc drwxr-xr-x. 2 root root 6 Jan 4 03:40 Templates drwxr-xr-x. 2 root root 6 Jan 4 03:40 Videos -rw-------. 1 root root 8387 Jun 27 18:42 .viminfo -rw-------. 1 root root 69 Jun 27 17:14 .Xauthority
實驗3:刪除自定義別名
[root@mingmingxingforcomputer ~]# unalias mmx [root@mingmingxingforcomputer ~]# mmx bash: mmx: command not found...
實驗4:查找命令文件
[root@mingmingxingforcomputer ~]# echo $BASH /bin/bash [root@mingmingxingforcomputer ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
10個重要的環境變量
變量名稱 | 做用 |
---|---|
HOME | 用戶的主目錄(即家目錄) |
SHELL | 用戶在使用的Shell解釋器名稱 |
HISTSIZE | 輸出的歷史命令記錄條數 |
HISTFILESIZE | 保存的歷史命令記錄條數 |
郵件保存路徑 | |
LANG | 系統語言、語系名稱 |
RANDOM | 生成一個隨機數字 |
PS1 | Bash解釋器的提示符 |
PATH | 定義解釋器搜索用戶執行命令的路徑 |
EDITOR | 用戶默認的文本編輯器 |
實驗5:全局變量
[root@mingmingxingforcomputer ~]# WORKDIR=/home/workdir/ [root@mingmingxingforcomputer ~]# echo $WORKDIR /home/workdir/ [root@mingmingxingforcomputer ~]# cd $WORKDIR [root@mingmingxingforcomputer workdir]# pwd /home/workdir
[root@mingmingxingforcomputer workdir]# unset WORKDIR [root@mingmingxingforcomputer workdir]# echo $WORKDIR [root@mingmingxingforcomputer /]# cd $WORKDIR
其實把學習筆記放在這裏面也不錯!