1.文件操作指令
1.1 ls
ls指令用于查看指定層級文件夾下的文件或文件夾
基本格式:ls (選項) (查看層級)
其中選項處不寫就默認是顯示文件名,查看層級默認是當前層級
選項1: -l
作用:將查找文件的詳細信息顯示出來
我們看到這里有些是以d開頭的,有些是-開頭的。
用d帶頭的是目錄(文件夾), - 開頭的是普通文件
選項2: -a
作用:將隱藏的文件顯示出來(隱藏文件前面有一個' . ')
選項3:-d
作用:將目錄名字顯示出來,而不顯示其下面的文件
這里我們的t1文件夾(目錄)有一個test.c文件,正常來說我們會將t1中的文件test.c顯示出來,使用-d選項后,我們就只顯示目錄本身
1.2pwd
?作用:顯示用戶當前所在的目錄層級
格式:pwd
這表示我們現在在一個普通用戶的根目錄下
1.3cd 與whoami
作用:用于進入不同的目錄中
格式: cd (目錄名)
目錄名可以用絕對路徑,也可以用相對路徑
其中絕對路徑是從/根目錄開始定位的,相對路徑是從當前目錄開始定位的
絕對路徑:
這里我們cd后面跟的就是絕對路徑,是從根目錄開始定位的
相對路徑:
這里我們進入的就是當前目錄的上一級目錄,..表示上一級,.表示當前級,/后面接文件表示進入該文件
特殊目錄名:~
我們用cd ~可以快速進入到家目錄,而家目錄就是用whoami指令查找到的目錄層級位置
我們用whoami指令查找到家目錄是Ubuntu,然后cd ~就跳轉到了Ubuntu為止
特殊用法: -
可以進入上一次訪問的路徑
![]()
補充:對于linux與Windows系統的目錄結構的理解(系統皆文件)
兩個系統的結構都是樹狀結構,也就是多叉樹結構。
對于葉子結點:一定是空目錄或文件
對于非葉子節點:一定是目錄
linux:
絕對路徑具有唯一性:因為每個文件只有一個直接上級目錄,這種定位準確且直觀,但是如果我們的樹狀結構層級很深,那么絕對路徑就會顯得很麻煩,此時我們就應該使用相對路徑
接下來我們使用相對路徑從t1位置跳轉到test位置
原本我們在t1目錄中,然后我們..進入上一級目錄ubuntu,再/test進入test中
需要注意的是,從當前目錄到某個文件的相對路徑也是唯一的
Windows:
我們可以把此電腦當成一個根目錄文件夾,而本地磁盤c,d,e可以當成是文件夾
我們都知道,在進入系統桌面時我們需要登錄賬號,而這個登錄其實就是進入用戶文件夾,而admin就是Windows系統中的一個管理員用戶的賬號,還可以創建其他的普通用戶。
而桌面其實也是一個user中的文件夾,只是用圖形化界面顯示而已
1.4touch與stat
?我們知道文件是由文件屬性和文件內容構成的,對文件的操作分為內容操作和屬性操作
stat指令
可以查看文件的更多屬性
這里我們先看其中三個屬性
1.Access 最新訪問時間 2.Modify 內容修改時間 3.Change 最新變動時間
我們可以用不同的選項更改這三個時間
用touch再操作一次已有文件:三個時間都更新為這次操作的時間
用touch -a :修改access和change
用touch -m: 修改modify和change
用touch -c:修改三個時間
touch指令
作用1:更改文件的存取或更改時間,這是對文件的屬性的操作
作用2:創建;一個新文件
我們可以看到這里新建了一個newtext文件
1.5mkdir與tree
(1)mkdir
作用:創建新的目錄
格式:mkdir (選項)新目錄名
這里我們用mkdir在ubuntu目錄下創建一個新目錄newdir,然后進入到該新目錄中
選項1:-p
作用:創建一連串的目錄
這里我們原本是沒有目錄存在的,后面利用-p選項實現了一次創建多個連續目錄
(2)tree
作用:利用樹狀圖的形式將我們當前目錄下的子文件和子目錄顯示出來
格式:tree 目錄名(默認當前目錄)
不過tree不是默認安裝的指令,如果要使用還需要聯網用指令安裝,具體的指令可以用大模型搜索問一下
1.6rmdir,rm,alias
?(1)rmdir
作用:刪除目錄
格式:rmdir 目錄名
原本當前目錄中有一個t3目錄,我們利用rmdir刪除t3目錄
(2)rm
作用:刪除目錄或文件
格式:rm (選項)目錄/文件名
刪除文件:
刪除文件的時候可以隨意刪除,但是默認情況下(沒給特定選項),它無法刪除目錄
默認情況無法刪除目錄:
選項1:-r
作用:遞歸的刪除該目錄及該目錄的所有子目錄與子文件
格式:rm -r 目錄名
加了-r之后我們就可以實現對目錄以及目錄的子目錄、文件的刪除
選項2:-i
作用:讓系統每次執行訪問或刪除操作前對我們進行指令確認
格式: rm -i 目錄名
這里我們加了-i之后,系統提示我們是否需要刪除t3.txt,我們輸入y表示yes,輸入n表示no。
作為普通用戶,我們的刪除一般是不會彈出確認提示的
不過如果我們是root賬號登錄,任何刪除指令都會問我們進行確認
此時如果我們確認需要刪除,但是刪除的層級又太深,就需要輸入很多次y,很繁瑣,所以我們還有一個選項可以去除指令確認步驟,直接刪除
選項3:-f
作用:免除指令確認步驟,直接執行對應指令
格式:rm -f 目錄名
由于ubuntu系統不建議使用root賬號,所以這里我們其實是使用普通賬號進行操作,僅供參考代碼。
思考:我們使用-r可以刪除一連串的目錄或文件,那么我們可不可以將-r和-i選項結合使用,實現刪除鏈路上的指定文件呢?
這里我們前兩行指令確認是訪問指令,我們同意進入t1/t2,第三行指令詢問我們是否刪除delete.txt,我們選擇y,然后后面的t2和t1刪除指令我們選擇n。這樣子我們就實現了只刪除delete.txt的操作了。
補充:alias
作用:給某個指令取別名
格式:alias 別名=‘原名’
其實涉及指令結合的時候我們可以不用-r -i這樣分開來書寫,而是直接-ri
目的:當出現選項和文件名繁多的時候簡化指令書寫,提高可讀性
實現原理:利用了alias指令對原本復雜的名字取別名
注意:別名,=,原名之間不能加空格
![]()
思考:我們是否可以一次性建立多個文件,然后又一次性刪除多個文件呢?
創建多個文件的格式:touch 文件名{編號1..編號n}.文件屬性(.c/.txt)
刪除的格式:rm 文件名{編號1..編號n}.文件屬性(.c/.txt)
1.7指令手冊man
?作用:查找對應指令的作用
格式:man (選項:手冊編號)指令名
輸入完指令后按回車鍵進入手冊
退出手冊按q字母鍵
手冊編號:在選項位置輸入不同的數字就會查找對應指令在該編號手冊的信息
手冊編號有多個,其中
1:普通指令
2:系統調用
3:庫函數
4:。。。。
一個指令可能會在多個手冊中同時存在,并記載著他的不同作用
1.8which
?作用:查找指令所處的目錄
格式:which 指令名eg:查找ls的目錄
這里我們看到ls所處的目錄是user路徑下的bin文件夾中,在該文件夾中的可執行程序其實就是指令,我們自己也可以寫一個程序放進bin文件夾中,放進去后我們的程序編譯后的名字就是一個我們自己實現指令了,可以在linux中當成指令使用,不過平時不要圖方便亂加指令進去污染指令庫
對指令格式的理解:我們平時如果要執行一個程序,第一步就是找到這個程序的位置,然后才能執行命令,但是為什么指令可以直接輸入指令名,而不需要查找指令程序的位置?
這是因為我們有一個默認的指令位置:user/bin,所有指令都存在這個默認目錄下,所以我們可以直接使用指令
而安裝軟件其實也就是從網絡上下載到bin目錄下
1.9cp
作用:將對應文件或目錄復制到目標目錄或文件中
格式:cp (選項)文件、目錄? ? 目標文件、目錄
這里我們原本test.txt是和test目錄同級的,然后我們用cp指令把test.txt復制到了test文件夾中,從而test目錄中也有了test.txt
我們這里同樣也可以用相對路徑實現,如果我們還需要更改名字,我們可以在后面加個/然后寫個新文件名
2.linux中一切皆文件
?我們在linux的顯示器上輸出數據相當于是將數據輸入到顯示器文件中,而從鍵盤中讀取數據相當于從鍵盤文件中獲取數據。
我們用echo命令來加深這個理解
echo的作用:將指定信息寫入顯示器文件中
格式: echo 文件/目錄、字符串等信息?
1.輸出重定向:>
作用:將原本應該寫在顯示器文件中的數據寫在另一個文件或目錄中(先清空再寫入)
格式:echo(也可以是任意寫入信息到顯示器的指令,比如ls) 信息>目錄/文件
這里我們就把原本應該寫在顯示器上的信息重定向給了log.txt
2.追加重定向:>>
作用:將原本應該寫在顯示器文件中的數據追加到另一個文件或目錄中(不用先清空)
格式:寫入內容在顯示器的指令 >>指定文件
3.清空指定文件/新建文件
格式:>文件名
若對應文件不存在,他還可以新建一個這個文件