经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库运维 » LinuxShell » 查看文章
第二章 文件和目录操作命令 - key-oldboy
来源:cnblogs  作者:key-oldboy  时间:2018/9/30 10:49:56  对本文有异议

2.1 pwd

(print work directory)打印工作目录(显示当前所在路径)  后面可以接 -L  默认情况下接的也是-L(logical)的 此种情况显示的是逻辑路径(相当于win的一样) -P(physical)的话,就会把真实的物理路径全部显示出来

  1. [root@oldbody local]# pwd
  2.  
  3. /usr/local
  4.  
  5. [root@oldbody local]# cd -
  6.  
  7. /root
  8.  
  9. [root@oldbody ~]#
  10.  
  11. [root@oldbody home]# pwd
  12.  
  13. /home
  14.  
  15. [root@oldbody home]# echo $PWD
  16.  
  17. /home

2.2 cd

(change directory)改变目录路径 例子:cd /etc 后面的参数-L和-P的话,一个是逻辑的,一个是物理的

绝对路径:从/开始的路径 /root/test/a/b    

相对路径:不从/开始的路径 test/a/b

cd ../..    上上级目录    cd ../../..  上上上级目录    cd /  直接到/目录下    cd -   上一次目录   其实 -   是因为有一个$OLDPWD这个环境变量  

cd ~  代表家目录  其实 因为有一个$HOME这个环境变量 

cd ..  退回上一级目录  如果是一个点的话代表当前目录

  1. 比如[root@oldbody oldboy]# pwd
  2.  
  3. /oldboy
  4.  
  5. [root@oldbody oldboy]# cd /tmp/
  6.  
  7. [root@oldbody tmp]# cd -
  8.  
  9. /oldboy
  10.  
  11. [root@oldbody oldboy]# env | grep -i oldpwd 因为你在oldboy目录下 所以你的环境变量OLDPWD=/tmp
  12.  
  13. OLDPWD=/tmp
  14.  
  15. [root@oldbody oldboy]#
  16.  
  17. [root@oldbody oldboy]# cd -
  18.  
  19. /tmp
  20.  
  21. [root@oldbody tmp]# env | grep -i oldpwd 因为你在tmp目录下 所以你的环境变量OLDPWD=/oldboy 其中-i就是不区分大小写的
  22.  
  23. OLDPWD=/oldboy
  24.  
  25. [root@oldbody tmp]#

2.3 tree

tree   树的意思  以树的形式来显示一个目录结构 如果tree不接任何参数的话,会显示所有的tree的目录结构 在Linux系统里面以 以.开头的都是隐藏文件 使用 ls命令查看不出来 必须使用ls -a参数进行查看

tree -a 查看隐藏文件

tree -d代表只显示目录     

tree -L其中L代表level层级的意思 显示指定的层级

tree -i 不显示树枝 常与-f参数配合使用

tree -f 显示每个文件的全路径

tree -F 用以区分文件和目录的方法 以/结尾的为目录

可以用rpm -qa tree命令查看下tree是否安装 如果tree没有安装,可以使用yum install tree -y 安装tree软件包  LANG=en   调整字符集 为英文  然后输入tree /liangli2/ 可以看到

  1. [root@oldbody /]# tree /liangli2/
  2.  
  3. /liangli2/
  4.  
  5. `-- liangli3
  6.  
  7.  
  8. 1 directory, 0 files
  9.  
  10.  
  11. [root@oldbody key]# tree
  12.  
  13. .
  14.  
  15. |-- 1
  16.  
  17. |-- key1
  18.  
  19. | |-- 4
  20.  
  21. | `-- 5
  22.  
  23. |-- key2
  24.  
  25. | |-- 4
  26.  
  27. | `-- 5
  28.  
  29. `-- key3
  30.  
  31. |-- 4
  32.  
  33. `-- 5
  34.  
  35.  
  36. 10 directories, 0 files
  37.  
  38. [root@oldbody key]# tree -L 1
  39.  
  40. .
  41.  
  42. |-- 1
  43.  
  44. |-- key1
  45.  
  46. |-- key2
  47.  
  48. `-- key3
  49.  
  50.  
  51. 4 directories, 0 files
  52.  
  53. [root@oldbody key]#
  54.  
  55.  
  56. [root@oldbody key]# tree -dL 1
  57.  
  58. .
  59.  
  60. |-- 1
  61.  
  62. |-- key1
  63.  
  64. |-- key2
  65.  
  66. `-- key3
  67.  
  68.  
  69. 4 directories
  70.  
  71. [root@oldbody key]#

为每一个路径显示完整的路径   f    full   完整

  1. [root@oldbody key]# tree -dLf 1
  2.  
  3. .
  4.  
  5. |-- ./1
  6.  
  7. |-- ./key1
  8.  
  9. |-- ./key2
  10.  
  11. `-- ./key3
  12.  
  13.  
  14. 4 directories
  15.  
  16. [root@oldbody key]#
  17.  
  18.  
  19. [root@oldbody key]# tree -dLfi 1 indentation压痕 这个点的话,tree后面可以接路径点消失
  20.  
  21. 不要前面的树枝
  22.  
  23. [root@oldbody sysconfig]# tree -L 1 -fi /boot/
  24.  
  25. /boot
  26.  
  27. /boot/System.map-2.6.32-573.el6.x86_64
  28.  
  29. /boot/config-2.6.32-573.el6.x86_64
  30.  
  31. /boot/efi
  32.  
  33. /boot/grub
  34.  
  35. /boot/initramfs-2.6.32-573.el6.x86_64.img
  36.  
  37. /boot/lost+found
  38.  
  39. /boot/symvers-2.6.32-573.el6.x86_64.gz
  40.  
  41. /boot/vmlinuz-2.6.32-573.el6.x86_64
  42.  
  43.  
  44. 3 directories, 5 files
  45.  
  46. [root@oldbody sysconfig]#
  47.  
  48. 区分文件和目录
  49.  
  50. [root@oldbody key]# tree -F
  51.  
  52. .
  53.  
  54. |-- 1/
  55.  
  56. |-- key1/
  57.  
  58. | |-- 4/
  59.  
  60. | `-- 5/
  61.  
  62. |-- key2/
  63.  
  64. | |-- 4/
  65.  
  66. | `-- 5/
  67.  
  68. `-- key3/
  69.  
  70. |-- 4/
  71.  
  72. `-- 5/
  73.  
  74.  
  75. 10 directories, 0 files
  76.  
  77. [root@oldbody key]#

2.4 mkdir

windows下的路径样式为c:\data\test 而Linux下的路径样式为/data/test,不同的是windows系统下还有D,E等盘,Linux下就只有/,它是所有目录的顶点    (macke directorys)创建目录  例子:mkdir /data  在根/下创建data目录   

-p 参数  如果文件存在 在创建文件话,接-p参数不会报错的  另一个作用就是 可以连续创建多级目录   

-v 参数作用 就是可以看到创建目录的流程是怎么样的     

或者cd /;mkdir data  切换到根下,然后创建data目录 其中;就是命令的分隔符    

连续创建目录  mkdir -p /liangli/liangli1  创建2个目录 一个是liangli一个是liangli1  其中liangli1在liangli目录下

  1. [root@oldbody /]# mkdir -pv Tech/{1..3}/{4..6}
  2.  
  3. mkdir: created directory `Tech/1'
  4.  
  5. mkdir: created directory `Tech/1/4'
  6.  
  7. mkdir: created directory `Tech/1/5'
  8.  
  9. mkdir: created directory `Tech/1/6'
  10.  
  11. mkdir: created directory `Tech/2'
  12.  
  13. mkdir: created directory `Tech/2/4'
  14.  
  15. mkdir: created directory `Tech/2/5'
  16.  
  17. mkdir: created directory `Tech/2/6'
  18.  
  19. mkdir: created directory `Tech/3'
  20.  
  21. mkdir: created directory `Tech/3/4'
  22.  
  23. mkdir: created directory `Tech/3/5'
  24.  
  25. mkdir: created directory `Tech/3/6'
  26.  
  27.  
  28. [root@oldbody /]# tree /tmp
  29.  
  30. /tmp
  31.  
  32. `-- Tech
  33.  
  34. |-- 1
  35.  
  36. | |-- 4
  37.  
  38. | |-- 5
  39.  
  40. | `-- 6
  41.  
  42. |-- 2
  43.  
  44. | |-- 4
  45.  
  46. | |-- 5
  47.  
  48. | `-- 6
  49.  
  50. `-- 3
  51.  
  52. |-- 4
  53.  
  54. |-- 5
  55.  
  56. `-- 6
  57.  
  58.  
  59. 13 directories, 0 files
  60.  
  61.  
  62. [root@oldbody a]# mkdir -pv /e/b/c/d/e/f
  63.  
  64. mkdir: created directory `/e'
  65.  
  66. mkdir: created directory `/e/b'
  67.  
  68. mkdir: created directory `/e/b/c'
  69.  
  70. mkdir: created directory `/e/b/c/d'
  71.  
  72. mkdir: created directory `/e/b/c/d/e'
  73.  
  74. mkdir: created directory `/e/b/c/d/e/f'
  75.  
  76. [root@oldbody a]#
  77.  
  78.  
  79. 一下子创建连续5个dir1 dir2 dir3 dir4 dir5目录了
  80.  
  81. [root@oldbody /]# mkdir /Tech/dir{1..5}
  82.  
  83. [root@oldbody /]#
  84.  
  85. [root@oldbody /]#
  86.  
  87. [root@oldbody /]# ls /Tech/
  88.  
  89. dir1 dir2 dir3 dir4 dir5 liangli.txt oldboy.txt
  90.  
  91. 同时创建多个目录
  92.  
  93. [root@oldbody tmp]# mkdir -p test/dir{1..5} oldboy/{a..g}
  94.  
  95. [root@oldbody tmp]# tree test oldboy/
  96.  
  97. test
  98.  
  99. |-- dir1
  100.  
  101. |-- dir2
  102.  
  103. |-- dir3
  104.  
  105. |-- dir4
  106.  
  107. `-- dir5
  108.  
  109. oldboy/
  110.  
  111. |-- a
  112.  
  113. |-- b
  114.  
  115. |-- c
  116.  
  117. |-- d
  118.  
  119. |-- e
  120.  
  121. |-- f
  122.  
  123. `-- g
  124.  
  125.  
  126. 12 directories, 0 files
  127.  
  128. [root@oldbody tmp]#
  129.  
  130. 克隆目录结构
  131.  
  132. [root@oldbody ~]# tree -if liangli2018/
  133.  
  134. liangli2018
  135.  
  136. liangli2018/dir1
  137.  
  138. liangli2018/dir1/4
  139.  
  140. liangli2018/dir1/5
  141.  
  142. liangli2018/dir1/6
  143.  
  144. liangli2018/dir1/7
  145.  
  146. liangli2018/dir2
  147.  
  148. liangli2018/dir2/4
  149.  
  150. liangli2018/dir2/5
  151.  
  152. liangli2018/dir2/6
  153.  
  154. liangli2018/dir2/7
  155.  
  156. liangli2018/dir3
  157.  
  158. liangli2018/dir3/4
  159.  
  160. liangli2018/dir3/5
  161.  
  162. liangli2018/dir3/6
  163.  
  164. liangli2018/dir3/7
  165.  
  166.  
  167. 15 directories, 0 files
  168.  
  169.  
  170. [root@oldbody ~]# tree -if liangli2018/ --noreport liangli2018 --noreport不显示最后一行统计信息
  171.  
  172. liangli2018
  173.  
  174. liangli2018/dir1
  175.  
  176. liangli2018/dir1/4
  177.  
  178. liangli2018/dir1/5
  179.  
  180. liangli2018/dir1/6
  181.  
  182. liangli2018/dir1/7
  183.  
  184. liangli2018/dir2
  185.  
  186. liangli2018/dir2/4
  187.  
  188. liangli2018/dir2/5
  189.  
  190. liangli2018/dir2/6
  191.  
  192. liangli2018/dir2/7
  193.  
  194. liangli2018/dir3
  195.  
  196. liangli2018/dir3/4
  197.  
  198. liangli2018/dir3/5
  199.  
  200. liangli2018/dir3/6
  201.  
  202. liangli2018/dir3/7
  203.  
  204. liangli2018
  205.  
  206. liangli2018/dir1
  207.  
  208. liangli2018/dir1/4
  209.  
  210. liangli2018/dir1/5
  211.  
  212. liangli2018/dir1/6
  213.  
  214. liangli2018/dir1/7
  215.  
  216. liangli2018/dir2
  217.  
  218. liangli2018/dir2/4
  219.  
  220. liangli2018/dir2/5
  221.  
  222. liangli2018/dir2/6
  223.  
  224. liangli2018/dir2/7
  225.  
  226. liangli2018/dir3
  227.  
  228. liangli2018/dir3/4
  229.  
  230. liangli2018/dir3/5
  231.  
  232. liangli2018/dir3/6
  233.  
  234. liangli2018/dir3/7
  235.  
  236.  
  237. [root@oldbody ~]# tree -if liangli2018/ --noreport liangli2018 >oldboy.txt
  238.  
  239. [root@oldbody ~]#
  240.  
  241. [root@oldbody ~]#
  242.  
  243. [root@oldbody ~]# cat oldboy.txt
  244.  
  245. liangli2018 这个是必须存在的目录
  246.  
  247. liangli2018/dir1
  248.  
  249. liangli2018/dir1/4
  250.  
  251. liangli2018/dir1/5
  252.  
  253. liangli2018/dir1/6
  254.  
  255. liangli2018/dir1/7
  256.  
  257. liangli2018/dir2
  258.  
  259. liangli2018/dir2/4
  260.  
  261. liangli2018/dir2/5
  262.  
  263. liangli2018/dir2/6
  264.  
  265. liangli2018/dir2/7
  266.  
  267. liangli2018/dir3
  268.  
  269. liangli2018/dir3/4
  270.  
  271. liangli2018/dir3/5
  272.  
  273. liangli2018/dir3/6
  274.  
  275. liangli2018/dir3/7
  276.  
  277. liangli2018
  278.  
  279. liangli2018/dir1
  280.  
  281. liangli2018/dir1/4
  282.  
  283. liangli2018/dir1/5
  284.  
  285. liangli2018/dir1/6
  286.  
  287. liangli2018/dir1/7
  288.  
  289. liangli2018/dir2
  290.  
  291. liangli2018/dir2/4
  292.  
  293. liangli2018/dir2/5
  294.  
  295. liangli2018/dir2/6
  296.  
  297. liangli2018/dir2/7
  298.  
  299. liangli2018/dir3
  300.  
  301. liangli2018/dir3/4
  302.  
  303. liangli2018/dir3/5
  304.  
  305. liangli2018/dir3/6
  306.  
  307. liangli2018/dir3/7
  308.  
  309. [root@oldbody ~]# cd /tmp
  310.  
  311. [root@oldbody tmp]# mkdir -p `cat /root/oldboy.txt` 首先执行``反引号里面的内容 然后在执行mkdir命令
  312.  
  313. [root@oldbody tmp]# ll
  314.  
  315. total 4
  316.  
  317. drwxr-xr-x 5 root root 4096 Sep 29 10:42 liangli2018
  318.  
  319. [root@oldbody tmp]# tree
  320.  
  321. .
  322.  
  323. `-- liangli2018
  324.  
  325. |-- dir1
  326.  
  327. | |-- 4
  328.  
  329. | |-- 5
  330.  
  331. | |-- 6
  332.  
  333. | `-- 7
  334.  
  335. |-- dir2
  336.  
  337. | |-- 4
  338.  
  339. | |-- 5
  340.  
  341. | |-- 6
  342.  
  343. | `-- 7
  344.  
  345. `-- dir3
  346.  
  347. |-- 4
  348.  
  349. |-- 5
  350.  
  351. |-- 6
  352.  
  353. `-- 7
  354.  
  355.  
  356. 16 directories, 0 files
  357.  
  358. [root@oldbody tmp]#

2.5 touch

创建文件或更新时间戳 查看ls /Tech可以看到自己创建的文件了,如果文件不存在,就建立新文件,如果存在,就改变文件的访问时间atime等时间戳

连续创建10000个文件  touch stu{1..10000}  

可以同时创建2个文件  touch a.txt b.txt 两个文件   也可以用touch {1..4}.txt

通过命令可以看到访问(-a) 修改(-m) 改变(-c)文件的时间状态

  1. [root@oldbody 1]# stat 1.txt
  2.  
  3. File: `1.txt'
  4.  
  5. Size: 0 Blocks: 0 IO Block: 4096 regular empty file
  6.  
  7. Device: 803h/2051d Inode: 784979 Links: 1
  8.  
  9. Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
  10.  
  11. Access: 2018-06-21 20:16:43.546093627 +0800
  12.  
  13. Modify: 2018-06-21 20:16:43.546093627 +0800
  14.  
  15. Change: 2018-06-21 20:16:43.546093627 +0800
  16.  
  17. [root@oldbody 1]#
  18.  
  19. [root@oldbody 1]# touch -a 1.txt 的话,表示只改变访问和改变的时间戳,不改变修改的时间戳 其中Change时间不管任何情况都是会改变的
  20.  
  21. touch -m 1.txt 只改变修改时间戳
  22.  
  23. [root@oldboy liangli]# stat -c %a a.txt
  24.  
  25. 644
  26.  
  27. [root@oldboy liangli]#
  28.  
  29. -c 使用指定的格式而不是默认的格式 %a 八进制权限
  30.  
  31.  
  32. 指定时间属性创建/修改文件(了解)
  33.  
  34. [root@oldbody tmp]# touch -d 20201001 1.txt d指定创建文件后文件修改时间
  35.  
  36. [root@oldbody tmp]# ll -h 1.txt
  37.  
  38. -rw-r--r-- 1 root root 11 Oct 1 2020 1.txt
  39.  
  40. [root@oldbody tmp]# ll -h 2.txt
  41.  
  42. -rw-r--r-- 1 root root 0 Sep 29 10:57 2.txt
  43.  
  44.  
  45. [root@oldbody tmp]# touch -r 2.txt 1.txt r让其和其他文件时间属性保持一致
  46.  
  47. [root@oldbody tmp]# ll -h 1.txt
  48.  
  49. -rw-r--r-- 1 root root 11 Sep 29 10:57 1.txt
  50.  
  51.  
  52. [root@oldbody tmp]# touch -t 201809291110.00 1.txt t设置文件格式
  53.  
  54. [root@oldbody tmp]# ll -h 1.txt
  55.  
  56. -rw-r--r-- 1 root root 11 Sep 29 2018 1.txt
  57.  
  58. [root@oldbody tmp]# ll -h --full-time 1.txt
  59.  
  60. -rw-r--r-- 1 root root 11 2018-09-29 11:10:00.000000000 +0800 1.txt
  61.  
  62. [root@oldbody tmp]#

2.6 ls

list(列表)  列表目录文件  例子:ls / 列 根/目录下目录和文件 

-l  long  长格式(显示出来的时间为最后一次修改时间)  

-d directorys 查看目录   

-a  all的意思  显示所有文件,包括隐藏的文件(默认.开头文件都是隐藏的 不显示)

-A 列出所有文件,包括隐藏文件,但是不包括.和..这两个是目录  

-t根据最后修改时间排序,默认从大到小(最新到最老)  

-r反转排序

--time-style=long-iso  显示完整时间属性参数(年份)

ls -lrt /etc 执行这个命令后最新的文件会在最下面  这条命令依赖于当前系统正确的时间

-F 区分文件和目录的方式(在结尾处加上类型指示符号 * / @等)了解

   加上“*”代表可执行的普通文件

   加上“/”表示目录

   加上“=”表示套接字(sockets)

   加上“|”表示FIFOs

   加上“@”表示符号链接

-p 也是区分文件和目录的方式(在结尾处给目录加上/)

  1. [root@oldbody oldboy]# touch oldboy.txt
  2.  
  3. [root@oldbody oldboy]# ls -lrt r是倒叙的意思 t按修改时间排序
  4.  
  5. total 20
  6.  
  7. -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz
  8.  
  9. -rw-r--r-- 1 root root 0 Jun 26 21:53 wodi.gz
  10.  
  11. -rw-r--r-- 1 root root 0 Jun 26 21:53 oldboy
  12.  
  13. -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen
  14.  
  15. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie
  16.  
  17. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong
  18.  
  19. drwxr-xr-x 2 root root 4096 Jun 26 21:56 test
  20.  
  21. drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext
  22.  
  23. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan
  24.  
  25. -rw-r--r-- 1 root root 0 Jun 26 23:40 oldboy.txt
  26.  
  27. [root@oldbody oldboy]#
  28.  
  29. 查看系统时间
  30.  
  31. [root@oldbody ~]# date
  32.  
  33. Wed Jun 27 20:28:45 CST 2018
  34.  
  35. [root@oldbody ~]#
  36.  
  37. ls -l --color=auto 显示颜色
  38.  
  39. [root@oldbody oldboy]# alias
  40.  
  41. alias cp='cp -i'
  42.  
  43. alias l.='ls -d .* --color=auto'
  44.  
  45. alias ll='ls -l --color=auto'
  46.  
  47. alias ls='ls --color=auto'
  48.  
  49. alias mv='mv -i'
  50.  
  51. alias rm='rm -i'
  52.  
  53. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  54.  
  55. [root@oldbody oldboy]# ls -l 目录会显示颜色的
  56.  
  57. total 20
  58.  
  59. drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext
  60.  
  61. -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen
  62.  
  63. -rw-r--r-- 1 root root 0 Jun 26 21:53 oldboy
  64.  
  65. -rw-r--r-- 1 root root 0 Jun 26 23:40 oldboy.txt
  66.  
  67. drwxr-xr-x 2 root root 4096 Jun 26 21:56 test
  68.  
  69. -rw-r--r-- 1 root root 0 Jun 26 21:53 wodi.gz
  70.  
  71. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong
  72.  
  73. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan
  74.  
  75. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie
  76.  
  77. -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz
  78.  
  79. [root@oldbody oldboy]# \ls -l 屏蔽掉别名
  80.  
  81. total 20
  82.  
  83. drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext
  84.  
  85. -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen
  86.  
  87. -rw-r--r-- 1 root root 0 Jun 26 21:53 oldboy
  88.  
  89. -rw-r--r-- 1 root root 0 Jun 26 23:40 oldboy.txt
  90.  
  91. drwxr-xr-x 2 root root 4096 Jun 26 21:56 test
  92.  
  93. -rw-r--r-- 1 root root 0 Jun 26 21:53 wodi.gz
  94.  
  95. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong
  96.  
  97. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan
  98.  
  99. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie
  100.  
  101. -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz
  102.  
  103. [root@oldbody oldboy]#
  104.  
  105. [root@oldbody oldboy]# \ls -l --color=auto 目录会显示颜色的
  106.  
  107. total 20
  108.  
  109. drwxr-xr-x 3 root root 4096 Jun 26 21:56 ext
  110.  
  111. -rw-r--r-- 1 root root 0 Jun 26 21:53 jeacen
  112.  
  113. -rw-r--r-- 1 root root 0 Jun 26 21:53 oldboy
  114.  
  115. -rw-r--r-- 1 root root 0 Jun 26 23:40 oldboy.txt
  116.  
  117. drwxr-xr-x 2 root root 4096 Jun 26 21:56 test
  118.  
  119. -rw-r--r-- 1 root root 0 Jun 26 21:53 wodi.gz
  120.  
  121. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaodong
  122.  
  123. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xiaofan
  124.  
  125. drwxr-xr-x 2 root root 4096 Jun 26 21:56 xingfujie
  126.  
  127. -rw-r--r-- 1 root root 0 Jun 26 21:53 yingsui.gz
  128.  
  129. [root@oldbody oldboy]#
  130.  
  131.  
  132. 我们也可以给过滤的内容加颜色
  133.  
  134. [root@oldbody oldboy]# cat 123.log
  135.  
  136. key
  137.  
  138. [root@oldbody oldboy]# grep --color=auto key 123.log
  139.  
  140. key
  141.  
  142. [root@oldbody oldboy]#
  143.  
  144. 3306这个端口加上颜色
  145.  
  146. [root@oldbody oldboy]# grep --color=auto 3306 /etc/services
  147.  
  148. mysql 3306/tcp # MySQL
  149.  
  150. mysql 3306/udp # MySQL
  151.  
  152. [root@oldbody oldboy]#
  153.  
  154.  
  155. ls -a 可以显示隐藏的文件和不隐藏的文件 all
  156.  
  157. [root@oldbody test]# ls -a
  158.  
  159. . .. dir1 dir2 dir3 file1.txt file2.txt file3.txt
  160.  
  161.  
  162. ls -l 将文件的属性和修改时间都可以显示出来
  163.  
  164. ll就相当于ls -l一样 系统自带的一个alias
  165.  
  166. [root@oldbody test]# ls -l
  167.  
  168. total 12
  169.  
  170. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  171.  
  172. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  173.  
  174. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  175.  
  176. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  177.  
  178. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  179.  
  180. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  181.  
  182. [root@oldbody test]# ll
  183.  
  184. total 12
  185.  
  186. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  187.  
  188. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  189.  
  190. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  191.  
  192. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  193.  
  194. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  195.  
  196. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  197.  
  198. [root@oldbody test]# alias
  199.  
  200. alias cp='cp -i'
  201.  
  202. alias l.='ls -d .* --color=auto'
  203.  
  204. alias ll='ls -l --color=auto'
  205.  
  206. alias ls='ls --color=auto'
  207.  
  208. alias mv='mv -i'
  209.  
  210. alias rm='rm -i'
  211.  
  212. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  213.  
  214. [root@oldbody test]#
  215.  
  216.  
  217. -h human(人类) 的作用就是可以很直观的现实文件的大小
  218.  
  219. [root@oldbody test]# ls -lh
  220.  
  221. total 12K
  222.  
  223. drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir1
  224.  
  225. drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir2
  226.  
  227. drwxr-xr-x 2 root root 4.0K Jun 28 11:48 dir3
  228.  
  229. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  230.  
  231. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  232.  
  233. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  234.  
  235. [root@oldbody test]#
  236.  
  237.  
  238. -d directory参数表示只显示目录
  239.  
  240. [root@oldbody test]# ls -l | grep dir1
  241.  
  242. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  243.  
  244. [root@oldbody test]# ll -d dir1
  245.  
  246. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  247.  
  248. [root@oldbody test]#
  249.  
  250.  
  251. -F classify 就是给目录后面加上/
  252.  
  253. [root@oldbody test]# ls -F
  254.  
  255. dir1/ dir2/ dir3/ file1.txt file2.txt file3.txt
  256.  
  257. [root@oldbody test]#
  258.  
  259.  
  260. 生产案例:查找最近更新的文件 ll -rt 等于ls -lrt
  261.  
  262. -r reverse 倒叙排序或者反向排序
  263.  
  264. -t 按修改时间排序
  265.  
  266. 默认情况下 最新创建的文件和目录放在最前面
  267.  
  268. [root@oldbody test]# ll
  269.  
  270. total 12
  271.  
  272. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  273.  
  274. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  275.  
  276. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  277.  
  278. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  279.  
  280. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  281.  
  282. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  283.  
  284. [root@oldbody test]#
  285.  
  286.  
  287. [root@oldbody test]# ll -rt
  288.  
  289. total 12
  290.  
  291. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  292.  
  293. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  294.  
  295. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  296.  
  297. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  298.  
  299. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  300.  
  301. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  302.  
  303. [root@oldbody test]#
  304.  
  305. -i 参数 查看inode节点
  306.  
  307. [root@oldbody test]# ll
  308.  
  309. total 12
  310.  
  311. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  312.  
  313. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  314.  
  315. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  316.  
  317. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  318.  
  319. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  320.  
  321. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  322.  
  323. [root@oldbody test]# ll -i
  324.  
  325. total 12
  326.  
  327. 915788 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  328.  
  329. 915789 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  330.  
  331. 915790 drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  332.  
  333. 915785 -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  334.  
  335. 915786 -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  336.  
  337. 915787 -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  338.  
  339. [root@oldbody test]#
  340.  
  341.  
  342. --time-style=long-iso 参数使用
  343.  
  344. [root@oldbody tmp]# ll --time-style=long-iso
  345.  
  346. total 12
  347.  
  348. -rw-r--r-- 1 root root 21 2018-09-29 11:39 1.txt
  349.  
  350. -rw-r--r-- 1 root root 0 2018-09-29 11:21 123.txt
  351.  
  352. -rw-r--r-- 1 root root 0 2018-09-29 10:57 2.txt
  353.  
  354. drwxr-xr-x 2 root root 4096 2018-09-29 11:19 key
  355.  
  356. -rw-r--r-- 1 root root 0 2018-09-29 11:18 key.txt
  357.  
  358. drwxr-xr-x 5 root root 4096 2018-09-29 10:42 liangli2018
  359.  
  360. -rw-r--r-- 1 root root 0 2018-09-29 11:49 nihao.txt
  361.  
  362. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test1.txt
  363.  
  364. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test10.txt
  365.  
  366. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test2.txt
  367.  
  368. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test3.txt
  369.  
  370. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test4.txt
  371.  
  372. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test5.txt
  373.  
  374. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test6.txt
  375.  
  376. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test7.txt
  377.  
  378. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test8.txt
  379.  
  380. -rw-r--r-- 1 root root 0 2018-09-29 10:57 test9.txt
  381.  
  382. [root@oldbody tmp]#

2.7 cp  

不加参数的时候 只能拷贝文件

-a 相当于-dpr   

-d 若源文件为链接文件(link file),则复制链接文件属性而非档案本身  

-p 连同档案的属性一起复制过去,而非使用默认属性    

-r 递归 用于复制目录

假如tmp目录下有一个test.txt文件   mnt目录下有一个test.txt文件,现在将tmp目录下的test.txt文件复制到mnt目录下  默认情况下 会进行相应的提示

输入命令 \cp /mnt/test.txt /tmp/   不提示 别名的原因 \就是屏蔽别名

或者 /bin/cp /mnt/test.txt /tmp/    补全cp命令的路径也是不提示的  

因为cp vm rm属于危险的操作命令,有可能会对文件造成损坏,我们可以查看下系统现有的别名alias  可以输入命令unalias cp 直接删除cp的别名,也可以达到其效果 (不推荐使用)

cp命令   复制文件或目录

  1. [root@oldbody test]# ll
  2.  
  3. total 12
  4.  
  5. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  6.  
  7. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  8.  
  9. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  10.  
  11. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  12.  
  13. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  14.  
  15. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  16.  
  17. [root@oldbody test]# cp file3.txt file4.txt
  18.  
  19. [root@oldbody test]# ll
  20.  
  21. total 12
  22.  
  23. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  24.  
  25. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  26.  
  27. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  28.  
  29. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  30.  
  31. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  32.  
  33. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  34.  
  35. -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt
  36.  
  37. [root@oldbody test]#
  38.  
  39. cp -a -a等于-pdr 作用,复制过去的时候可以保证属性不变化 复制文件或目录保持文件或目录所有属性均不变化
  40.  
  41. [root@oldbody test]# ll
  42.  
  43. total 12
  44.  
  45. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  46.  
  47. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  48.  
  49. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  50.  
  51. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  52.  
  53. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  54.  
  55. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  56.  
  57. -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt
  58.  
  59. -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt
  60.  
  61. [root@oldbody test]#
  62.  
  63. -i 覆盖前会提示
  64.  
  65. [root@oldbody test]# alias cp
  66.  
  67. alias cp='cp -i'
  68.  
  69. [root@oldbody test]#
  70.  
  71.  
  72. [root@oldbody test]# cp -a file3.txt file5.txt
  73.  
  74. cp: overwrite `file5.txt'? ^C
  75.  
  76. [root@oldbody test]# \cp -a file3.txt file5.txt
  77.  
  78. [root@oldbody test]#
  79.  
  80.  
  81.  
  82. [root@oldbody test]# cp -a dir3 dir4
  83.  
  84. [root@oldbody test]# ll
  85.  
  86. total 16
  87.  
  88. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  89.  
  90. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  91.  
  92. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  93.  
  94. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir4
  95.  
  96. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  97.  
  98. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  99.  
  100. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  101.  
  102. -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt
  103.  
  104. -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt
  105.  
  106. [root@oldbody test]#
  107.  
  108.  
  109. A{B,C} 等价于 AB AC
  110.  
  111. [root@oldbody test]# cp -a dir{3,5}
  112.  
  113. [root@oldbody test]# ll
  114.  
  115. total 20
  116.  
  117. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  118.  
  119. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  120.  
  121. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  122.  
  123. drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4
  124.  
  125. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5
  126.  
  127. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  128.  
  129. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  130.  
  131. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  132.  
  133. -rw-r--r-- 1 root root 0 Jun 28 12:17 file4.txt
  134.  
  135. -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt
  136.  
  137. [root@oldbody test]#
  138.  
  139. cp /etc/ssh/sshd_config {,.ori} 相当于
  140.  
  141. cp /etc/ssh/sshd_config cp /etc/ssh/sshd_config.ori 一样
  142.  
  143. [root@oldbody test]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.ori} 备份网卡信息

2.8 mv      

move  移动文件或目录  移动就是剪切的意思  例子:mv /Tech /liangli    把Tech移动到liangli目录下  也有改名的功能

mv    移动文件和重命名   move(rename)files

  1. [root@oldbody test]# mv file{4,6}.txt
  2.  
  3. [root@oldbody test]# ll
  4.  
  5. total 20
  6.  
  7. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir1
  8.  
  9. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir2
  10.  
  11. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir3
  12.  
  13. drwxr-xr-x 3 root root 4096 Jun 28 12:30 dir4
  14.  
  15. drwxr-xr-x 2 root root 4096 Jun 28 11:48 dir5
  16.  
  17. -rw-r--r-- 1 root root 0 Jun 28 11:47 file1.txt
  18.  
  19. -rw-r--r-- 1 root root 0 Jun 28 11:47 file2.txt
  20.  
  21. -rw-r--r-- 1 root root 0 Jun 28 11:47 file3.txt
  22.  
  23. -rw-r--r-- 1 root root 0 Jun 28 11:47 file5.txt
  24.  
  25. -rw-r--r-- 1 root root 0 Jun 28 12:17 file6.txt
  26.  
  27.  
  28. No such file or directory 没有那个文件或目录
  29.  
  30.  
  31. mv 系统别名 -i参数 在覆盖前需要提示
  32.  
  33. [root@oldbody test]# alias
  34.  
  35. alias cp='cp -i'
  36.  
  37. alias l.='ls -d .* --color=auto'
  38.  
  39. alias ll='ls -l --color=auto'
  40.  
  41. alias ls='ls --color=auto'
  42.  
  43. alias mv='mv -i'
  44.  
  45. alias rm='rm -i'
  46.  
  47. alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
  48.  
  49. [root@oldbody test]#
  50.  
  51. 多个文件袋移动方式(必须得保证/dir1目录存在)
  52.  
  53. [root@oldbody test]# mv file1.txt file2.txt file3.txt file5.txt file6.txt dir1/t file6.txt dir1/
  54.  
  55. [root@oldbody test]# ls
  56.  
  57. dir1 dir2 dir3 dir4 dir5
  58.  
  59. [root@oldbody test]# cd dir1/
  60.  
  61. [root@oldbody dir1]# ls
  62.  
  63. file1.txt file2.txt file3.txt file5.txt file6.txt
  64.  
  65.  
  66. [root@oldbody test]# tree
  67.  
  68. .
  69.  
  70. |-- dir1
  71.  
  72. | |-- file1.txt
  73.  
  74. | |-- file2.txt
  75.  
  76. | |-- file3.txt
  77.  
  78. | |-- file5.txt
  79.  
  80. | `-- file6.txt
  81.  
  82. |-- dir2
  83.  
  84. |-- dir3
  85.  
  86. |-- dir4
  87.  
  88. | `-- dir3
  89.  
  90. `-- dir5
  91.  
  92.  
  93. 6 directories, 5 files
  94.  
  95. [root@oldbody test]#
  96.  
  97. 使用file dir1 可以查看dir1是文件还是目录
  98.  
  99. [root@oldbody test]# file dir1
  100.  
  101. dir1: directory
  102.  
  103.  
  104. 移动目录
  105.  
  106. 把前n-1个目录移动到最后一个目录(必须得保证dir5目录存在)
  107.  
  108. [root@oldbody test]# mv dir1 dir2 dir3 dir4 dir5
  109.  
  110. [root@oldbody test]# tree
  111.  
  112. .
  113.  
  114. `-- dir5
  115.  
  116. |-- dir1
  117.  
  118. | |-- file1.txt
  119.  
  120. | |-- file2.txt
  121.  
  122. | |-- file3.txt
  123.  
  124. | |-- file5.txt
  125.  
  126. | `-- file6.txt
  127.  
  128. |-- dir2
  129.  
  130. |-- dir3
  131.  
  132. `-- dir4
  133.  
  134. `-- dir3
  135.  
  136.  
  137. 6 directories, 5 files
  138.  
  139. [root@oldbody test]#

2.9 rm

remove(移除)删除目录和文件 -f(force)强制,-r(递归,用于删除目录) 强调删除命令要慎用,非常危险,删除前一定要先备份一份  因为删除后不可恢复

正确删除文件的姿势     

1,使用mv命令移动到/tmp(回收站)替代删除动作

2、通过cd命令到达目的目录    

然后通过find -type f(d) -name ‘’ | xargs  rm -f

或者    find -type f(d)-name “*.txt” -mtime +7 -exec rm {} \;

别名在你敲这条命令的时候生效的额,通过一些管道符传送给它的是不会生效的

2.10 rmdir

用于删除空目录 当目录不为空时 命令不起作用

-p参数 递归删除空目录

  1. [root@oldbody ~]#
  2.  
  3. [root@oldbody ~]# mkdir -p oldboy/oldboy1/oldboy2
  4.  
  5. [root@oldbody ~]# rmdir -p oldboy/oldboy1/oldboy2/
  6.  
  7. [root@oldbody ~]#

2.11 ln

link得缩写,可以创建硬链接与软连接

语法 ln 选项 源文件 目标文件

ln这个命令就是创建链接文件的,在默认不带参数的情况下,执行ln命令创建的链接是硬链接   如果使用ln -s创建链接则为软链接

硬链接    ln 源文件 目标文件  (硬链接生成时普通文件-字符)

软链接    ln -s 源文件  目标文件  (目标文件不能事先存在)(生成的符号链接l类型)

硬链接:

是通过inode来进行链接的   在linux文件系统中,多个文件名指向同一个inode是正常且允许的   硬链接文件就相当于文件的另外一个入口    硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件 ,以防止 误删  源数据 注意:目录不能作为硬链接

  1. [root@oldbody ~]# cat /etc/hosts
  2.  
  3. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  4.  
  5. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  6.  
  7. [root@oldbody ~]# ln /etc/hosts hard_link
  8.  
  9. [root@oldbody ~]# ll -ih /etc/hosts hard_link
  10.  
  11. 654109 -rw-r--r--. 3 root root 158 1 12 2010 /etc/hosts
  12.  
  13. 654109 -rw-r--r--. 3 root root 158 1 12 2010 hard_link
  14.  
  15. [root@oldbody ~]# rm -f /etc/hosts
  16.  
  17. [root@oldbody ~]# cat /etc/hosts
  18.  
  19. cat: /etc/hosts: 没有那个文件或目录
  20.  
  21. [root@oldbody ~]# cat hard_link
  22.  
  23. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  24.  
  25. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  26.  
  27. [root@oldbody ~]# ln hard_link /etc/hosts
  28.  
  29. [root@oldbody ~]# cat /etc/hosts
  30.  
  31. 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
  32.  
  33. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  34.  
  35. [root@oldbody ~]# ll -ih /etc/hosts hard_link
  36.  
  37. 654109 -rw-r--r--. 3 root root 158 1 12 2010 /etc/hosts
  38.  
  39. 654109 -rw-r--r--. 3 root root 158 1 12 2010 hard_link
  40.  
  41. [root@oldbody ~]#

硬链接知识小结:

1、具有相同inode节点号的多个文件是互为硬链接文件

2、删除硬链接文件或者删除源文件任意之一,文件实体并未被删除

3、只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除

4、当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收(养成删除及多套环境测试的好习惯)

5、硬链接文件就是文件的另一个入口(相当于超市的前门,后门一样)

6、可以通过给文件设置硬链接文件,来防止重要文件被误删

7、通过执行命令 ln 源文件  硬链接文件  即可完成创建硬链接

8、硬链接文件是普通文件,因此可以用rm命令删除

9、对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0 (i_link)文件就被删除    i_link的查看方法(ls -l结果的第三列就是)

 

软连接  或者符号链接  相当于win的快捷方式 注意:软连接目录可以创建

ln -s 源文件 目标文件

软链接知识小结:

1、软链接类似win的快捷方式(可以通过readlink查看其指向)

2、软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体

3、删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径的内容了

4、失效的时候一般是白字红底闪烁提示 

5、执行命令 ln -s 源文件 软链接文件   即可完成创建软链接(目标不能存在)

6、软链接和源文件是不同类型的文件,也是不同的文件,inode号也不相同

7、软链接文件类型为(l),可以用rm命令

  1. [root@oldbody ~]# ln -s /etc/hosts soft_link
  2.  
  3. [root@oldbody ~]# ll -ih /etc/hosts hard_link soft_link
  4.  
  5. 654109 -rw-r--r--. 3 root root 158 1 12 2010 /etc/hosts
  6.  
  7. 654109 -rw-r--r--. 3 root root 158 1 12 2010 hard_link
  8.  
  9. 915785 lrwxrwxrwx 1 root root 10 9 29 13:34 soft_link -> /etc/hosts

全局结论:

删除源文件 对硬链接没有影响   但是会导致软链接文件失效,白字红底闪烁

删除源文件和硬链接文件   整个文件会真正的被删除

很多硬件设备中的快照功能  就是利用了硬链接的原理

  1. [root@oldbody liangli2018]# ll -ihd oldboy oldboy/. oldboy/test/..
  2.  
  3. 915805 drwxr-xr-x 3 root root 4.0K 9 29 13:44 oldboy
  4.  
  5. 915805 drwxr-xr-x 3 root root 4.0K 9 29 13:44 oldboy/.
  6.  
  7. 915805 drwxr-xr-x 3 root root 4.0K 9 29 13:44 oldboy/test/..

目录的链接小结:

1、对于目录  不可以创建硬链接  但可以创建软链接(原因是目录可以跨文件系统的)

2、对于目录的软链接是生产场景运维中常用的技巧

3、目录的硬链接不能跨越文件系统(从硬链接原理可以理解 硬链接需要有相同的inode值)

4、每个目录下面都有一个硬链接 “.” 号和对应上级目录的硬链接“..”

5、再父目录里创建一个子目录,父目录的链接数增加1(每个子目录里都有..来指向父目录)但是再父目录里创建文件,父目录的链接数不会增加

2.12 readlink

查看符号链接文件的内容

  1. [root@oldbody ~]# readlink soft_link
  2.  
  3. /etc/hosts
  4.  
  5. [root@oldbody ~]#

2.13 find

查找目录下的文件

语法格式 find  路径  操作语句

pathname 命令所查找的目录路径 如.表示当前目录,用/表示根目录

-maxdepth levels 查找的最大目录级数,levels为自然数

-type 文件类型(f(file),d(directory),c(character字母),b(block块)。s(socket),l(link),

-name “文件名” 支持通配符(* ? []等)

-mtime 后面接时间 按修改时间查找 +7 7天以前 、7 第七天、-7最近7天

-atime 和-ctime 按照访问时间和文件状态改变时间来查找文件

-exec  对匹配的文件执行该参数所给出的shell命令

! 取反   -a 取交集 -o 取并集

例子:find /Tech -type f   意思就是查找Tech下类型为文件的东西

find /Tech -type f -name 'oldboy.txt'   查找Tech下文件名为oldboy.txt的文件

find /Tech -type f -name ‘oldboy.txt’ -exec  rm {} \; 意思是对前面查找的文件进行删除的操作 {}表示find找到的内容 

find /Tech -type f -name '*.txt'      *号表示代表所有的文件   通配符

find /Tech -type f -name '*.txt' | xargs rm -f   把查找的内容通过管道   这个就相当于同时删除*.txt所有文件  等同于 rm -f /Tech/oldboy.txt /Tech/liangli.txt文件一样    其中xargs表示把*.txt做成一个文件,可以一起进行删除

find /log -type f -name '*.log' -mtime +15 | xargs rm -f    查找/log目录,删15天以前修改过的文件

find /log -type d -name '*oldboy' -mtime +30 | xargs rm -rf 查找/log目录,删修改日期在30天以前且以oldboy名称结尾的目录

  1. [root@oldbody oldboy]# ls
  2.  
  3. oldboy.txt passwd test.txt
  4.  
  5. [root@oldbody oldboy]# find /tmp/oldboy/ -type f ! -name "passwd" | xargs rm -f
  6.  
  7. [root@oldbody oldboy]# ls
  8.  
  9. passwd
  10.  
  11.  
  12. find的-delete参数
  13.  
  14. [root@oldbody key]# find . -type f -name "*.txt"
  15.  
  16. ./file3.txt
  17.  
  18. ./file1.txt
  19.  
  20. ./file2.txt
  21.  
  22. ./file4.txt
  23.  
  24. ./file5.txt
  25.  
  26. [root@oldbody key]# find . -type f -name "*.txt" -delete
  27.  
  28.  
  29. [root@oldbody data]# find /data/ -type f -name "*.txt" | xargs sed -i 's#oldgirll#oldboy#g'
  30.  
  31. oldboyl
  32.  
  33. oldboyl
  34.  
  35. oldboyl
  36.  
  37. oldboyl
  38.  
  39. [root@oldbody data]#
  40.  
  41. 方法二:
  42.  
  43. find /data -type f -name “*.txt -exec sed -i 's#oldgirll#oldboy#g' {} \;
  44.  
  45. 方法三:
  46.  
  47. sed -i 's#oldgirll#oldboy#g' `find /data -name “*.txt”`
  48.  
  49. 最高效的处理方法 先执行反引号里面的东西
  50.  
  51.  
  52. [root@oldbody key]# tar zcvf oldboy.gz.tar `find . -type d -name "oldboy"`
  53.  
  54. ./oldboy/
  55.  
  56. [root@oldbody key]# LL
  57.  
  58. -bash: LL: command not found
  59.  
  60. [root@oldbody key]# ll
  61.  
  62. 总用量 44
  63.  
  64. drwxr-xr-x 2 root root 4096 9 29 17:38 dir1.txt
  65.  
  66. drwxr-xr-x 2 root root 4096 9 29 17:38 dir2.txt
  67.  
  68. drwxr-xr-x 2 root root 4096 9 29 17:38 dir3.txt
  69.  
  70. drwxr-xr-x 2 root root 4096 9 29 17:38 dir4.txt
  71.  
  72. drwxr-xr-x 2 root root 4096 9 29 17:38 dir5.txt
  73.  
  74. -rw-r--r-- 1 root root 45 9 29 18:35 file1.txt
  75.  
  76. -rw-r--r-- 1 root root 0 9 29 17:38 file2.txt
  77.  
  78. -rw-r--r-- 1 root root 0 9 29 17:38 file3.txt
  79.  
  80. -rw-r--r-- 1 root root 0 9 29 17:38 file4.txt
  81.  
  82. -rw-r--r-- 1 root root 0 9 29 17:38 file5.txt
  83.  
  84. drwxr-xr-x 2 root root 4096 9 29 18:34 key
  85.  
  86. -rw-r--r-- 1 root root 109 9 29 18:39 key.gz
  87.  
  88. drwxr-xr-x 2 root root 4096 9 29 18:39 oldboy
  89.  
  90. -rw-r--r-- 1 root root 115 9 29 18:49 oldboy.gz.tar
  91.  
  92. drwxr-xr-x 2 root root 4096 9 29 18:40 oldgirl
  93.  
  94. [root@oldbody key]#
  95.  
  96.  
  97. [root@oldbody key]# find . -type d -name "oldgirl" | xargs tar zcvf oldgirl.gz.tar
  98.  
  99. ./oldgirl/
  100.  
  101. [root@oldbody key]# ll
  102.  
  103. 总用量 48
  104.  
  105. drwxr-xr-x 2 root root 4096 9 29 17:38 dir1.txt
  106.  
  107. drwxr-xr-x 2 root root 4096 9 29 17:38 dir2.txt
  108.  
  109. drwxr-xr-x 2 root root 4096 9 29 17:38 dir3.txt
  110.  
  111. drwxr-xr-x 2 root root 4096 9 29 17:38 dir4.txt
  112.  
  113. drwxr-xr-x 2 root root 4096 9 29 17:38 dir5.txt
  114.  
  115. -rw-r--r-- 1 root root 45 9 29 18:35 file1.txt
  116.  
  117. -rw-r--r-- 1 root root 0 9 29 17:38 file2.txt
  118.  
  119. -rw-r--r-- 1 root root 0 9 29 17:38 file3.txt
  120.  
  121. -rw-r--r-- 1 root root 0 9 29 17:38 file4.txt
  122.  
  123. -rw-r--r-- 1 root root 0 9 29 17:38 file5.txt
  124.  
  125. drwxr-xr-x 2 root root 4096 9 29 18:34 key
  126.  
  127. -rw-r--r-- 1 root root 109 9 29 18:39 key.gz
  128.  
  129. drwxr-xr-x 2 root root 4096 9 29 18:39 oldboy
  130.  
  131. -rw-r--r-- 1 root root 115 9 29 18:49 oldboy.gz.tar
  132.  
  133. drwxr-xr-x 2 root root 4096 9 29 18:40 oldgirl
  134.  
  135. -rw-r--r-- 1 root root 115 9 29 18:50 oldgirl.gz.tar
  136.  
  137. [root@oldbody key]#
  138.  
  139.  
  140. [root@oldbody tmp]# find /data/ -type f -name "*.log" -size +1M -mtime +30 -exec mv {} /tmp \;
  141.  
  142. [root@oldbody tmp]#
  143.  
  144. [root@oldbody test]# find -type f -mtime -7
  145.  
  146. ./dir5/dir1/file3.txt
  147.  
  148. ./dir5/dir1/file6.txt
  149.  
  150. ./dir5/dir1/file1.txt
  151.  
  152. ./dir5/dir1/file2.txt
  153.  
  154. ./dir5/dir1/file5.txt
  155.  
  156. ./.ori
  157.  
  158. !还有取反的意思 把除了file1.txt文件以外的文件查找出来
  159.  
  160. [root@oldbody test]# find -type f -name 'file1.txt'
  161.  
  162. ./dir5/dir1/file1.txt
  163.  
  164. [root@oldbody test]# find -type f ! -name 'file1.txt'
  165.  
  166. ./dir5/dir1/file3.txt
  167.  
  168. ./dir5/dir1/file6.txt
  169.  
  170. ./dir5/dir1/file2.txt
  171.  
  172. ./dir5/dir1/file5.txt
  173.  
  174. ./.ori
  175.  
  176. [root@oldbody test]#
  177.  
  178.  
  179. find /root -type f -exec ls -l {} \;
  180.  
  181. 上面红色的部分可以是其他任何命令,例如:lsmvcp等命令
  182.  
  183. {} 代表前面找出的file1.txt文件(内容) \;作为转义字符 后面的;作为结束标志
  184.  
  185. [root@oldbody test]# find . -type f -name 'file1.txt' -exec mv {} /tmp/ \; 是正确的
  186.  
  187. [root@oldbody key]# find . -type f -name "*.txt" -exec ls -l {} \;
  188.  
  189. -rw-r--r-- 1 root root 0 9 29 17:38 ./file3.txt
  190.  
  191. -rw-r--r-- 1 root root 0 9 29 17:38 ./file1.txt
  192.  
  193. -rw-r--r-- 1 root root 0 9 29 17:38 ./file2.txt
  194.  
  195. -rw-r--r-- 1 root root 0 9 29 17:38 ./file4.txt
  196.  
  197. -rw-r--r-- 1 root root 0 9 29 17:38 ./file5.txt
  198.  
  199. [root@oldbody key]#
  200.  
  201. find还有一个参数-ok 其实和-exec用法一样,唯一区别就是使用-ok的话 在删除之前会给出提示 需要管理员确认后方可删除,计较安全
  202.  
  203. [root@oldbody key]# find . -type f -name "*.txt" -ok ls -l {} \;
  204.  
  205. < ls ... ./file3.txt > ? y
  206.  
  207. -rw-r--r-- 1 root root 0 9 29 17:38 ./file3.txt
  208.  
  209. < ls ... ./file1.txt > ? y
  210.  
  211. -rw-r--r-- 1 root root 0 9 29 17:38 ./file1.txt
  212.  
  213. < ls ... ./file2.txt > ? y
  214.  
  215. -rw-r--r-- 1 root root 0 9 29 17:38 ./file2.txt
  216.  
  217. < ls ... ./file4.txt > ? y
  218.  
  219. -rw-r--r-- 1 root root 0 9 29 17:38 ./file4.txt
  220.  
  221. < ls ... ./file5.txt > ? y
  222.  
  223. -rw-r--r-- 1 root root 0 9 29 17:38 ./file5.txt
  224.  
  225. [root@oldbody key]#
  226.  
  227. [root@oldbody test]# ls /tmp/
  228.  
  229. 123.log file1.txt oldboy
  230.  
  231. [root@oldbody test]#
  232.  
  233. [root@oldbody test]# find -type f -name 'file2.txt' | xargs -i mv {} /tmp/
  234.  
  235. [root@oldbody test]# ls /tmp
  236.  
  237. 123.log file1.txt file2.txt oldboy
  238.  
  239. -i参数就是把前面查找的内容丢到{}中
  240.  
  241.  
  242. [root@oldbody test]# mv `find -type f -name 'file3.txt'` /tmp/
  243.  
  244. [root@oldbody test]# ls /tmp
  245.  
  246. 123.log file1.txt file2.txt file3.txt oldboy
  247.  
  248. [root@oldbody test]#
  249.  
  250. mv中-t参数将源和目标反转过来
  251.  
  252. find . -type f -name file3.txt | xargs mv -t dir2/
  253.  
  254.  
  255. no such file or directory 没有这样的文件或目录
  256.  
  257. 按照目录或者文件的权限来进行查找 -perm 644 参数
  258.  
  259. [root@oldbody key]# ll
  260.  
  261. 总用量 20
  262.  
  263. drwxr-xr-x 2 root root 4096 9 29 17:38 dir1.txt
  264.  
  265. drwxr-xr-x 2 root root 4096 9 29 17:38 dir2.txt
  266.  
  267. drwxr-xr-x 2 root root 4096 9 29 17:38 dir3.txt
  268.  
  269. drwxr-xr-x 2 root root 4096 9 29 17:38 dir4.txt
  270.  
  271. drwxr-xr-x 2 root root 4096 9 29 17:38 dir5.txt
  272.  
  273. -rw-r--r-- 1 root root 0 9 29 17:38 file1.txt
  274.  
  275. -rw-r--r-- 1 root root 0 9 29 17:38 file2.txt
  276.  
  277. -rw-r--r-- 1 root root 0 9 29 17:38 file3.txt
  278.  
  279. -rw-r--r-- 1 root root 0 9 29 17:38 file4.txt
  280.  
  281. -rw-r--r-- 1 root root 0 9 29 17:38 file5.txt
  282.  
  283. [root@oldbody key]#
  284.  
  285. [root@oldbody key]#
  286.  
  287. [root@oldbody key]# find . -type f -perm 644
  288.  
  289. ./file3.txt
  290.  
  291. ./file1.txt
  292.  
  293. ./file2.txt
  294.  
  295. ./file4.txt
  296.  
  297. ./file5.txt
  298.  
  299. [root@oldbody key]#
  300.  
  301. 参数-size 按大小查找文件
  302.  
  303. [root@oldbody key]# find . -type f -size -1M 小于1M
  304.  
  305. ./file3.txt
  306.  
  307. ./file1.txt
  308.  
  309. ./file2.txt
  310.  
  311. ./file4.txt
  312.  
  313. ./file5.txt
  314.  
  315. [root@oldbody key]#
  316.  
  317.  
  318. findxargs和-exec的区别
  319.  
  320. -exec 该参数是将查找的结果文件名逐个传递给后面的命令执行,如果文件比较多则执行效率会比较低 文件名有空格等特殊字符照常处理
  321.  
  322. xargs 该命令是将查找的结果一次性传递给后面的命令执行,命令执行效率高,可以使用-n参数控制一次传递给文件的个数 处理特殊的文件名(如:文件名有空格)需要采用特殊的方式
  323.  
  324. [root@oldbody key]# find . -type f -name "*.txt"
  325.  
  326. ./file3.txt
  327.  
  328. ./file1.txt
  329.  
  330. ./file2.txt
  331.  
  332. ./file4.txt
  333.  
  334. ./file5.txt
  335.  
  336. [root@oldbody key]# find . -type f -name "*.txt" -exec echo mingtiannihao {} \;
  337.  
  338. mingtiannihao ./file3.txt
  339.  
  340. mingtiannihao ./file1.txt
  341.  
  342. mingtiannihao ./file2.txt
  343.  
  344. mingtiannihao ./file4.txt
  345.  
  346. mingtiannihao ./file5.txt
  347.  
  348. [root@oldbody key]# find . -type f -name "*.txt" | xargs echo mingtiannihao
  349.  
  350. mingtiannihao ./file3.txt ./file1.txt ./file2.txt ./file4.txt ./file5.txt
  351.  
  352. [root@oldbody key]# find . -type f -name "*.txt" | xargs -n 3 echo mingtiannihao
  353.  
  354. mingtiannihao ./file3.txt ./file1.txt ./file2.txt
  355.  
  356. mingtiannihao ./file4.txt ./file5.txt
  357.  
  358. [root@oldbody key]#
  359.  
  360. [root@oldbody key]# touch "hello word.txt"
  361.  
  362. [root@oldbody key]# touch mingtian\ nihao.txt
  363.  
  364. [root@oldbody key]# ll
  365.  
  366. 总用量 0
  367.  
  368. -rw-r--r-- 1 root root 0 9 29 14:23 hello word.txt
  369.  
  370. -rw-r--r-- 1 root root 0 9 29 14:25 mingtian nihao.txt
  371.  
  372. [root@oldbody key]#
  373.  
  374. [root@oldbody key]# find . -type f -name "*.txt" |xargs rm
  375.  
  376. rm: 无法删除"./hello": 没有那个文件或目录
  377.  
  378. rm: 无法删除"word.txt": 没有那个文件或目录
  379.  
  380. rm: 无法删除"./mingtian": 没有那个文件或目录
  381.  
  382. rm: 无法删除"nihao.txt": 没有那个文件或目录
  383.  
  384. [root@oldbody key]#
  385.  
  386. [root@oldbody key]# find . -type f -name "*.txt" -print0|xargs -0 rm
  387.  
  388. [root@oldbody key]# ll
  389.  
  390. 总用量 0
  391.  
  392. [root@oldbody key]#

2.14 xargs

将标准输入转换成命令行参数

三行文本变成一行文本了

  1. [root@oldbody test]# cat test.txt
  2.  
  3. 1 2 3 4 5 6
  4.  
  5. 7 8 9
  6.  
  7. 10 11
  8.  
  9. [root@oldbody test]# xargs < test.txt
  10.  
  11. 1 2 3 4 5 6 7 8 9 10 11
  12.  
  13. [root@oldbody test]#
  14.  
  15. -n 参数 -n 4 4个字符为一组
  16.  
  17. [root@oldbody test]# xargs -n 4 < test.txt
  18.  
  19. 1 2 3 4
  20.  
  21. 5 6 7 8
  22.  
  23. 9 10 11
  24.  
  25. [root@oldbody test]#
  26.  
  27. 自定义分隔符-d参数
  28.  
  29. [root@oldbody ~]# echo splitXsplitXsplitXsplitX |xargs -d X
  30.  
  31. split split split split
  32.  
  33. [root@oldbody ~]# echo splitXsplitXsplitXsplitX |xargs -d X -n 2
  34.  
  35. split split
  36.  
  37. split split
  38.  
  39. -i 参数 把前面找到的文件命令和 {} 进行关联 用参数i来实现
  40.  
  41. [root@oldbody key]# find . -type f -name "file*"
  42.  
  43. ./file3.txt
  44.  
  45. ./file1.txt
  46.  
  47. ./file2.txt
  48.  
  49. [root@oldbody key]# find . -type f -name "file*" | xargs -i mv {} dir1/
  50.  
  51. [root@oldbody key]# ll
  52.  
  53. 总用量 4
  54.  
  55. drwxr-xr-x 2 root root 4096 9 29 14:14 dir1
  56.  
  57. [root@oldbody key]# tree
  58.  
  59. .
  60.  
  61. └── dir1
  62.  
  63. ├── file1.txt
  64.  
  65. ├── file2.txt
  66.  
  67. └── file3.txt
  68.  
  69.  
  70. 1 directory, 3 files
  71.  
  72. [root@oldbody key]#
  73.  
  74. 结合find使用xargs的特殊案例 xargs -0(数字0
  75.  
  76. [root@oldbody key]# touch "hello word.txt"
  77.  
  78. [root@oldbody key]# touch mingtian\ nihao.txt
  79.  
  80. [root@oldbody key]# ll
  81.  
  82. 总用量 0
  83.  
  84. -rw-r--r-- 1 root root 0 9 29 14:23 hello word.txt
  85.  
  86. -rw-r--r-- 1 root root 0 9 29 14:25 mingtian nihao.txt
  87.  
  88. [root@oldbody key]#
  89.  
  90. [root@oldbody key]# find . -type f -name "*.txt" |xargs rm
  91.  
  92. rm: 无法删除"./hello": 没有那个文件或目录
  93.  
  94. rm: 无法删除"word.txt": 没有那个文件或目录
  95.  
  96. rm: 无法删除"./mingtian": 没有那个文件或目录
  97.  
  98. rm: 无法删除"nihao.txt": 没有那个文件或目录
  99.  
  100. [root@oldbody key]#
  101.  
  102. [root@oldbody key]# find . -type f -name "*.txt" -print0|xargs -0 rm
  103.  
  104. [root@oldbody key]# ll
  105.  
  106. 总用量 0
  107.  
  108. [root@oldbody key]#

2.15 rename

rename  from to file  重新命名文件

rename

from   代表需要替换或要处理的字符  一般是文件的一部分 或者是文件的扩展名

to      把前面form代表的内容替换为to代表的内容即重命名处理后的结果

file    就是我们需要处理的文件

  1. [root@oldboy test]# touch shu_102999_{1..5}_finished.jpg
  2.  
  3. [root@oldboy test]#
  4.  
  5. [root@oldboy test]#
  6.  
  7. [root@oldboy test]# ll
  8.  
  9. 总用量 0
  10.  
  11. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_1_finished.jpg
  12.  
  13. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_2_finished.jpg
  14.  
  15. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_3_finished.jpg
  16.  
  17. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_4_finished.jpg
  18.  
  19. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_5_finished.jpg
  20.  
  21. [root@oldboy test]# rename "finished" "" * finished替换成空
  22.  
  23. [root@oldboy test]# ll
  24.  
  25. 总用量 0
  26.  
  27. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_1_.jpg
  28.  
  29. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_2_.jpg
  30.  
  31. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_3_.jpg
  32.  
  33. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_4_.jpg
  34.  
  35. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_5_.jpg
  36.  
  37. [root@oldboy test]# rename "jpg" "JPG" *
  38.  
  39. [root@oldboy test]# ll
  40.  
  41. 总用量 0
  42.  
  43. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_1_.JPG
  44.  
  45. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_2_.JPG
  46.  
  47. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_3_.JPG
  48.  
  49. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_4_.JPG
  50.  
  51. -rw-r--r-- 1 root root 0 9 19 11:38 shu_102999_5_.JPG
  52.  
  53. 11:38 shu_102999_5_.JPG
  54.  
  55. [root@oldboy test]# rename "102999" "1314" /root/test/*
  56.  
  57. -rw-r--r-- 1 root root 0 9月 19 11:38 shu_1314_1_.JPG
  58.  
  59. -rw-r--r-- 1 root root 0 9月 19 11:38 shu_1314_2_.JPG
  60.  
  61. -rw-r--r-- 1 root root 0 9月 19 11:38 shu_1314_3_.JPG
  62.  
  63. -rw-r--r-- 1 root root 0 9月 19 11:38 shu_1314_4_.JPG
  64.  
  65. -rw-r--r-- 1 root root 0 9月 19 11:38 shu_1314_5_.JPG
  66.  
  67. [root@oldboy test]#

2.16 basename

basename命令用于显示去除路径和文件后缀部分的文件名或目录名

  1. [root@oldboy test]# ll
  2.  
  3. 总用量 0
  4.  
  5. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_1_.JPG
  6.  
  7. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_2_.JPG
  8.  
  9. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_3_.JPG
  10.  
  11. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_4_.JPG
  12.  
  13. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_5_.JPG
  14.  
  15. [root@oldboy test]# basename /root/test/_1314_1_.JPG
  16.  
  17. _1314_1_.JPG
  18.  
  19. [root@oldboy test]# basename /root/test/_1314_1_.JPG .JPG
  20.  
  21. _1314_1_
  22.  
  23. [root@oldboy test]# basename /root/test/_1314_1_.JPG _.JPG
  24.  
  25. _1314_1
  26.  
  27. [root@oldboy test]#

2.17 dirname

显示文件或目录名

  1. [root@oldboy test]# ll
  2.  
  3. 总用量 0
  4.  
  5. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_1_.JPG
  6.  
  7. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_2_.JPG
  8.  
  9. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_3_.JPG
  10.  
  11. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_4_.JPG
  12.  
  13. -rw-r--r-- 1 root root 0 9 19 11:38 _1314_5_.JPG
  14.  
  15. [root@oldboy test]# dirname /root/test/_1314_1_.JPG
  16.  
  17. /root/test
  18.  
  19. [root@oldboy test]#

2.18 chattr

改变文件的扩展属性

chattr命令 只能是root用户用  其他用户使用不了

-a  只能向文件追加数据 你不能删除它  不能清空它

    用途:比如.bash_history文件中写入历史纪录,可以采用-i追加模式,只增不减

-i   设定文件不能被删除,改名,写入或新增内容

    用途:希望锁定的文件不能被删除或修改,比如/etc/passwd

-R  递归更改目录属性

+ 增加参数 – 移除参数 = 更新为指定参数

lsattr命令     所有用户都能够使用  显示文件的扩展属性

  1. [root@oldboy ~]# lsattr person.txt
  2.  
  3. -------------e- person.txt
  4.  
  5. [root@oldboy ~]#
  6.  
  7. [root@oldboy ~]#
  8.  
  9. [root@oldboy ~]# chattr +a person.txt
  10.  
  11. [root@oldboy ~]# lsattr person.txt
  12.  
  13. -----a-------e- person.txt
  14.  
  15. [root@oldboy ~]#
  16.  
  17.  
  18. [root@oldboy ~]# rm -f person.txt
  19.  
  20. rm: 无法删除"person.txt": 不允许的操作
  21.  
  22. [root@oldboy ~]# > person.txt
  23.  
  24. -bash: person.txt: 不允许的操作
  25.  
  26. [root@oldboy ~]# echo 111 >> person.txt
  27.  
  28. [root@oldboy ~]# cat person.txt
  29.  
  30. 101oldboyCEO
  31.  
  32. 102zhangyaoCTO
  33.  
  34. 103AlexCOO
  35.  
  36. 104yyCFO
  37.  
  38. 105feixueCIO
  39.  
  40. 011111111
  41.  
  42. 0111111100
  43.  
  44. 111
  45.  
  46. [root@oldboy ~]#
  47.  
  48. -i 就是加锁
  49.  
  50. [root@oldboy ~]# chattr +i .bash_history
  51.  
  52. [root@oldboy ~]# lsattr .bash_history
  53.  
  54. ----i--------e- .bash_history
  55.  
  56. [root@oldboy ~]#
  57.  
  58. [root@oldboy ~]# >.bash_history
  59.  
  60. -bash: .bash_history: 权限不够
  61.  
  62. [root@oldboy ~]# echo 1111>>.bash_history
  63.  
  64. -bash: .bash_history: 权限不够
  65.  
  66. [root@oldboy ~]# rm -f .bash_history
  67.  
  68. rm: 无法删除".bash_history": 不允许的操作
  69.  
  70. [root@oldboy ~]#
  71.  
  72.  
  73. [root@oldbody key]# tree
  74.  
  75. .
  76.  
  77. ├── 123
  78.  
  79. └── mintain
  80.  
  81. ├── 456
  82.  
  83. └── 789
  84.  
  85.  
  86. 4 directories, 0 files
  87.  
  88. [root@oldbody key]# chattr +a -R 123
  89.  
  90. [root@oldbody key]# lsattr
  91.  
  92. -------------e- ./456
  93.  
  94. -------------e- ./789
  95.  
  96. -----a-------e- ./123
  97.  
  98. [root@oldbody key]# cd 123
  99.  
  100. [root@oldbody 123]# ll
  101.  
  102. 总用量 4
  103.  
  104. drwxr-xr-x 2 root root 4096 9 29 14:57 mintain
  105.  
  106. [root@oldbody 123]# lsattr
  107.  
  108. -----a-------e- ./mintain

2.19 file

file  后面接文件或目录 查看文件类型

  1. [root@oldboy ~]# file xiaomi.txt
  2.  
  3. xiaomi.txt: ASCII text
  4.  
  5. [root@oldbody ~]# file *
  6.  
  7. 1.txt: ASCII text
  8.  
  9. anaconda-ks.cfg: ASCII English text
  10.  
  11. hard_link: ASCII text
  12.  
  13. install.log: UTF-8 Unicode text
  14.  
  15. install.log.syslog: ASCII text
  16.  
  17. key: directory
  18.  
  19. key1: symbolic link to `key'
  20.  
  21. liangli: directory
  22.  
  23. liangli2018: directory
  24.  
  25. oldboy.txt: ASCII text
  26.  
  27. soft_link: symbolic link to `/etc/hosts'

2.20 md5sum 

-c  从指定文件中读取MD5校验值,并进行校验

计算和校验文件的md5值 (md5值是唯一的 两个文件如果md5一样的话 证明是同一个文件)源文件和硬链接文件和软链接文件md5sum是一样的

  1. [root@oldboy ~]# ln xiaomi.txt xiaomi2.txt
  2.  
  3. [root@oldboy ~]# md5sum xiaomi.txt
  4.  
  5. d41d8cd98f00b204e9800998ecf8427e xiaomi.txt
  6.  
  7. [root@oldboy ~]# md5sum xiaomi2.txt
  8.  
  9. d41d8cd98f00b204e9800998ecf8427e xiaomi2.txt
  10.  
  11. [root@oldboy ~]# md5sum xiaomi3.txt
  12.  
  13. d41d8cd98f00b204e9800998ecf8427e xiaomi3.txt
  14.  
  15. [root@oldboy ~]#
  16.  
  17. [root@oldboy ~]# md5sum xiaomi.txt >md5.log
  18.  
  19. [root@oldboy ~]# cat md5.log
  20.  
  21. d41d8cd98f00b204e9800998ecf8427e xiaomi.txt
  22.  
  23. [root@oldboy ~]# md5sum -c md5.log 显示校验结果是否成功
  24.  
  25. xiaomi.txt: 确定
  26.  
  27. [root@oldboy ~]#
  28.  
  29. 模拟网络波动造成现象
  30.  
  31. [root@oldboy ~]# echo "1111">>xiaomi.txt
  32.  
  33. [root@oldboy ~]# md5sum xiaomi.txt
  34.  
  35. 1f18348f32c9a4694f16426798937ae2 xiaomi.txt
  36.  
  37. [root@oldboy ~]# md5sum -c md5.log
  38.  
  39. xiaomi.txt: 失败
  40.  
  41. md5sum: 警告:1/1 生成的校验和不匹配
  42.  
  43. [root@oldboy ~]#

2.21 chown

改变文件或目录的用户和用户组

chown命令  只能是root用户使用  改变文件的属主和属组(就是用户和用户组)

chown  用户  文件或目录

chown  :用户组   文件或目录

chown   用户:用户组   文件或目录   其中:可以用.号代替

-R  就是递归的意思 

  1. [root@oldboy ~]# chown oldboy test.txt
  2.  
  3. [root@oldboy ~]# ll test.txt
  4.  
  5. -rw-r--r-- 2 oldboy root 419 9 19 10:01 test.txt
  6.  
  7. [root@oldboy ~]#
  8.  
  9. 这个前提条件是oldboy用户必须在/etc/passed 和/etc/group 存在
  10.  
  11. [root@oldboy ~]# chown :user1 test.txt
  12.  
  13. [root@oldboy ~]# ll test.txt
  14.  
  15. -rw-r--r-- 2 oldboy user1 419 9 19 10:01 test.txt
  16.  
  17. [root@oldboy ~]#
  18.  
  19. [root@oldboy ~]# chown root.root test.txt
  20.  
  21. [root@oldboy ~]# ll test.txt
  22.  
  23. -rw-r--r-- 2 root root 419 9 19 10:01 test.txt
  24.  
  25. [root@oldboy ~]#
  26.  
  27. -R 就是递归的意思
  28.  
  29. [root@oldboy test]# pwd
  30.  
  31. /root/test
  32.  
  33. [root@oldboy test]# chown -R oldboy.oldboy /root/test
  34.  
  35. [root@oldboy test]# ll
  36.  
  37. 总用量 0
  38.  
  39. -rw-r--r-- 1 oldboy oldboy 0 9 19 11:38 _1314_1_.JPG
  40.  
  41. -rw-r--r-- 1 oldboy oldboy 0 9 19 11:38 _1314_2_.JPG
  42.  
  43. -rw-r--r-- 1 oldboy oldboy 0 9 19 11:38 _1314_3_.JPG
  44.  
  45. -rw-r--r-- 1 oldboy oldboy 0 9 19 11:38 _1314_4_.JPG
  46.  
  47. -rw-r--r-- 1 oldboy oldboy 0 9 19 11:38 _1314_5_.JPG
  48.  
  49. [root@oldboy test]#

2.22 chmod

改变文件或目录的权限

chmod命令   可以是root用户用  也可以是这个文件的属主使用  改变文件或目录权限

-R 递归参数

例如: rwxr-xr-x  9个字符  三个权限是一组

前三位叫属主权限位 /用户权限位    假如我root用户对oldboy具有读写执行权限位

r-xr  是用户组对应的权限   当有人加入到用户组的话,就对应这个权限位

r-w  其他用户权限位     

 

+        加入

-             减去

=        设置

 

r       4    读

w      2    写

x       1    执行

-       0    无

 

用户类型

u       user    用户

g       group   用户组

o       Other    其他

a        ALL    总和

  1. [root@oldboy ~]# ll test.txt
  2.  
  3. -rw-r--r-- 2 root root 419 9 19 10:01 test.txt
  4.  
  5. [root@oldboy ~]# chmod u=x,g=w,o=rwx test.txt
  6.  
  7. [root@oldboy ~]# ll test.txt
  8.  
  9. ---x-w-rwx 2 root root 419 9 19 10:01 test.txt
  10.  
  11. [root@oldboy ~]# chmod o=--- test.txt
  12.  
  13. [root@oldboy ~]# ll test.txt
  14.  
  15. ---x-w---- 2 root root 419 9 19 10:01 test.txt
  16.  
  17. [root@oldboy ~]# chmod o-rwx test.txt
  18.  
  19. [root@oldboy ~]# ll test.txt
  20.  
  21. ---x-w---- 2 root root 419 9 19 10:01 test.txt
  22.  
  23. [root@oldboy ~]#
  24.  
  25. [root@oldboy ~]# chmod 421 test.txt
  26.  
  27. [root@oldboy ~]# ll test.txt
  28.  
  29. -r---w---x 2 root root 419 9 19 10:01 test.txt
  30.  
  31. [root@oldboy ~]#
  32.  
  33. [root@oldbody key]# tree
  34.  
  35. .
  36.  
  37. └── 123
  38.  
  39. └── mintain
  40.  
  41.  
  42. 2 directories, 0 files
  43.  
  44. [root@oldbody key]# chmod 744 -R 123/
  45.  
  46. [root@oldbody key]# ll
  47.  
  48. 总用量 4
  49.  
  50. drwxr--r-- 3 root root 4096 9 29 14:57 123
  51.  
  52. [root@oldbody key]# ll 123
  53.  
  54. 总用量 4
  55.  
  56. drwxr--r-- 2 root root 4096 9 29 14:57 mintain
  57.  
  58. [root@oldbody key]#

2.23 chgrp  

更改文件的用户组   基本被淘汰

  1. [root@oldboy ~]# ll test.txt
  2.  
  3. -r---w---x 2 root root 419 9 19 10:01 test.txt
  4.  
  5. [root@oldboy ~]# chgrp user1 test.txt
  6.  
  7. [root@oldboy ~]# ll test.txt
  8.  
  9. -r---w---x 2 root user1 419 9 19 10:01 test.txt
  10.  
  11. [root@oldboy ~]#

2.24 umask

显示或设置权限掩码

umask (默认权限分配的命令)为什么默认权限目录是755,文件权限是644  而不是其他的值呢

不管是操作系统还是网站,安全权限的临界点,目录755文件644 是相对安全的权限,并且用户为root 以及用户组root

以上权限兼顾了安全和使用,生产工作中一定要尽量要我们文件和目录达到以上默认的权限,包括用户和属组都是root,Linux系统默认权限的方针,允许浏览,查看,但是禁止创建和修改文件及内容以及执行

在linux下文件的默认权限是由umask值决定的,umask是通过八进制的数值来决定用户创建文件或目录的默认权限的,umask对应数值表示的是禁止的权限

超级用户

  1. [root@oldboy ~]# umask
  2.  
  3. 0022
  4.  
  5. [root@oldboy ~]#
  6.  
  7. 普通用户
  8.  
  9. [test@oldboy ~]$ umask
  10.  
  11. 0002
  12.  
  13. [test@oldboy ~]$
  14.  
  15. umask越小,权限越大,根据umask值计算文件权限3中方法
  16.  
  17. 文件的权限从666开始算起,umask都为偶数,直接相减,如果有奇数对应位+1
  18.  
  19. 比如:
  20.  
  21. 6 6 6
  22.  
  23. 0 2 2 -
  24.  
  25. ---------------
  26.  
  27. 6 4 4
  28.  
  29. [root@oldboy ~]# ll xiaomi.txt
  30.  
  31. -rw-r--r-- 2 root root 5 9 19 12:28 xiaomi.txt
  32.  
  33. [root@oldboy ~]#
  34.  
  35. [root@oldboy ~]#
  36.  
  37. [root@oldboy ~]# umask
  38.  
  39. 0022
  40.  
  41. [root@oldboy ~]#
  42.  
  43. [root@oldboy ~]# umask 044
  44.  
  45. [root@oldboy ~]# touch f044
  46.  
  47. [root@oldboy ~]# ll f044
  48.  
  49. -rw--w--w- 1 root root 0 9 20 11:54 f044
  50.  
  51. [root@oldboy ~]# umask 064
  52.  
  53. [root@oldboy ~]# touch liangli123.txt
  54.  
  55. [root@oldboy ~]# ll liangli123.txt
  56.  
  57. -rw-----w- 1 root root 0 9 20 11:56 liangli123.txt
  58.  
  59. [root@oldboy ~]#
  60.  
  61. [root@oldboy ~]# umask 043
  62.  
  63. [root@oldboy ~]# touch f043
  64.  
  65. [root@oldboy ~]# ll f043
  66.  
  67. -rw--w-r-- 1 root root 0 9 20 11:58 f043
  68.  
  69. [root@oldboy ~]# umask 055
  70.  
  71. [root@oldboy ~]# touch f055
  72.  
  73. [root@oldboy ~]# ll f055
  74.  
  75. -rw--w--w- 1 root root 0 9 20 11:59 f055
  76.  
  77. [root@oldboy ~]#
  78.  
  79. 对于目录的权限从777开始(不分奇偶)
  80.  
  81. [root@oldboy ~]# umask 065
  82.  
  83. [root@oldboy ~]# mkdir d065
  84.  
  85. [root@oldboy ~]# ll d065
  86.  
  87. 总用量 0
  88.  
  89. [root@oldboy ~]# ll -d d065
  90.  
  91. drwx--x-w- 2 root root 4096 9 20 12:02 d065
  92.  
  93. 上面的修改都是临时生效的,想要永久生效就需要修改配置文件/etc/profile或者/etc/bashrc
  94.  
  95. [root@oldbody ~]# sed -n '61,69p' /etc/profile
  96.  
  97. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
  98.  
  99. umask 002
  100.  
  101. else
  102.  
  103. umask 022
  104.  
  105. fi
  106.  
  107.  
  108. for i in /etc/profile.d/*.sh ; do
  109.  
  110. if [ -r "$i" ]; then
  111.  
  112. if [ "${-#*i}" != "$-" ]; then
  113.  
  114. [root@oldbody ~]# sed -n '57,68p' /etc/bashrc
  115.  
  116. fi
  117.  
  118. esac
  119.  
  120. }
  121.  
  122.  
  123. # By default, we want umask to get set. This sets it for non-login shell.
  124.  
  125. # Current threshold for system reserved uid/gids is 200
  126.  
  127. # You could check uidgid reservation validity in
  128.  
  129. # /usr/share/doc/setup-*/uidgid file
  130.  
  131. if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
  132.  
  133. umask 002
  134.  
  135. else
  136.  
  137. umask 022
  138.  
  139. [root@oldbody ~]#

几乎没有什么需求要修改必须要修改umask的,默认的umask是系统安全的临界点,是最合适的

若要修改的话,将umask 033放在配置文件的最后一行即可

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号