Linux筆記04(常見文件命令+重定向符)

發現學習難度逐漸提高,真的要多練啊!node

一、文件目錄管理命令

touch命令

用於建立空白文件或設置文件的時間 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

mkdir命令

建立目錄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

ls命令

顯示目錄中的文件信息 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命令

複製文件或目錄

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

mv命令

剪切,重命名文件

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命令

刪除文件或目錄

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命令

複製文件中一部份內容

實驗::分區表備份命令: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

判別文件類型

file命令

查看文件類型

實驗:查看文件類型

[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命令

壓縮、解壓縮文件

經常使用壓縮方式:

壓縮: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 保存的歷史命令記錄條數
MAIL 郵件保存路徑
LANG 系統語言、語系名稱
RANDOM 生成一個隨機數字
PS1 Bash解釋器的提示符
PATH 定義解釋器搜索用戶執行命令的路徑
EDITOR 用戶默認的文本編輯器

實驗5:全局變量

  1. 全局變量聲明
[root@mingmingxingforcomputer ~]# WORKDIR=/home/workdir/
[root@mingmingxingforcomputer ~]# echo $WORKDIR 
/home/workdir/
[root@mingmingxingforcomputer ~]# cd $WORKDIR
[root@mingmingxingforcomputer workdir]# pwd
/home/workdir
  1. 全局變量取消(取消後發現調用$WORKDIR無效)
[root@mingmingxingforcomputer workdir]# unset WORKDIR 
[root@mingmingxingforcomputer workdir]# echo $WORKDIR
[root@mingmingxingforcomputer /]# cd $WORKDIR

其實把學習筆記放在這裏面也不錯!

相關文章
相關標籤/搜索