1. 程式人生 > >個人琢磨研究,分類混淆知識點(偶爾更新)

個人琢磨研究,分類混淆知識點(偶爾更新)

分類 lin remove roo directory 隱藏文件 zha 測試 而是

ls相關(.*和*)
  1. ls .*
    • 顯示當前文件夾內的以.開頭的文件,包括隱藏文件和隱藏文件夾
    • 顯示當前文件夾.內的所有的非隱藏文件和文件夾(任意名稱)
    • 顯示當前文件夾.內的以.開頭的文件夾(隱藏文件夾)和它內部第一層文件和文件夾;但不顯示此文件夾內的文件夾內的文件,不顯示此文件夾下的以.開頭的文件(即隱藏文件)
    • 查看當前文件夾父目錄..內的非隱藏文件;同上不顯示父目錄內的文件夾內的文件,不顯示父目錄內的以.開頭的文件(也就是隱藏文件)
  2. ls .* -a: 顯示當前文件夾內所有文件,包括隱藏文件;以及其父目錄內的第一層所有文件包括隱藏,以及以.開頭的子目錄內第一次呢該文件,包括隱藏。
  3. ls .* -R:顯示當前文件夾內所有文件包括隱藏文件,其父目錄內的所有文件和其子目錄下的所有層文件(不包括隱藏文件和隱藏文件夾,而且當前目錄的不隱藏文件會再次顯示一遍)
  4. ls .* -a -R:比上面多了隱藏.
  5. ls *. :顯示當前文件夾內以.結尾的所有文件和文件夾,但不顯示隱藏文件
  6. ls *.*:顯示當前文件夾內的中間包含.的所有文件和文件夾,但是註意,不包含隱藏文件,因為*不能顯示隱藏文件
  7. ls * :顯示當前文件夾內的所有非隱藏文件和文件夾,和當前文件夾內第一層所有非隱藏文件和文件夾
  8. ls * -a:顯示當前文件夾內的所有非隱藏文件和文件夾,並顯示這些文件夾內的第一層所有文件包括隱藏文件
  9. ls * -a -R:顯示當前文件夾內的所有非隱藏文件和文件夾,並顯示這些文件夾內的所有層所有文件包括隱藏文件
  10. ls * -R:顯示當前文件夾內的所有非隱藏文件和文件夾,包括其所有子目錄下的所有層的非隱藏文件.

rm相關

  1. rm -rf .*
  2. 或者 rm -rf ./.
    上面那兩個相當於一個命令(參考ls .
    ),這個是有問題的命令,雖然也能刪除當下文件夾內的隱藏文件和隱藏文件夾(和裏面的所有內容),並且保留非隱藏文件和文件夾, 但是這個命令會嘗試刪除. 和.. 只不過跳過了。
  3. rm -rf .[^.]* 刪除當前文件夾內的所有隱藏文件和隱藏文件夾(包括隱藏文件夾內的其中所有內容),但是不刪除非隱藏文件和文件夾。和上面的命令同一個結果,但是不報錯。
  4. rm -rf ./*
    刪除當前目錄下的所有非隱藏文件和非隱藏文件夾(包括非隱藏文件夾內其中所有內容,即使裏面有隱藏文件也刪除)
  5. rm -rf ./.
    錯誤的命令,不能這樣執行
    6 .可以先創建一個文件夾的軟鏈接,然後用 rm -rf 軟鏈接/ 的方式 刪除源文件夾內的所有內容 但是保留原文件夾。註意軟鏈接後面必須加上/,不然就把這個軟鏈接本身給刪掉了,參考一下下面的ls 軟鏈接相關內容。
17:28[root@centos7 /data/cptest/zhang]# rm -rf ./.*
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./.’
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘./..’
17:31[root@centos7 /data/cptest/zhang]# ls -a
. ..

軟鏈接目錄相關(和ll相關部分,與rm相關部分查看rm指令中解釋)

  • ls 軟鏈接:
    ll 軟鏈接 或者 ll 軟鏈接 -d(加不加-d都一樣):顯示這個軟鏈接本身的信息
    ll 軟鏈接/ :顯示這個軟連接連接到的目錄內的文件信息
    ll 軟鏈接/ -d :這個相當於 ll 軟鏈接目錄 -d ,顯示目標目錄文件夾本身的信息
    附加: ll 目錄 都是顯示目錄下的內容, 加不加/ 結果都一樣。 只有加了-d 顯示的結果才是本身文件夾的信息。 只不過加了-d 以後,結果也會顯示加不加/,有細微差別:
    22:04[root@centos7 /data]# ll cptest/ -d
    drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest/
    22:04[root@centos7 /data]# ll cptest -d
    drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest
21:55[root@centos7 /data]# ll lintst
lrwxrwxrwx. 1 root root 6 Mar 11 20:03 lintst -> cptest
21:55[root@centos7 /data]# ll lintst/
total 4
drwx------. 15 zhang zhang 4096 Mar  9 23:39 zhang
21:55[root@centos7 /data]# ll lintst/ -d
drwxr-xr-x. 3 root root 19 Mar 12 21:54 lintst/
21:56[root@centos7 /data]# ll cptest
total 4
drwx------. 15 zhang zhang 4096 Mar  9 23:39 zhang
21:56[root@centos7 /data]# ll cptest -d
drwxr-xr-x. 3 root root 19 Mar 12 21:54 cptest

cp相關

  1. cp -a /root/. /data/ :將/root目錄內的所有文件包括隱藏文件拷貝到/data裏面
  2. cp -a /root/(反向單引號) ls -A /root (反向單引號) /data/
    實現了和1中相同的功能
  3. cp -a /root/ /data :在data下創建新root目錄並拷貝進去,前提是data下並沒有root這個名字的目錄
  4. cp -a /root/ /data/rootbak:在data下創建新rootbak目錄並考進去
  5. cp -a /root/.[^.]* /data/ :把root下的所有隱藏文件,隱藏文件夾(包括裏面的所有隱藏文件和非隱藏文件),考到data下
  6. cp -a /root/* /data :root下的非隱藏文件和非隱藏文件夾(包括裏面的所有非隱藏文件和隱藏文件)考到data下
  • cp -a /root/.* :加-a的話也有-R ,這個就參考ls 那部分即可,基本上沒有這個用法

無聊測試

自己測試一下以下各行代碼,看看正確和錯誤結果怎麽顯示和定向
1.t是當前文件夾下的普通文件

ls /eraf /home 1>1.t  2>1.t
ls /eraf /home 1>>1.t  2>1.t
ls /eraf /home 2>>1.t  1>1.t
ls /eraf /home 2>1.t  1>1.t
ls /eraf /home 2>1.t  2>&1  1>1.t
ls /eraf /home 2>>1.t  2>&1  1>1.t
ls /eraf /home 2>&1  2>1.t  1>1.t
ls /eraf /home 2>&1  2>>1.t  1>1.t

總結常用的

顯示隱藏文件和隱藏文件夾 .[^.]
顯示非隱藏文件和非隱藏文件夾 *
-r或者-R 在各命令中 則包含這些文件夾中的所有內容,不論是隱藏還是非隱藏

一些其它雜項

  • pstree命令下可以看到如果多次su轉換,則多開很多bash
  • 因此su su在切換之後要退出,用exit或者logout
  • 硬鏈接其實是普通文件:在7種文件類型中一個硬鏈接坐前面的文件類型中顯示的並不是l(鏈接類型),而是-普通文件類型

個人琢磨研究,分類混淆知識點(偶爾更新)