内容简介:要在 Linux 的目錄中移動,必須瞭解使用絕對路徑的表示法不用去理會目前所在的目錄,不管你目前在哪個目錄,只要使用絕對路徑表示法都能正確地切換;有時候我們會省略最後面的斜線不輸入。相對路徑意思是,要前往的目錄相對於目前所在目錄的路徑,例如目前在
LNMP
2.3.1 切換目錄
cd (change directory) 指令
要在 Linux 的目錄中移動,必須瞭解 絕對路徑 及 相對路徑 。以根目錄 /
啟始來指定的完整目錄路徑稱為絕對路徑,例如 /var/log/nginx/
的表示方式就稱為絕對路徑,它表示的是 /
根目錄下的 var/
目錄下的 log/
目錄下的 nginx/
目錄,在任何目錄中要切換到這個路徑,可以在終端機中輸入如下指令:
cd /var/log/nginx/
使用絕對路徑的表示法不用去理會目前所在的目錄,不管你目前在哪個目錄,只要使用絕對路徑表示法都能正確地切換;有時候我們會省略最後面的斜線不輸入。
相對路徑意思是,要前往的目錄相對於目前所在目錄的路徑,例如目前在 /var/log/nginx
要切換到其他目錄時使用相對路徑的使用法:
# 切換到子目錄 /var/log/nginx/temp/ # temp 目錄是我假設的,實際上並沒有這個目錄 cd temp/ # 切換到上層目錄 /var/log/ cd .. # 切換到 /var/log/php-fpm/ cd ../php-fpm/ # 切換到 /usr/share/nginx/ cd ../../../usr/share/nginx/
你會發現相對路徑表示法,比較適合切換到目前所在目錄的上、下層即父、子目錄,如果切換的目錄太遠,使用絕對路徑才是比較有效率的方式。
每個目錄都會有兩個預設的目錄, .
及 ..
,單點表示目錄本身,雙點則表示父目錄。有時候要明確指定執行目前目錄中的檔案時會這樣表示
./run.sh
2.3.2 檔案及目錄的瀏覽、建立、移動、複製、更名及刪除
ls 指令
查看目錄中的檔案及子目錄清單。相關選項如下:
# 列出目前目錄中的檔案及子目錄 ls # 同時顯示隱藏檔 ls -a # 以長清單格式表示,資訊較多 ls -l # 依修改時間排序,新的在前面 ls -t # 選項可以搭配使用 ls -alt # 使用絕對路徑查看 ls /var/log/nginx/ # 查看 ls 說明文件 ls --help
在 Linux 中,檔案或目錄名稱以 .
開始就會成為隱藏檔,在非 -a
選項下不會顯示。
touch 指令
建立一個空白檔案。對已存在的檔案 touch
一下,會改變它的 修改時間 的記錄。
touch a.txt
mv 指令
移動檔案或目錄;第一個參數是準備移動的檔案或目錄,第二個參數是目的地目錄。
# 移動檔案到目錄 mv a.txt abc/ # 移動目錄到目錄 mv abc/ def/
cp 指令
複製檔案;第一個參數是準備複製的檔案,第二個參數是新檔案的名稱;若要複製目錄,需加上 -r
(recursively, 遞迴) 選項。
# 複製檔案 cp a.txt b.txt # 複製目錄 cp -r abc/ def/
更名指令
透過移動指令來做到;第一個參數是原本名稱,第二個參數是新名稱。
# 檔案更名 mv a.txt c.txt # 目錄更名 mv abc/ xyz/ # 如果已經有 xyz 目錄,則 abc 目錄會被移動到 xyz 目錄之下,而不是更名
rm 指令
刪除檔案;如果要刪除目錄,需加上 -r
(recursively, 遞迴) 選項。這個指令會請求確認,請輸入 y
表示確定刪除,或 n
表示不要刪除。
# 刪除檔案 rm a.txt # 刪除目錄 rm -r abc/
mkdir 指令
建立目錄;如果要同時建立多層子目錄,請使用 -p
選項;要同時設定權限請使用 -m
選項。
# 建立目錄 mkdir abc # 建立多層目錄 mkdir -p aaa/bbb/ccc/ddd # 同時設定權限 mkdir -m 711 eee
rmdir 指令
刪除 空的 目錄,注意!只有該目錄是空的情況下才能使用此指令,否則請用 rm -r
指令;同時刪除多層空目錄,請使用 -p
選項。
# 刪除目錄 rmdir eee # 刪除多層空目錄 rmdir -p aaa/bbb/ccc/ddd/ # 如果沒有使用 -p ,只會刪除 ddd/ 目錄
pwd (Print Working Directory) 指令
顯示目前所在的目錄的絕對路徑。如果是連結檔,可以使用 -P
來顯示原始的完整路徑。
# 假設目前在 /var/log/nginx/ pwd # 會顯示 /var/log/nginx # 假設在 /var/mail/ ,它連結到 /var/spool/mail pwd # 顯示 /var/mail pwd -P # 顯示 /var/spool/mail
2.3.3 查看檔案內容
cat 指令
顯示檔案內容。由於會一次印出檔案的全部內容,所以適合內容較少的檔案。 -b
選項可以顯示行號,但跳過空白行; -n
選項會顯示包含空白行的行號。
cat abc.txt cat -n abc.txt
tac 指令
和 cat 一樣,但是反過來從最後一行倒著印出全部內容。
tac abc.txt
more 指令
可以翻頁、一次顯示一個螢幕的內容,適合內容較多的檔案。
more abc.txt # Enter: 下一行 # 空白鍵: 下一頁 # b: 上一頁 # q: 離開 # / 接要搜尋的文字: 從目前所在行往下搜尋
less 指令
比 more
指令更多功能的操作,例如 more
不能用上下鍵來移動, less
就可以。
less abc.txt # 上、下鍵: 上一行、下一行 # 空白鍵: 下一頁 # 可使用鍵盤的 PageDown, PageUp 翻頁 # g: 到第一行 # G: 到最後一行 # q: 離開 # / 接要搜尋的文字: 從目前所在行往下搜尋 # ? 接要搜尋的文字: 從目前所在行往上搜尋 # n: 重複前一個搜尋,往下 # N: 重複前一個搜尋,往上
註:這兩個指令很搞笑,more 的功能比較少,less 的功能反而比較多。
head 指令
部分顯示,只顯示前幾行。預設為 10 行,可以使用 -n
選項指定行數。
head abc.txt # 預設前 10 行 head -n 20 abc.txt # 指定顯示前 20 行
tail 指令
部分顯示,只顯示最後幾行。預設為 10 行,可以使用 -n
選項指定行數。有時候在觀察 log 檔時,需要不斷的查看最後面的 log 內容,這時候可以使用 -f
選項來持續偵測內容,使用 ctrl + c
可以離開。
tail abc.txt # 預設最後 10 行 tail -n 20 abc.txt # 指定最後 20 行 tail -f /var/log/nginx/error.log # 持續顯示,當 log 檔更新時會同步更新內容 # 必須使用 ctrl + c 才能離開
2.3.4 編輯檔案內容
Linux 內建的文字編輯器是 1976 年就發佈的 vi,然後在 1991 年出現了一個 vi 改良版的 vim,在簡單操作的情況下兩者沒什麼差別。有些 Linux 發行版會內建 vim,有些則無,安裝方式如下:
yum -y update sudo yum -y install epel-release sudo yum -y install vim
要用好 vi 必須記住一大堆的指令,這裡只打算告訴你如何用最簡單的方法編輯文件,因為之後修改配置檔時需要用到,無論如何都必須瞭解最基本的操作才行。以下內容將使用 vim 來操作。
當你使用 vim 來開啟檔案時,如果該檔案已存在,就會直接打開,如果不存在,則會自動以新檔案開啟:
vim abc.txt # 如果有則開啟,沒有則當成新檔
Vim 的編輯畫面會佔用整個終端機的畫面,最下方會有一行狀態列,可以用來輸入指令及辨別目前所操作的模式。Vim 分為 4 種操作模式:
- 一般模式
- 插入模式
- 指令模式
- 視覺模式
一般模式
當你開啟一個檔案時的第一個模式,要切換成其他模式時,必須先回到一般模式,然後再切換過去;一般模式可以做任何能夠移動游標來做的事,例如移動游標、刪除行、複製行、貼上行及切換頁面等等。
- Vim 使用
h
(左) 、j
(下) 、k
(上) 、l
(右) 鍵來移動游標,如果不習慣,使用鍵盤的方向鍵還是可以移動游標的。你可以使用數字 + 方向鍵
的方式快速移動游標 幾行或幾個字元 ,例如在鍵盤上按下5j
游標就會向下移動 5 行、8l
向右 8 個字元、3k
向上 3 行。數字 + Enter
游標往下移動幾行,例如5 Enter
效果等同5j
。 - 按下
0
(數字 0) 鍵,游標會移到該行的第一個字元;$
(shift + 4) 鍵移到該行最後一個字元。 -
ctrl + f
下一頁;ctrl + b
上一頁。 -
G
(大寫 G) 游標移到文件的最後一行;gg
(兩個小寫 g) 游標移到文件的第一行。 -
yy
(兩個小寫 y) 複製游標所在行 -
dd
(兩個小寫 d) 剪下游標所在行,可視同刪除行 -
p
(小寫 p) 貼到游標的下一行;P
(大寫 P) 貼到游標所在行,原行往下移動。 - 複製及剪下/刪除可以搭配數字來做到更有效率的操作,例如:
5yy
表示複製游標及其下共 5 行的內容、3dd
表示剪下/刪除游標及其下 3 行的內容。 -
.
(小數點) 重複上次的操作,例如3dd
之後可以使用.
來重做一次3dd
。 -
u
(小寫 u) 復原上次的動作,即 undo;ctrl + r
重做上個被復原的動作,即 redo。
插入模式
請看下方的狀態列,當出現 -- INSERT -- 提示文字時表示你正處於 插入模式 ,這時候就可修改文件內容。
按下以下任一鍵即可切換成插入模式:
-
i
(小寫 i) :插入文字;游標停在原處不動,當你輸入文字時,游標處的字元會被往後移動。 -
I
(大寫 I) :和小寫 i 一樣是插入文字,但游標會移到第一個字元。 -
a
(小寫 a) : 附加文字;游標會往後移動一個字元,新的內容會附加在原游標處字元的後面。 -
A
(大寫 A):同小寫 a,但游標會移到該行最後一個字元之後。 -
o
(小寫 o) : 新行;游標所在行之下會新增一行,然後游標會跳到這一行。 -
O
(大寫 O) : 同小寫 o,但是游標所在行的內容會往下移動,游標所在行成為新的一行。 -
r
(小寫 r) :置換游標處的一個字元,該字元一被置換後就自動返回一般模式。 -
R
(大寫 R) : 置換模式,狀態列會顯示 -- REPLACE — ,此時會無視目前的內容,輸入的任何文字都會覆蓋原有的文字。 -
esc
鍵:任何時候按下此鍵即可離開插入模式或置換模式,並回到一般模式。
指令模式
必須先回到一般模式下,然後輸入以下命令,命令會顯示在狀態列中:
-
:w
存檔。 -
:q
離開。如果未做任何修改,或已經存檔就可以正常離開。假如已經有修改內容,但是不想儲存而要直接離開,可以加上驚嘆號:q!
不存檔強制離開。 -
:wq
存檔同時離開。即使檔案 未修改 ,也會強制儲存並更新 修改時間 。 -
:x
存檔同時離開。只在檔案 有修改 的情況下才會儲存並更新 修改時間 ,否則就只會離開而不更新 修改時間 。建議使用:x
取代:wq
。 -
:e!
放棄目前修改的內容並回復到上次存檔時的內容。 -
:set nu
顯示行號。 -
:set nonu
取消顯示行號。 -
/
搜尋文字,按下斜線後接著輸入要尋找的文字;按下n
會跳到下一個找到的文字,按下N
則跳往上一個找到的文字。找到的文字會反白,如果要取消可以輸入:noh
即可關閉反白直到下次的搜尋。
視覺模式
在一般模式按下:
-
v
(小寫 v):狀態列顯示 -- VISUAL -- 表示進入視覺編輯模式,在此模式下移動游標會將字元反白 (高亮),然後可以按下d
刪除 (剪下) 反白內容、y
複製反白內容,再按一次v
即可結束視覺模式並反回一般模式。 -
V
(大寫 V):狀態列顯示 -- VISUAL LINE -- ,移動游標可以反白一行,一樣可以使用d
刪除 (剪下)、y
複製V
結束。 -
ctrl + v
:狀態列顯示 -- VISUAL BLOCK -- 模式,移動游標可以反白一個區塊,其他操作方式一樣,在按一次ctrl + v
結束。
這 3 個模式可以互相切換,例如按 v
進入字元反白模式,然後按 V
切換成行反白模式。
有時候你需要垂直操作,例如將好幾行的內容前方加上註解,可以使用區塊反白模式來做到,操作順序是先將游標移到要反白的第一行開頭 ➔ 按 ctrl + v
➔ j
(游標往下選取) ➔ I
(大寫 I,此時游標會跳到第一行第一個字元等待輸入) ➔ 輸入註解 #
然後按 esc
鍵。
如果要刪除數行的註解:游標移到第一行開頭 ➔ ctrl + v
➔ j
(游標往下選取) ➔ d
刪除。
2.3.5 檔案及目錄的權限及擁有者
Linux 將使用者分成 3 種角色,檔案擁有者 (User)、群組 (Group) 及其他人 (Others)。一個檔案會有一個 擁有者 ,只有該擁有者有能力對該檔案做任何事;但是我可以建立一個 群組 ,讓某些人加入,這些屬於同一個群組的人可以對該檔案做我允許他們做的事;其他沒有被分類的人就是 其他人 ,我也可以允許他們能做或不能做什麼事。一位使用者可以同時加入多個群組而擁有該群組的權限。
瞭解這 3 種角色後就能正確使用權限。
權限也分為 3 㮔,讀 ( r ead) 、寫 ( w rite) 及執行 ( e xecute)。每個角色可以分配 3 種權限,加上用來標示為目錄 (d) 或連結檔 (l) 的屬性,一個檔案或目錄總共會有 10 個為一組的權限屬性,例如我們用 ls -l
指令查看:
[權限] [連結][擁有者][群組][檔案容量][修改日期] [檔名] -rw-rw-r--. 1 tony dev 0 Mar 30 15:11 a.txt drwxrwxr-x. 2 tony dev 19 Mar 30 15:25 xyz
權限屬性以減號 -
表示無此權限,第一個為 d
表示是個目錄,之後 3 個為一組來看,第一組為檔案擁有者、第二組為群組、第三組為其他人。
以上例來看, a.txt
是檔案,因為沒有 d
屬性, 檔案擁有者 可讀、可寫但不可執行, 群組 相同, 其他人 則只能讀、不能寫。
Linux 不是以副檔名來決定該檔案是否可執行,而是以權限中的 x
屬性來決定; x
標示在 檔案 為可執行檔,標示在 目錄 則表示能進入該目錄。
有 3 個指令可以改變檔案的群組、擁有者或權限:
- chgrp :改變檔案所屬群組
- chown :改變檔案擁有者
- chmod :改變檔案的權限
chgrp 改變檔案所屬群組
第一個參數為群組名稱,第二個為檔案名稱。
# 將 a.txt 改為 test 群組 chgrp test a.txt # 將 xyz 目錄及其檔案和子目錄改為 test 群組 chgrp -R test xyz
可使用 -R 選項將目錄中所有檔案及子目錄全部修改。
chown 改變檔案擁有者
第一個參數為使用者名稱,第二個為檔案名稱。
# 將 a.txt 的擁有者改為 tom chown tom a.txt
前提是系統中已有該使用者。一樣可以使用 -R 選項。
chmod 改變檔案的權限
權限中,每個權限有一個數字來代表 r:4
、 w:2
、 x:1
,相加後就是權限的結果,例如:
4+2+1=7 即 rwx 4+1 =5 即 r-x 4+2 =6 即 rw- 0 即 ---
chmod
指令的第一個參數為權限值,第二個為檔案名稱:
chmod 666 a.txt # 即 rw-rw-rw- chmod 644 a.txt # 即 rw-r--r-- chmod 755 xyz # 即 rwxr-xr-x
另外一種設定權限的方式是使用符號表示, u:擁有者
、 g:群組
、 o:其他人
、 a:全部
,然後透過 +,-,=
三個符號表示增加、減少、指定:
# 直接指定 chmod u=rw,go=r a.txt # 即 rw-r--r-- chmod u+x a.txt # 在原本的權限屬性中,增加擁有者的 x # 即 rwxr--r-- chmod o-r a.txt # 在原本的權限屬性中,減少其他人的 r # 即 rwxr-----
未完待續,之後還會有套件管理及其他指令的介紹。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用Angular自定义字段校验指令
- 使用SSE2指令集加速字符替换
- 使用 SSE2 指令集加速字符替换
- GCC 10支持使用SSE指令模拟MMX
- GCC开始使用SSE指令实现MMX内在函数
- 使用vue自定义指令开发一个表单验证插件validate.js
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python高性能(第2版)
[加] 加布丽埃勒•拉纳诺(Gabriele Lanaro) / 袁国忠 / 人民邮电出版社 / 2018-8 / 59.00元
本书是一本Python性能提升指南,展示了如何利用Python的原生库以及丰富的第三方库来构建健壮的应用程序。书中阐释了如何利用各种剖析器来找出Python应用程序的性能瓶颈,并应用正确的算法和高效的数据结构来解决它们;介绍了如何有效地利用NumPy、Pandas和Cython高性能地执行数值计算;解释了异步编程的相关概念,以及如何利用响应式编程实现响应式应用程序;概述了并行编程的概念,并论述了如......一起来看看 《Python高性能(第2版)》 这本书的介绍吧!