日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)

發布時間:2023/11/28 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 啟動 shell

/etc/passwd 文件包含了所有系統用戶賬戶列表以及每個用戶的基本配置信息:

christine:x:501:501:Christine Bresnahan:/home/christine:/bin/bash

其中 /bin/bash 該字段指定了用戶使用的 shell 程序。在前面的 /etc/passwd 樣例條目中,用戶 christine 使用 /bin/bash 作為自己的默認 shell 程序。這意味著當 christine 登錄 Linux 系統后,bash shell會自動啟動。

man 命令:

當使用 man 命令查看命令手冊頁的時候,這些手冊頁是由分頁程序(pager)來顯示的。可以通過點擊空格鍵進行翻頁,或是使用回車鍵逐行查看。另外還可以使用箭頭鍵向前向后滾動手冊頁的內容,可以點擊q鍵退出

大多數命令都可以接受 -help 或 --help 選項。

2. 文件系統

Linux 使用正斜線(/)而不是反斜線(\)在文件路徑中劃分目錄。在 Linux 中,反斜線用來標識轉義字符。

  • 絕對文件路徑

    絕對文件路徑總是以正斜線(/)作為起始,指明虛擬文件系統的根目錄。

  • 相對文件路徑

    相對文件路徑允許用戶指定一個基于當前位置的目標文件路徑。相對文件路徑不以代表根目
    錄的正斜線(/)開頭,而是以目錄名(如果用戶準備切換到當前工作目錄下的一個目錄)或是一個特殊字符開始。

有兩個特殊字符可用于相對文件路徑中:

  • 單點符(.),表示當前目錄;
  • 雙點符(…),表示當前目錄的父目錄;

3. 文件和目錄列表

ls 命令輸出的列表是按字母排序的(按列排序而不是按行排序)

-F 參數的 ls 命令輕松區分文件和目錄

$ ls -F
Desktop/ Downloads/ Music/ Pictures/ Templates/ Videos/
Documents/ examples.desktop my_script* Public/ test_file
$

-F 參數在目錄名后加了正斜線(/),在可執行文件(比如上面的my_script文件)的后面加個星號。在Linux上,隱藏文件通常是文件名以點號開始的文件,-a 參數可將其顯示出來。

-R 參數是 ls 命令可用的另一個參數,叫作遞歸選項。它列出了當前目錄下包含的子目錄中的文件。

-l 參數會產生長列表格式的輸出,默認顯示的是文件修改時間

$ ls -l
total 48
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Desktop
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Documents
drwxr-xr-x 2 christine christine 4096 Apr 22 20:37 Downloads
-rw-r--r-- 1 christine christine 8980 Apr 22 13:36 examples.desktop
...

每一行都包含了關于文件(或目錄)的下述信息:
? 文件類型,比如目錄(d)、文件(-)、字符型文件(c)或塊設備(b);
? 文件的權限;
? 文件的硬鏈接總數;
? 文件屬主的用戶名;
? 文件屬組的組名;
? 文件的大小(以字節為單位);
? 文件的上次修改時間;
? 文件名或目錄名。

當用戶指定特定文件的名稱作為過濾器時,ls 命令只會顯示該文件的信息。

$ ls -l my_script
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$

ls 命令能夠識別標準通配符,并在過濾器中用它們進行模式匹配:

  • 問號(?)代表一個字符;
  • 星號(*)代表零個或多個字符;
  • 中括號([ ])表示一個字符位置并給出多個可能的選擇;
  • 感嘆號 (!) 表示將將不需要的內容排除在外;
$ ls -l my_s*t
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$
$ ls -l my_scr[ai]pt
-rw-rw-r-- 1 christine christine 0 May 21 13:25 my_scrapt
-rwxrw-r-- 1 christine christine 54 May 21 11:26 my_script
$
$ ls -l f[a-i]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fall
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
$
$ ls -l f[!a]ll
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fell
-rw-rw-r-- 1 christine christine 0 May 21 13:44 fill
-rw-rw-r-- 1 christine christine 0 May 21 13:44 full
$

4. 處理文件

4.1 創建文件

   touch filename 

touch 命令創建了你指定的新文件,并將你的用戶名作為文件的屬主。注意,文件的大小是零,因為touch命令只創建了一個空文件。

4.2 復制文件

cp source destination

當 source 和 destination 參數都是文件名時,cp 命令將源文件復制成一個新文件,并且以destination 命名。新文件就像全新的文件一樣,有新的修改時間。destination 可以為目錄。

cp 命令的 -R 參數威力強大。可以用它在一條命令中遞歸地復制整個目錄的內容。

   $ ls -Fd *ScriptsScripts/$ ls -l Scripts/total 25-rwxrw-r-- 1 christine christine 929 Apr 2 08:23 file_mod.sh-rwxrw-r-- 1 christine christine 254 Jan 2 14:18 SGID_search.sh-rwxrw-r-- 1 christine christine 243 Jan 2 13:42 SUID_search.sh$$ cp -R Scripts/ Mod_Scripts$ ls -Fd *ScriptsMod_Scripts/ Scripts/$ ls -l Mod_Scriptstotal 25-rwxrw-r-- 1 christine christine 929 May 21 16:16 file_mod.sh-rwxrw-r-- 1 christine christine 254 May 21 16:16 SGID_search.sh-rwxrw-r-- 1 christine christine 243 May 21 16:16 SUID_search.sh$

在執行 cp –R 命令之前,目錄 Mod_Scripts 并不存在。它是隨著 cp –R 命令被創建的,整個Scripts 目錄中的內容都被復制到其中。注意,在新的 Mod_Scripts 目錄中,所有的文件都有對應的新日期。Mod_Scripts 目錄現在已經成為了 Scripts 目錄的完整副本。

ls -d 只列出目錄本身的信息,不列出其中的內容。

 $ ls -Fd public/
public//$ ls -F public/
2018/      baidusitemap.xml  css/         index.html  search.xml
archives/  categories/       favicon.ico  js/         sitemap.xml
atom.xml   CNAME             fonts/       page/       tags/

4.3 鏈接文件

如需要在系統上維護同一文件的兩份或多份副本,除了保存多份單獨的物理文件副本之外,還可以采用保存一份物理文件副本和多個虛擬副本的方法。這種虛擬的副本就稱為鏈接。鏈接是目錄中指向文件真實位置的占位符。

在Linux中有兩種不同類型的文件鏈接:

  • 符號鏈接-軟鏈接

    符號鏈接就是一個實實在在的文件,它指向存放在虛擬目錄結構中某個地方的另一個文件。這兩個通過符號鏈接在一起的文件,彼此的內容并不相同

    要為一個文件創建符號鏈接,原始文件必須事先存在。然后可以使用ln命令以及**-s選項**來創建符號鏈接。

    $ ls -l data_file
    -rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
    $
    $ ln -s data_file sl_data_file
    $
    $ ls -l *data_file
    -rw-rw-r-- 1 christine christine 1092 May 21 17:27 data_file
    lrwxrwxrwx 1 christine christine 9 May 21 17:29 sl_data_file -> data_file
    $
    

    在上面的例子中,注意符號鏈接的名字sl_data_file位于ln命令中的第二個參數位置上。顯示在長列表中符號文件名后的->符號表明該文件是鏈接到文件data_file上的一個符號鏈接。

    符號鏈接sl_data_file只有9個字節,而data_file有1092個字節。這是因為sl_data_file僅僅只是指向data_file而已。它們的內容并不相同,是兩個完全不同的文件。

    另一種證明鏈接文件是獨立文件的方法是查看 inode 編號。文件或目錄的inode編號是一個用于標識的唯一數字,這個數字由內核分配給文件系統中的每一個對象。要查看文件或目錄的inode編號,可以給ls命令加入-i參數。

    $ ls -i *data_file
    296890 data_file 296891 sl_data_file
    $
    

    ?

  • 硬鏈接

    硬鏈接會創建獨立的虛擬文件,其中包含了原始文件的信息及位置。但是它們從根本上而言是同一個文件引用硬鏈接文件等同于引用了源文件。要創建硬鏈接,原始文件也必須事先存在,只不過這次使用 ln 命令時不再需要加入額外的參數了。

    $ ls -l code_file
    -rw-rw-r-- 1 christine christine 189 May 21 17:56 code_file
    $
    $ ln code_file hl_code_file
    $
    $ ls -li *code_file
    296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56
    code_file
    296892 -rw-rw-r-- 2 christine christine 189 May 21 17:56
    hl_code_file
    $
    

    帶有硬鏈接的文件共享inode編號。這是因為它們終歸是同一個文件。還要注意的是,鏈接計數(列表中第三項)顯示這兩個文件都有兩個鏈接。另外,它們的文件大小也一模一樣。

4.4 重命名文件

在Linux中,重命名文件稱為移動(moving),mv命令可以將文件和目錄移動到另一個位置或重新命名。

a. 可以使用mv來移動文件的位置;

b. 可以使用mv命令移動文件位置并修改文件名稱;

c. 可以使用mv命令移動整個目錄及其內容;

在使用 mv 的過程中,文件的時間戳和inode編號都沒有改變。改變的只有位置和名稱。

?

4.5 刪除文件

bash shell中刪除文件的命令是rm,-i命令參數提示你是不是要真的刪除該文件。bash shell中沒有回收站或垃圾箱,文件一旦刪除,就無法再找回

$ rm -i fall
rm: remove regular empty file 'fall'? y
$

?

rm命令的另外一個特性是,如果要刪除很多文件且不受提示符的打擾,可以用**-f參數強制刪除。**

5. 處理目錄

5.1 創建目錄

在Linux中創建目錄很簡單,用mkdir命令即可

要想同時創建多個目錄和子目錄,需要加入-p參數:

$ mkdir -p New_Dir/Sub_Dir/Under_Dir
$
$ ls -R New_Dir
New_Dir:
Sub_Dir
New_Dir/Sub_Dir:
Under_Dir
New_Dir/Sub_Dir/Under_Dir:
$

?

5.2 刪除目錄

默認情況下,rmdir命令只刪除空目錄,要刪除含有整個文件的目錄,可以使用:

a、可以在整個非空目錄上使用rm命令。使用**-r選項**使得命令可以向下進入目錄,刪除其中的文件,然后再刪除目錄本身

b、一口氣刪除目錄及其所有內容的終極大法就是使用帶有-r參數和-f參數的rm命令

6. 查看文件

6.1 查看文件類型

file命令能夠探測文件的內部,并決定文件是什么類型

$ file my_file
my_file: ASCII text

file命令不僅能確定文件中包含的文本信息,還能確定該文本文件的字符編碼,ASCII。

$ file New_Dir
New_Dir: directory

可以使用file命令作為另一種區分目錄的方法

$ file sl_data_file
sl_data_file: symbolic link to 'data_file'

file命令甚至能夠告訴你它鏈接到了哪個文件上

$ file my_script
my_script: Bourne-Again shell script, ASCII text executable

file命令對腳本文件的返回結果。盡管這個文件是ASCII text,但因為它是一個腳本文件,所以可以在系統上執行(運行)

$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.24,
[...]

file命令能夠確定該程序編譯時所面向的平臺以及需要何種類型的庫。

6.2 查看整個文件

cat 命令

  • -n 參數會給所有的行加上行號

    $ cat -n test1
    1 hello
    2
    3 This is a test file.
    4
    5
    6 That we'll use to test the cat command.
    
  • -b 參數只給有文本的行加上行號

    $ cat -b test1
    1 hello
    2 This is a test file.
    3 That we'll use to test the cat command.
    

more 命令

more命令會顯示文本文件的內容,但會在顯示每頁數據之后停下來。可以通過按空格鍵或回車鍵以逐行向前的方式瀏覽文本文件。瀏覽完之后,按q鍵退出

less 命令

less命令的操作和more命令基本一樣,一次顯示一屏的文件文本。除了支持和more命令相同的命令集,它還包括更多的選項。其中一組特性就是less命令能夠識別上下鍵以及上下翻頁鍵(假設你的終端配置正確)。

6.3 查看部分文件

tail 命令

tail命令會顯示文件最后幾行的內容(文件的“尾部”)。默認情況下,它會顯示文件的末尾10行。可以向tail命令中加入**-n參數來修改所顯示的行數**。

$ tail -n 2 log_file
line19
Last line - line20

?

-f參數是tail命令的一個突出特性。它允許你在其他進程使用該文件時查看文件的內容。tail命令會保持活動狀態,并不斷顯示添加到文件中的內容。

head 命令

head命令,會顯示文件開頭那些行的內容。默認情況下,它會顯示文件前10行的文本:

它也支持-n參數,這樣就可以指定想要顯示的內容了。這兩個命令都允許你在破折號后面輸入想要顯示的行數(即不需要 輸入 -n 參數)

$ head -5 log_file
line1
line2
line3
line4
line5

?

總結

以上是生活随笔為你收集整理的Linux shell 学习笔记(1)— 文件和目录(查看、创建、复制、软硬链接、重命名及删除操作)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。