Linux命令實踐

20221404李震發表於2024-09-10

目錄
  • 課上測試
    • 作業題目:Linux命令實踐
      • 學習Linux核心命令
      • 作業要求(9‘)
      • 作業內容
        • 命令演示
        • AI提問及驗證(重複命令未列出)
          • 總結
        • 高頻命令自主學習
          • 重要命令推薦
          • 深入學習命令示例
            • echo
            • od
            • bc
      • 總結
      • 作業提交要求 (1')

課上測試

作業題目:Linux命令實踐

學習Linux核心命令

  • ls
  • who
  • pwd
  • cd
  • man
  • whereis
  • which
  • find
  • locate
  • grep

作業要求(9‘)

  • 參考課件,針對上面核心命令重複老師的演示內容(3’)
  • 選擇自己習慣的 AI 工具, 針對上面核心命令,讓 AI 給自己生成至少例子,然後自己進行驗證,總結(3’)
  • 讓 AI工具推薦一些重要命令,然後選擇自己認為會高頻應用的至少 3個命令(重點推薦 echo,od,sort,bc,ls)進行自主深入學習,每個命令不少於 5 個例子,提交驗證,實踐過程和總結(3’)

作業內容

命令演示

  • ls
~$ ls
公共的  模板  影片  圖片  文件  下載  音樂  桌面  GmSSL  snap

~$ ls -l
總計 40
drwxr-xr-x 2 li li 4096  9月  2 14:08 公共的
drwxr-xr-x 2 li li 4096  9月  2 14:08 模板
drwxr-xr-x 2 li li 4096  9月  2 14:08 影片
drwxr-xr-x 2 li li 4096  9月  2 14:08 圖片
drwxr-xr-x 2 li li 4096  9月  2 14:08 文件
drwxr-xr-x 2 li li 4096  9月  2 14:08 下載
drwxr-xr-x 2 li li 4096  9月  2 14:08 音樂
drwxr-xr-x 2 li li 4096  9月  2 14:08 桌面
drwxrwxr-x 3 li li 4096  9月  6 21:50 GmSSL
drwx------ 4 li li 4096  9月  6 21:08 snap

~$ ls -a
.              .lesshst
..             .local
公共的         .profile
模板           snap
影片           .sudo_as_admin_successful
圖片           .vboxclient-clipboard-tty2-control.pid
文件           .vboxclient-clipboard-tty2-service.pid
下載           .vboxclient-draganddrop-tty2-control.pid
音樂           .vboxclient-draganddrop-tty2-service.pid
桌面           .vboxclient-hostversion-tty2-control.pid
.bash_history  .vboxclient-seamless-tty2-control.pid
.bash_logout   .vboxclient-seamless-tty2-service.pid
.bashrc        .vboxclient-vmsvga-session-tty2-control.pid
.cache         .vboxclient-vmsvga-session-tty2-service.pid
.config        .viminfo
GmSSL


  • who
~$ who
li       tty2         2024-09-10 11:06 (tty2)
~$ whoami
li
~$ who -a
           系統引導 2024-09-10 10:15
           執行級別 5 2024-09-10 10:16
li       + tty2         2024-09-10 11:06 01:00        2748 (tty2)
           pts/1        2024-09-10 11:08              3722 id=ts/1  終止=0 退出=0

  • pwd
~$ pwd
/home/li
  • cd
~$ cd /
li@li-VirtualBox:/$ ls
bin    dev   lib    libx32      mnt   root  snap      sys  var
boot   etc   lib32  lost+found  opt   run   srv       tmp
cdrom  home  lib64  media       proc  sbin  swapfile  usr

/$ cd home
li@li-VirtualBox:/home$ 

/home$ cd .
li@li-VirtualBox:/home$ 

/home$ cd ..
li@li-VirtualBox:/$ 

~/GmSSL$ cd ..
li@li-VirtualBox:~$ cd -
/home/li/GmSSL
li@li-VirtualBox:~/GmSSL$ 

  • man
/$ man man
MAN(1)                         手冊分頁顯示工具                         MAN(1)

名稱
       man - 系統參考手冊的介面

概述
       man [man 選項] [[章節] 頁 ...] ...
       man -k [apropos 選項] 正規表示式 ...
       man -K [man 選項] [章節] 關鍵詞 ...
       man -f [whatis 選項] 頁 ...
       man -l [man 選項] 檔案 ...
       man -w|-W [man 選項] page ...

  • whereis
/$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

  • which
/$ which ls
/usr/bin/ls

  • find
~$ find GmSSL
GmSSL
GmSSL/GmSSL-master.zip
GmSSL/GmSSL-master

~$ find 文件 -mtime -1
文件
文件/test.txt
文件/.test.txt.swp

  • locate
~$ locate GmSSL
/home/li/GmSSL
/home/li/GmSSL/GmSSL-master
/home/li/GmSSL/GmSSL-master.zip

  • grep
~$ grep -nr O_RDWR /usr/include
/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h:45:#define O_RDWR		     02
/usr/include/asm-generic/fcntl.h:22:#define O_RDWR		00000002
/usr/include/linux/dma-heap.h:18:/* Valid FD_FLAGS are O_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR */
/usr/include/scsi/cxlflash_ioctl.h:65: * and O_RDWR flags defined in the fcntl.h header file.
/usr/include/drm/drm.h:839:#define DRM_RDWR O_RDWR

  • cheat
~$ cheat ls
# To display everything in <dir>, excluding hidden files:
ls <dir>

# To display everything in <dir>, including hidden files:
ls -a <dir>

# To display all files, along with the size (with unit suffixes) and timestamp:
ls -lh <dir>

# To display files, sorted by size:
ls -S <dir>

# To display directories only:
ls -d */ <dir>

# To display directories only, include hidden:
ls -d .*/ */ <dir>

# To display all files sorted by changed date, most recent first:
ls -ltc 

# To display files sorted by create time:
ls -lt

# To display files in a single column:
ls -1

# To show ACLs (MacOS):
# see also `cheat chmod` for `/bin/chmod` options for ACLs
/bin/ls -le

# To show all the subtree files (Recursive Mode):
ls -R

AI提問及驗證(重複命令未列出)

下面我將為您提供這些Linux核心命令的簡要說明以及使用示例。

    1. ls

描述:列出目錄內容。

使用示例

ls                # 列出當前目錄下的檔案和目錄
ls -l             # 以長格式列出資訊,包括檔案許可權、所有者、大小和最後修改時間
ls -a             # 列出所有檔案,包括以點(.)開頭的隱藏檔案
ls -la            # 結合-l和-a選項

實踐

~$ ls -la
總計 120
drwxr-x--- 15 li   li   4096  9月 10 12:46 .
drwxr-xr-x  3 root root 4096  9月  2 13:50 ..
drwxr-xr-x  2 li   li   4096  9月  2 14:08 公共的
drwxr-xr-x  2 li   li   4096  9月  2 14:08 模板
drwxr-xr-x  2 li   li   4096  9月  2 14:08 影片
drwxr-xr-x  2 li   li   4096  9月  2 14:08 圖片
drwxr-xr-x  2 li   li   4096  9月  2 14:08 文件
drwxr-xr-x  2 li   li   4096  9月  2 14:08 下載
drwxr-xr-x  2 li   li   4096  9月  2 14:08 音樂
drwxr-xr-x  2 li   li   4096  9月  2 14:08 桌面
-rw-------  1 li   li   2431  9月 10 11:31 .bash_history
-rw-r--r--  1 li   li    220  9月  2 13:50 .bash_logout
-rw-r--r--  1 li   li   3771  9月  2 13:50 .bashrc
drwx------ 14 li   li   4096  9月  2 17:13 .cache
drwxr-xr-x 15 li   li   4096  9月  6 21:41 .config
drwxrwxr-x  3 li   li   4096  9月  6 21:50 GmSSL
-rw-------  1 li   li     20  9月 10 11:22 .lesshst
drwx------  3 li   li   4096  9月  2 14:08 .local
-rw-r--r--  1 li   li    807  9月  2 13:50 .profile
drwx------  4 li   li   4096  9月  6 21:08 snap
-rw-r--r--  1 li   li      0  9月  2 15:25 .sudo_as_admin_successful
-rw-r-----  1 li   li      5  9月 10 12:45 .vboxclient-clipboard-tty2-control.pid
-rw-r-----  1 li   li      5  9月 10 12:45 .vboxclient-clipboard-tty2-service.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-draganddrop-tty2-control.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-draganddrop-tty2-service.pid
-rw-r-----  1 li   li      5  9月 10 12:45 .vboxclient-hostversion-tty2-control.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-seamless-tty2-control.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-seamless-tty2-service.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-vmsvga-session-tty2-control.pid
-rw-r-----  1 li   li      5  9月 10 12:46 .vboxclient-vmsvga-session-tty2-service.pid
-rw-------  1 li   li    858  9月  6 21:36 .viminfo
    1. who

描述:顯示當前登入系統的使用者資訊。

使用示例

who               # 顯示當前登入的所有使用者資訊
    1. pwd

描述:列印當前工作目錄的絕對路徑。

使用示例

pwd               # 顯示當前工作目錄的路徑
    1. cd

描述:更改當前工作目錄。

使用示例

cd /home/user     # 更改到/home/user目錄
cd ..             # 更改到上一級目錄
cd -              # 切換到上一次所在的目錄
    1. man

描述:顯示命令的手冊頁(幫助文件)。

使用示例

man ls            # 顯示ls命令的手冊頁
    1. whereis

描述:定位命令的二進位制程式、原始碼和手冊頁的位置。

使用示例

whereis ls        # 顯示ls命令的二進位制、原始碼和手冊頁的位置
    1. which

描述:顯示給定命令的絕對路徑。

使用示例

which ls          # 顯示ls命令的絕對路徑
    1. find

描述:在目錄樹中搜尋檔案,並執行指定的操作。

使用示例

find /home -name "*.txt"   # 在/home目錄下查詢所有副檔名為.txt的檔案

~/文件$ find /home/li/文件 -name "*.txt"
/home/li/文件/test.txt
    1. locate

描述:快速查詢檔案系統中的檔案。使用預先構建的資料庫來查詢檔案,因此比find快,但可能不是最新的。

使用示例

locate filename.txt   # 查詢所有名為filename.txt的檔案
    1. grep

描述:搜尋文字,並將匹配的行列印出來。

使用示例

grep "error" log.txt   # 在log.txt檔案中搜尋包含"error"的行
grep -r "error" /home  # 在/home目錄及其子目錄中遞迴搜尋包含"error"的行

~/文件$ grep "123" test2.txt
12346789

~/文件$ grep -r "error" /home
grep: /home/li/GmSSL/GmSSL-master.zip: 匹配到二進位制檔案
/home/li/GmSSL/GmSSL-master/cmake/cert_commands.cmake:	message(FATAL_ERROR "generate file error")
/home/li/GmSSL/GmSSL-master/cmake/cert_commands.cmake:	message(FATAL_ERROR "generate file error")
...
總結

這些命令是Linux使用者日常工作中非常基礎且強大的工具。掌握它們將極大地提高我在使用Linux系統時的效率和便利性。

高頻命令自主學習

在Linux系統中,有許多重要且常用的命令,這些命令對於日常的系統管理、檔案操作、程式設計開發等任務至關重要。以下是一些重要的命令推薦。

重要命令推薦
  • ls:列出目錄內容。
  • cd:更改當前目錄。
  • pwd:顯示當前工作目錄的完整路徑。
  • cp:複製檔案或目錄。
  • mv:移動或重新命名檔案或目錄。
  • rm:刪除檔案或目錄。
  • chmod:更改檔案或目錄的許可權。
  • chown:更改檔案或目錄的所有者和/或組。
  • grep:搜尋檔案內容,顯示匹配的行。
  • find:在目錄樹中搜尋檔案,並執行操作。
  • ps:顯示當前程序的快照。
  • top:實時顯示系統程序的動態管理檢視。
  • kill:傳送訊號到程序,通常用於終止程序。
  • tar:歸檔工具,用於打包和解包檔案。
  • ssh:安全地遠端登入到另一臺計算機。
深入學習命令示例
echo

echo命令用於在終端輸出文字或變數的值。

  • 基本用法:echo Hello, World! —— 輸出Hello, World!
  • 輸出變數:name="Alice"; echo "My name is $name" —— 輸出My name is Alice
  • 輸出帶換行符的文字:echo -e "Line 1\nLine 2" —— 輸出兩行文字。
  • 輸出帶顏色的文字:echo -e "\e[31mRed Text\e[0m" —— 輸出紅色文字。
  • 抑制換行符:echo -n "No newline at end" —— 輸出文字但不換行。
/$ echo Hello, World!
Hello, World!

/$ name="Alice"
li@li-VirtualBox:/$ echo "My name is $name"
My name is Alice

$ echo -e "Line 1\nLine 2"
Line 1
Line 2

$ echo -e "\e[31mRed Text\e[0m"
Red Text

li@li-VirtualBox:/$ echo -n "No newline at end"
No newline at endli@li-VirtualBox:/$ 
od

od命令用於將檔案或標準輸入轉換成八進位制、十進位制、十六進位制或其他格式的輸出。

  • 以十六進位制格式輸出檔案內容:od -x filename.bin
  • 以字元形式輸出檔案內容:od -c filename.txt
  • 以無符號單位元組格式輸出二進位制檔案:od -t u1 filename.bin
  • 將標準輸入以八進位制格式輸出:echo "Hello" | od -b
  • 忽略前導空白字元:echo -n " Hello" | od -b(注意,-n防止echo自動新增換行符,但od預設顯示所有字元,包括空格)。
~/文件$ od -x test2.txt
0000000 3231 3433 3736 3938 610a 6362 6564 6766
0000020 000a
0000021

~/文件$ od -c test2.txt
0000000   1   2   3   4   6   7   8   9  \n   a   b   c   d   e   f   g
0000020  \n
0000021

~/文件$ od -t u1 test2.txt
0000000  49  50  51  52  54  55  56  57  10  97  98  99 100 101 102 103
0000020  10
0000021

~/文件$ echo "Hello" | od -b
0000000 110 145 154 154 157 012
0000006

~/文件$ echo -n "  Hello" | od -b
0000000 040 040 110 145 154 154 157
0000007
bc

bc命令是一個任意精度的計算器語言,用於數學計算。

  • 基礎運算:echo "2 + 3" | bc —— 輸出5
  • 浮點數運算:echo "scale=2; 10 / 3" | bc —— 輸出3.33
  • 變數賦值:echo "a = 5; a + 3" | bc —— 輸出8
  • 使用內建函式:echo "s(1)" | bc -l —— 計算正弦值。
  • 迴圈和條件判斷(透過指令碼實現):在bc的互動模式下或透過編寫指令碼實現更復雜的邏輯。
$ echo "2 + 3" | bc
5

$ echo "scale=2; 10 / 3" | bc
3.33

$ echo "a = 5; a + 3" | bc
8

$ echo "s(1)" | bc -l
.84147098480789650665

以上是對echoodbc命令的深入學習和示例展示。

總結

Linux命令列介面是Linux系統的核心。透過學習命令,可以更深入地理解作業系統的內部工作原理,包括檔案系統、程序管理、網路配置等。
提高工作效率:Linux命令提供了強大的文字處理、檔案管理和系統監控工具。熟練使用這些命令可以極大地提高工作效率,尤其是在處理大量檔案、資料分析和系統維護時。
增強問題解決能力:在Linux環境中,很多問題都需要透過命令列來解決。學習Linux命令意味著將學會如何查詢系統日誌、分析程序狀態、除錯程式等,這些技能對於快速定位和解決系統或應用問題至關重要。

作業提交要求 (1')

  1. 記錄實踐過程和 AI 問答過程,儘量不要截圖,給出文字內容
  2. (選做)推薦所有作業託管到 giteegithub
  3. (必做)提交作業 markdown文件,命名為“學號-姓名-作業題目.md”
  4. (必做)提交作業 markdown文件轉成的 PDF 檔案,命名為“學號-姓名-作業題目.pdf”

相關文章