GNU/LinuxGNU / Linux入門

有用的快捷方式

使用終端

本文檔中的示例假定您使用的是POSIX兼容(如bashshzshksh )shell。

使用終端實現了大部分GNU / Linux功能。大多數Linux發行版都包含終端模擬器,允許用戶從桌面環境中與shell進行交互。 shell是一個執行用戶輸入命令的命令行解釋器。 Bash (Bourne Again SHell)是許多Linux發行版中的常見默認shell,是macOS的默認shell。

如果您使用帶有emacs鍵綁定的Bash (默認設置),這些快捷方式將起作用:

打開終端

  • Ctrl + Alt + TSuper + T.

光標移動

  • Ctrl + A轉到當前正在鍵入的行的開頭。
  • Ctrl + E轉到當前正在鍵入的行的末尾。
  • Ctrl + XX在行的開頭和光標的當前位置之間移動。
  • Alt + F將光標向前移動當前行上的一個字。
  • Alt + B將光標向後移動當前行上的一個字。
  • Ctrl + F將光標向前移動當前行上的一個字符。
  • Ctrl + B將光標向後移動當前行上的一個字符。

文字操作

  • Ctrl + U剪切從當前位置到行首的行,將其添加到剪貼板。如果您在線的末端,請切斷整條線。
  • Ctrl + K剪切從當前位置到行尾的行,將其添加到剪貼板。如果您位於生產線的開頭,請切割整條生產線。
  • Ctrl + W刪除光標前的單詞,將其添加到剪貼板。
  • Ctrl + Y粘貼最近剪切的剪貼板中的最後一個東西(撤消當前光標位置的最後一個刪除)。
  • Alt + T交換光標前的最後兩個單詞。
  • Alt + L從光標到單詞結尾使小寫。
  • Alt + U從光標到單詞結尾使大寫。
  • Alt + C大寫到從光標開始的單詞結束(如果光標位於單詞的開頭,則為整個單詞)。
  • Alt + D刪除從光標開始的單詞結束(如果光標位於單詞的開頭,則為整個單詞)。
  • Alt +。打印上一個命令中寫入的最後一個單詞。
  • Ctrl + T交換光標前的最後兩個字符。

歷史訪問

  • Ctrl + R允許您搜索以前使用的命令。
  • Ctrl + G離開歷史搜索模式而不運行命令。
  • Ctrl + J允許您將當前匹配的命令複製到命令行而不運行它,允許您在運行命令之前進行修改。
  • Alt + R如果您已對其進行了編輯,則還原對您從歷史記錄中提取的命令所做的任何更改。
  • Ctrl + P顯示上次執行的命令,即返回命令歷史記錄(類似於向上箭頭)。
  • Ctrl + N顯示下一個執行的命令,即向前走過命令歷史(類似於向下箭頭)。

終端控制

  • Ctrl + L清除屏幕,類似於clear命令。
  • Ctrl + S停止所有輸出到屏幕。這在運行具有大量長輸出的命令時很有用。但這並沒有停止運行命令。
  • Ctrl + Q使用Ctrl + S停止後,將輸出恢復到屏幕。
  • Ctrl + C結束當前正在運行的進程並返回提示。
  • Ctrl + D退出當前shell會話,類似於exit或logout命令。在某些命令中,充當文件結束信號以指示已到達文件結尾。
  • Ctrl + Z暫停(暫停)當前正在運行的前台進程,返回shell提示符。然後,您可以使用bg 命令允許該進程在後台運行。要再次將該進程置於前台,請使用fg 命令。要查看所有後台進程,請使用jobs 命令。
  • 選項卡自動完成文件和目錄名稱。
  • 選項 選項 顯示當鍵入的字符與文件或目錄名稱不唯一匹配時的所有可能性。

特殊字符

  • Ctrl + H與Backspace相同。
  • Ctrl + J與Return相同(歷史換行)。
  • Ctrl + M與Return相同(歷史回車)。
  • Ctrl + I與Tab相同。
  • Ctrl + G鈴聲角色。
  • Ctrl + @Null Character。
  • Esc Deadkey相當於Alt修飾符。

關閉終端

  • Ctrl + Shift + W關閉終端選項卡。
  • Ctrl + Shift + Q關閉整個終端。

或者,您可以使用set -o vi 切換到bash中vi鍵綁定。使用set -o emacs 切換回emacs鍵綁定。

基本的Linux實用程序

Linux幾乎可以執行任何任務,大多數任務都是直觀且易於解釋的。

在Linux中獲得幫助

命令可用性
man <name> 閱讀<name>的手冊頁。
man <section> <name> 閱讀與給定部分相關的<name>手冊頁。
man -k <editor> 輸出其手冊頁包含<editor>關鍵字的所有軟件。
man -K <keyword> 輸出包含<keyword>的所有手冊頁。
apropos <editor> 輸出一行描述與單詞編輯器匹配的所有應用程序。如果無法調用應用程序的名稱,請使用此命令。
help 在Bash shell中,這將顯示所有可用bash命令的列表。
help <name> 在Bash shell中,這將顯示有關<name> bash命令的信息。
info <name> 查看有關<name>的所有信息。
dpkg -l 在基於Debian的系統上輸出所有已安裝軟件包的列表。
dpkg -L packageName 將在Debian上列出已安裝的文件和給定包的路徑詳細信息。
dpkg -l | grep -i <edit> 無論何種情況,都使用<edit>返回所有.deb已安裝的軟件包。
less /var/lib/dpkg/available 返回所有可用包的說明。
whatis vim 列出vim的單行描述。
<command-name> --help 顯示有​​關<tool-name>的使用信息。有時command -h 也可以,但不適用於所有命令。

用戶識別以及誰是Linux世界中的誰

命令可用性
hostname 顯示系統的主機名。
hostname -f 顯示系統的完全限定域名(FQDN)。
passwd 更改當前用戶的密碼。
whoami 在終端登錄的用戶的用戶名。
who 當前以用戶身份登錄的所有用戶的列表。
w 顯示當前系統狀態,時間,持續時間,當前登錄系統的用戶列表以及其他用戶信息。
last 誰最近使用過該系統。
last root root用戶最後一次登錄的時間是什麼時候。
lastb 顯示進入系統的所有錯誤登錄嘗試。
chmod 更改權限 - 讀取,寫入,執行文件或目錄。

處理相關信息

命令可用性
top 列出按當前系統資源使用情況排序的所有進程。顯示持續更新的進程顯示(默認為3秒)。使用q 鍵退出頂部。
ps 列出當前在當前shell會話上運行的進程
ps -u root 列出root正在運行的所有進程和命令
ps aux 列出當前系統上所有用戶的所有進程

文件管理命令

Linux對present和parent目錄使用一些約定。這對於初學者來說可能有點混亂。

每當您在Linux中的終端中時,您將處於所謂的當前工作目錄中 。通常,您的命令提示符將顯示完整的工作目錄,或者只顯示該目錄的最後一部分。您的提示可能如下所示:

user@host ~/somedir $
user@host somedir $
user@host /home/user/somedir $
 

這表示您當前的工作目錄是/home/user/somedir

在Linux .. 代表父目錄和. 代表當前目錄。

因此,如果當前目錄是/home/user/somedir ,則cd ../somedir 將不會更改工作目錄。

下表列出了一些最常用的文件管理命令

目錄導航

命令效用
pwd 獲取當前工作目錄的完整路徑。
cd - 導航到您正在使用的最後一個目錄。
cd ~ 或只是cd 導航到當前用戶的主目錄。
cd .. 轉到當前目錄的父目錄(請注意cd.. 之間的空格)

列出目錄中的文件

命令效用
ls -l 以long(表)格式列出當前目錄中的文件和目錄(為了更好的可讀性,建議使用-l和ls)。
ls -ld dir-name 列出有關目錄dir-name 而不是其內容的信息。
ls -a 列出所有文件,包括隱藏文件(以. 開頭的文件名是Linux中的隱藏文件)。
ls -F 在文件名的末尾附加一個符號以表示其類型( * 表示可執行文件, / 表示目錄, @ 表示符號鏈接, = 表示套接字,|表示命名管道, > 表示門)。
ls -lt 列出按上次修改時間排序的文件,最近修改的文件顯示在頂部(記住-l選項提供具有更好可讀性的長格式)。
ls -lh 以人類可讀的格式列出文件大小。
ls -lR 以遞歸方式顯示所有子目錄。
tree 將從當前目錄開始生成文件系統的樹表示。

文件/目錄創建,複製和刪除

命令效用
cp -p source destination 將文件從source 複製到目標 。 -p代表保存。它在復製文件所有者,時間戳,組,權限等時保留文件的原始屬性。
cp -R source_dir destination_dir 將源目錄遞歸複製到指定的目標。
mv file1 file2 在Linux中沒有這樣的重命名命令。因此mv 將file1移動/重命名為file2。
rm -i filename 在每次刪除文件之前詢問您是否確認。 如果你是LINUX命令行的新用戶,你應該總是使用rm -i您可以指定多個文件。
rm -R dir-name 將遞歸刪除目錄dir-name
rm -rf dir-name 將以遞歸方式刪除目錄dir ,忽略不存在的文件,並且永遠不會提示任何內容。 小心使用這個命令!您可以指定多個目錄。
rmdir dir-name 將刪除目錄dir-name ,如果它為空。此命令只能刪除空目錄。
mkdir dir-name 創建目錄dir-name
mkdir -p dir-name/dir-name 創建目錄層次結構。根據需要創建父目錄(如果它們不存在)。您可以指定多個目錄。
touch filename 創建文件文件filename (如果不存在),否則將文件的時間戳更改為當前時間。

文件/目錄權限和組

命令效用
chmod <specification> filename 更改文件權限。規格= u user, g group, o other, + add permission, - remove, r read, w write, x execute。
chmod -R <specification> dir-name 遞歸更改目錄的權限。要更改目錄的權限以及該目錄中的所有內容,請使用此命令。
chmod go=+r myfile 為所有者和組添加讀取權限。
chmod a +rwx myfile 允許所有用戶讀取,寫入或執行myfile
chmod go -r myfile 刪除組和其他人的讀取權限。
chown owner1 filename 將文件的所有權更改為用戶owner1
chgrp grp_owner filename 將文件filename 主組所有權更改為group grp_owner
chgrp -R grp_owner dir-name 將目錄dir-name 主組所有權更改為遞歸組grp_owner 。要更改目錄的組所有權以及該目錄中的所有內容,請使用此命令。

文件操作

文件和目錄(文件夾的另一個名稱)是Linux的核心,因此能夠從命令行創建,查看,移動和刪除它們非常重要且非常強大。這些文件操作命令允許您執行圖形文件資源管理器將執行的相同任務。

創建一個名為myFile 的空文本文件:

touch myFile
 

myFile 重命名為myFirstFile

mv myFile myFirstFile 
 

查看文件的內容:

cat myFirstFile
 

使用尋呼機查看文件的內容(一次屏蔽一次):

less myFirstFile
 

查看文件的前幾行:

head myFirstFile
 

查看文件的最後幾行:

tail myFirstFile
 

編輯文件:

vi myFirstFile
 

查看當前工作目錄中的文件:

ls
 

創建一個名為myFirstDirectory 的空目錄:

mkdir myFirstDirectory
 

創建多路徑目錄:(創建兩個目錄,src和myFirstDirectory)

mkdir -p src/myFirstDirectory
 

將文件移動到目錄中:

mv myFirstFile myFirstDirectory/
 

您還可以重命名該文件:

user@linux-computer:~$ mv myFirstFile secondFileName
 

將當前工作目錄更改為myFirstDirectory

cd myFirstDirectory
 

刪除文件:

rm myFirstFile
 

進入父目錄(表示為.. ):

cd ..
 

刪除一個空目錄:

rmdir myFirstDirectory
 

刪除非空目錄(即包含文件和/或其他目錄):

rm -rf myFirstDirectory
 

請注意,刪除目錄時,刪除./ not / 將擦除整個文件系統。

文件/目錄詳細信息

ls 命令有幾個選項,可以一起使用以顯示更多信息。

詳細信息/權利

l 選項顯示文件權限,大小和上次修改日期。因此,如果根目錄包含名為test 的文件和文件someFile 命令:

user@linux-computer:~$ ls -l
 

會輸出類似的東西

-rw-r--r-- 1 user users   70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4096 Jul 21 07:18 test
 

權限的格式為drwxrwxrwx 。第一個字符表示文件類型d 如果它是目錄- 否則。接下來的三個rwx 是用戶對文件的權限,接下來的三個是組對文件的權限,後三個是其他人對文件的權限。

rwxr 代表是否可以讀取文件, w 代表文件是否可以修改, x 代表文件是否可以執行。如果未授予任何許可- 將代替rwx

因此,從上面user 可以讀取和修改someFile.txt 但該組只具有隻讀權限。

要更改權限,如果您擁有sudo權限,則可以使用chmod ### fileName 命令。 r 由值4表示, w 由2表示, x 由1表示。因此,如果只想要能夠將內容修改為test 目錄

Owner rwx = 4+2+1 = 7
Group r-x = 4+0+1 = 5
Other r-x = 4+0+1 = 5
 

所以整個命令是

chmod 755 test
 

現在做一個ls -l 會顯示類似的東西

drwxr-xr-x 2 user users 4096 Jul 21 07:20 test
 

可讀尺寸

l 選項一起使用時, h 選項顯示人類可讀的文件大小。運行

user@linux-computer:~$ ls -lh
 

輸出:

total 4166
-rw-r--r-- 1 user users   70 Jul 22 13:36 someFile.txt
drwxrwxrwx 2 user users 4.0K Jul 21 07:18 test
 

要查看隱藏文件,請使用a 選項。例如

user@linux-computer:~$ ls -a
 

可能列表

.profile
someFile.txt
test
 

目錄總大小

要查看當前目錄的大小,請使用s 選項( h 選項也可用於使大小更易讀)。

user@linux-computer:~$ ls -s
 

輸出

total 4166
someFile.txt      test
 

遞歸視圖

讓我們說test 目錄有一個文件anotherFile ,你想從根文件夾中看到它,你可以使用R 選項列出遞歸樹。

user@linux-computer:~$ ls -R
 

輸出

.:
someFile.txt    test

./test:
anotherFile
 

你好,世界

在終端中鍵入以下代碼,然後按Enter鍵

echo "Hello World"
 

這將產生以下輸出:

Hello World
 

按名稱/內容中的模式搜索文件

使用Linux命令行(shell)的人的常見任務是搜索具有特定名稱或包含特定文本的文件/目錄。為了實現這個目的,您應該熟悉2個命令:


按名稱查找文件

find /var/www -name '*.css'
 

這將打印出/var/www 下以.css 結尾的所有文件的完整路徑/文件名。輸出示例:

/var/www/html/text-cursor.css
/var/www/html/style.css
 

欲了解更多信息:

man find
 

查找包含文本的文件

grep font /var/www/html/style.css 
 

這將打印包含指定文件中的圖案font 所有行。輸出示例:

font-weight: bold;
font-family: monospace;
 

另一個例子:

grep font /var/www/html/
 

這不像你希望的那樣有效。你得到:

grep: /var/www/html/: Is a directory
 

您需要使用-R 選項遞歸grep 以使其工作:

grep -R font /var/www/html/
 

嘿好!看看這個的輸出:

/var/www/html/admin/index.php:  echo '<font color=red><b>Error: no dice</b></font><br/>';
/var/www/html/admin/index.php:  echo '<font color=red><b>Error: try again</b></font><br/>';
/var/www/html/style.css:  font-weight: bold;
/var/www/html/style.css:  font-family: monospace;
 

請注意,當grep 匹配多個文件時,它會在匹配的行前面加上文件名。如果需要,可以使用-h 選項來擺脫它。

欲了解更多信息:

man grep