翼度科技»论坛 云主机 LINUX 查看内容

快速上手Linux核心命令(三):文件和目录操作命令

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
@
目录

前言

这期呢主要说一说Linux中文件与目录相关的命令,一共包含19个命令

cd 切换目录

1、简介
cd 是“change directory” 中每个单词的首字母,其功能是从当前目录切换到目标路径。
2、语法格式
  1. cd [参数选项] [目标路径]
复制代码
3、参数说明
这里呢只列出常用参数
参数选项参数说明-从当前目录切换到用户上一次所在目录~从当前目录切换到家目录,即假设当前登录的用户是xiezhr,执行命令后路径将切换到/home/xiezhr..从当前目录切换到上一级目录在使用cd命令时,配合“tab”键的自动补全功能,可以大大提高效率。
既然说到了切换路径,我们这里就说一说什么时相对路径?什么时绝对路径
简单来说,从“/”根目录开始的路径为绝对路径,不从“/”开始的为相对路径
/home/xiezhr、/home/user/local  是绝对路径,而  date/,webapp/log/ 为相对路径
4、实践操作
① 进入系统 /usr/local 目录 。这里我们会用到pwd命令来显示当前所在路径,这个命令我们会在下一个命令中讲,这里知道即可
  1. [root@xiezhr ~]# cd /usr/local/
  2. [root@xiezhr local]# pwd
  3. /usr/local
复制代码
② 切换到上级目录
  1. [root@xiezhr local]# pwd
  2. /usr/local
  3. [root@xiezhr local]# cd ..
  4. [root@xiezhr usr]# pwd
  5. /usr
复制代码
③ 切换到父目录的父目录
  1. [root@xiezhr local]# pwd
  2. /usr/local
  3. [root@xiezhr local]# cd ../../
  4. [root@xiezhr /]# pwd
  5. /
复制代码
④ 返回当前用户上一次所在的目录
  1. [root@xiezhr ~]# cd /usr/local/
  2. [root@xiezhr local]# cd /root/
  3. [root@xiezhr ~]# pwd
  4. /root
  5. [root@xiezhr ~]# cd -
  6. /usr/local
复制代码
⑤ 返回家目录【当前用户为root用户,家目录为/root】
  1. [root@xiezhr local]# cd /usr/local/
  2. [root@xiezhr local]# pwd
  3. /usr/local
  4. [root@xiezhr local]# cd ~
  5. [root@xiezhr ~]# pwd
  6. /root
复制代码
pwd 显示当前路径

1、简介
pwd 是“print working directory”每个单词的首字母,功能是打印/显示当前所在目录姐绝对路径。在实际工作中,我们经常会在各个目录之间切换,切换的多了,很容易忘记走到哪了,这时就需要有一幅地图指引我们,使我们不至于迷路。由此可见这个命令的重要性
2、语法格式
  1. pwd [参数选项]
复制代码
3、参数说明
一般不需要加参数
4、实践操作
① 进入到/usr/local后显示路径
  1. [root@xiezhr ~]# cd /usr/local/
  2. [root@xiezhr local]# pwd
  3. /usr/local
复制代码
ls 显示目录下内容及相关属性信息

1、简介
ls 是“list” 英文单词的缩写,功能是列出当前目录下的内容和内容属性信息。类似于DOS系统下的dir命令
2、语法格式
  1. ls [参数选项] [文件或目录]
复制代码
由于用的比较少,这里就不作说明了,大概知道就好了
3、参数说明
参数参数说明-l使用长格式列出文件即目录信息 相当于直接使用ll-a显示目录下的所有文件,包括.开头的隐藏文件-t根据最后修改时间(time)排序,默认是按文件名排序的-r以相反次序排序-F在条目后加上文件类型的只是符号(*、/、=、@、|中的一个)-d当遇到目录时,列出目录本身而非目录内文件-h以人类可读信息显示文件或目录大小,如1KB,23M,3GB等4、实践操作
① 直接使用ls命令,不带参数,显示当前目录下的文件和路径
  1. [root@xiezhr test]# ls
  2. a.txt  b.txt  c.txt  dir1  dir2  dir3
复制代码
②加上【-a】参数,显示所有文件,包含隐藏文件("."开头的为隐藏文件),如下所示,ls没有显示隐藏文件,ls -a 显示了隐藏文件.d.txt
  1. [root@xiezhr test]# ls
  2. a.txt  b.txt  c.txt  dir1  dir2  dir3[root@xiezhr test]# ls -a.  ..  a.txt  b.txt  c.txt  dir1  dir2  dir3  .d.txt
复制代码
③ 加上【-l】参数,显示文件目录的详细信息
这个参数时我们最常用的,这个命令会列出文件或目录类型、权限、所属组、创建修改时间(最后一次修改时间,如果时新创建的文件则为创建时间),需要熟练掌握
  1. [root@xiezhr test]# ls -l
  2. total 12
  3. -rw-r--r-- 1 root root    0 Mar 10 23:39 a.txt
  4. -rw-r--r-- 1 root root    0 Mar 10 23:39 b.txt
  5. -rw-r--r-- 1 root root    0 Mar 10 23:39 c.txt
  6. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1
  7. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2
  8. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3
复制代码
小技巧:上面的命令我们会发现,时间没显示年份,那么怎么才能显示出我们肉眼既可以看懂的时间呢?
  1. [root@xiezhr test]#  ls -l --time-style=long-iso
  2. total 16
  3. -rw-r--r-- 1 root root   22 2022-03-10 23:44 a.txt
  4. -rw-r--r-- 1 root root    0 2022-03-10 23:39 b.txt
  5. -rw-r--r-- 1 root root    0 2022-03-10 23:39 c.txt
  6. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1
  7. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2
  8. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3
复制代码
哇哦,上面命令这么长,使用起来真的不方便,我们给它起个别名吧,这样叫起来也比较方便
  1. [root@xiezhr test]# alias lst='ls -l --time-style=long-iso'
  2. [root@xiezhr test]# alias |grep lst
  3. alias lst='ls -l --time-style=long-iso'
  4. [root@xiezhr test]# lst
  5. total 16
  6. -rw-r--r-- 1 root root   22 2022-03-10 23:44 a.txt
  7. -rw-r--r-- 1 root root    0 2022-03-10 23:39 b.txt
  8. -rw-r--r-- 1 root root    0 2022-03-10 23:39 c.txt
  9. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir1
  10. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir2
  11. drwxr-xr-x 2 root root 4096 2022-03-10 23:38 dir3
复制代码
④ 加上【-F】参数,F是大写,在文件尾部加上文件类型符号(、/、=、@、|)中一个
**"
"表示普通可执行文件、"/"表示目录、"="表示套接字、"@"表示符号链接、"|"表示FIFOs**
具体文件类型可以参照【文件类型】这篇文章
  1. [root@xiezhr test]# ls -F
  2. a.txt  b.txt  c.txt  dir1/  dir2/  dir3/  # 三个目录尾部加上了/
复制代码
小技巧:通过【-F】参数,可以过滤出所有目录和普通文件
  1. [root@xiezhr test]# ls -F    # 当前路径下一共包含三个文件和三个目录
  2. a.txt  b.txt  c.txt  dir1/  dir2/  dir3/
  3. [root@xiezhr test]# ls -F|grep /  # 过滤出所有路径
  4. dir1/
  5. dir2/
  6. dir3/
  7. [root@xiezhr test]# ls -F|grep -v /  #过滤出普通文件
  8. a.txt
  9. b.txt
  10. c.txt
复制代码
⑤ 假设一个目录下面有很多很多个文件,我们忘记了最近改过的文件的名字(年纪大了,记性越来越不好),这时候要找出它,可以用如下命令
  1. [root@xiezhr test]# touch xiezhr.txt
  2. [root@xiezhr test]# ls -lt
  3. total 16
  4. -rw-r--r-- 1 root root    0 Mar 11 23:02 xiezhr.txt
  5. -rw-r--r-- 1 root root    0 Mar 11 22:52 tt.txt
  6. -rw-r--r-- 1 root root   22 Mar 10 23:44 a.txt
  7. -rw-r--r-- 1 root root    0 Mar 10 23:39 c.txt
  8. -rw-r--r-- 1 root root    0 Mar 10 23:39 b.txt
  9. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir3
  10. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir2
  11. drwxr-xr-x 2 root root 4096 Mar 10 23:38 dir1
复制代码
我们最近创建或修改的文件就排在最前面了,有没有很方便哦
当然了,可以让你最显目,也可以让你排到最后去。ls -lrt 即可按照时间倒序排。-r 是倒序的意思
mkdir 创建目录

1、简介
mkdir 是"make directoy" 英文单词的缩写,功能是创建目录。如果目录存在则提示已存在,不会继续创建
2、语法格式
  1. mkdir [参数选项] [目录]
复制代码
3、参数说明
参数参数说明-p递归创建目录。即可以父目录儿子目录孙子目录重孙目录....等一起创建-m创建目录的同时授予权限4、实践操作
① mkdir 不带任何参数
  1. [root@xiezhr test]# ls
  2. a.txt  b.txt  c.txt  dir1  dir2  dir3  tt.txt  xiezhr.txt[root@xiezhr test]# mkdir xiezhr[root@xiezhr test]# ls
  3. a.txt  b.txt  c.txt  dir1  dir2  dir3  tt.txt  xiezhr  xiezhr.txt
复制代码
② 同时创建多个目录
  1. [root@xiezhr test]# ls a.txt  b.txt  c.txt  dir1  dir2  dir3  tt.txt  xiezhr  xiezhr.txt[root@xiezhr test]# mkdir dir4 dir5 dir6[root@xiezhr test]# ls
  2. a.txt  b.txt  c.txt  dir1  dir2  dir3  dir4  dir5  dir6  tt.txt  xiezhr  xiezhr.txt
复制代码
③ 使用【-p】参数递归创建目录
  1. [root@xiezhr test]# ls
  2. a.txt  b.txt  c.txt  dir1  dir2  dir3  tt.txt  xiezhr.txt[root@xiezhr test]# mkdir -p xiezhr/test[root@xiezhr test]# tree.├── a.txt├── b.txt├── c.txt├── dir1├── dir2├── dir3├── tt.txt├── xiezhr│   └── test└── xiezhr.txt5 directories, 5 files
复制代码
④ 使用【-m】参数,创建目录同时授权
  1. [root@xiezhr test]# mkdir -m 755 dir
复制代码
tree 以树形结构显示目录下的内容

1、简介
tree 一看到这个命令,我们就知道是树的意思,当然了这里的树并非种的树,而是以树形结构显示目录下内容。
2、语法格式
  1. tree [参数选项] [目录]
复制代码
3、参数说明
参数参数说明-d只显示目录-L level遍历目录的最大层数,level为大于0的整数4、实践操作
注意:个别Linux版本可能没有默认安装tree,大家也不用慌,我们按照如下步骤安装即可

  • 下载安装包
  1. wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
复制代码

  • 解压安装包
  1. tar -zxvf tree-1.7.0.tgz
复制代码

  • 切换到解压后的目录
  1. cd tree-1.7.0
复制代码

  • 编译安装
  1. make install
复制代码

  • 大功告成,输入tree 命令回车
① 不带参数的tree
  1. [root@xiezhr test]# tree
  2. .
  3. ├── a.txt
  4. ├── b.txt
  5. ├── c.txt
  6. ├── dir
  7. ├── dir1
  8. ├── dir2
  9. ├── dir3
  10. ├── tt.txt
  11. ├── xiezhr
  12. │   └── test
  13. └── xiezhr.txt
  14. 6 directories, 5 files
复制代码
② 加上【-d】参数,只显示目录
  1. [root@xiezhr test]# tree -d
  2. .
  3. ├── dir
  4. ├── dir1
  5. ├── dir2
  6. ├── dir3
  7. └── xiezhr
  8.     └── test
  9. 6 directories
复制代码
③ 加上【-L leave】 列出目录下第leave层结构
  1. [root@xiezhr test]# tree -L 1
  2. .
  3. ├── a.txt
  4. ├── b.txt
  5. ├── c.txt
  6. ├── dir
  7. ├── dir1
  8. ├── dir2
  9. ├── dir3
  10. ├── tt.txt
  11. ├── xiezhr
  12. └── xiezhr.txt
  13. 5 directories, 5 files
复制代码
④ 加上【-f】显示完整的路径名称 加上【-i】则不显示树枝部分
  1. [root@xiezhr test]# tree -f
  2. .
  3. ├── ./a.txt
  4. ├── ./b.txt
  5. ├── ./c.txt
  6. ├── ./dir
  7. ├── ./dir1
  8. ├── ./dir2
  9. ├── ./dir3
  10. ├── ./tt.txt
  11. ├── ./xiezhr
  12. │   └── ./xiezhr/test
  13. └── ./xiezhr.txt
  14. 6 directories, 5 files
  15. [root@xiezhr test]# tree -i
  16. .
  17. a.txt
  18. b.txt
  19. c.txt
  20. dir
  21. dir1
  22. dir2
  23. dir3
  24. tt.txt
  25. xiezhr
  26. test
  27. xiezhr.txt
  28. 6 directories, 5 files
  29. [root@xiezhr test]# tree -fi
  30. .
  31. ./a.txt
  32. ./b.txt
  33. ./c.txt
  34. ./dir
  35. ./dir1
  36. ./dir2
  37. ./dir3
  38. ./tt.txt
  39. ./xiezhr
  40. ./xiezhr/test
  41. ./xiezhr.txt
  42. 6 directories, 5 files
复制代码
⑤ 加上【-F】参数区分目录和文件
  1. [root@xiezhr test]# tree -F
  2. .
  3. ├── a.txt
  4. ├── b.txt
  5. ├── c.txt
  6. ├── dir/
  7. ├── dir1/
  8. ├── dir2/
  9. ├── dir3/
  10. ├── tt.txt
  11. ├── xiezhr/
  12. │   └── test/
  13. └── xiezhr.txt
  14. 6 directories, 5 files
复制代码
尾部带/的为目录
touch 创建空白文件或改变文件的时间戳属性

1、简介
touch 是触摸的意思,摸一下文件可以创建空白文件或改变文件时间属性
touch 不能创建目录但是能改变目录的时间戳属性
2、语法格式
  1. touch [参数选项] [文件]
复制代码
3、参数说明
参数参数说明-a只更改文件最后访问时间-m只更改文件最后修改时间-d string使用字符串string代表的时间模板设置指定文件的时间属性4、实践操作
① 不带任何参数
  1. [root@xiezhr test]# touch xiezhr.txt
  2. [root@xiezhr test]# ls
  3. a.txt  b.txt  c.txt  dir  dir1  dir2  dir3  tt.txt  xiezhr  xiezhr.txt
复制代码
②更改文件时间戳属性(文件的时间戳属性:访问时间、修改时间、状态改变时间)

  • stat 查看文件时间戳属性
  • -m 更改文件修改时间
  • -a 更改文件的访问时间
  1. [root@xiezhr test]# stat xiezhr.txt
  2.   File: ‘xiezhr.txt’
  3.   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
  4. Device: fd01h/64769d    Inode: 2661        Links: 1
  5. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
  6. Access: 2022-03-12 21:04:32.681919249 +0800
  7. Modify: 2022-03-12 21:04:32.681919249 +0800
  8. Change: 2022-03-12 21:04:32.681919249 +0800
  9. Birth: -
  10. [root@xiezhr test]# touch -m xiezhr.txt
  11. [root@xiezhr test]# stat xiezhr.txt
  12.   File: ‘xiezhr.txt’
  13.   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
  14. Device: fd01h/64769d    Inode: 2661        Links: 1
  15. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
  16. Access: 2022-03-12 21:04:32.681919249 +0800
  17. Modify: 2022-03-12 21:08:22.344330251 +0800
  18. Change: 2022-03-12 21:08:22.344330251 +0800
  19. Birth: -
  20. [root@xiezhr test]# touch -a xiezhr.txt
  21. [root@xiezhr test]# stat xiezhr.txt
  22.   File: ‘xiezhr.txt’
  23.   Size: 0               Blocks: 0          IO Block: 4096   regular empty file
  24. Device: fd01h/64769d    Inode: 2661        Links: 1
  25. Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
  26. Access: 2022-03-12 21:08:42.528893719 +0800
  27. Modify: 2022-03-12 21:08:22.344330251 +0800
  28. Change: 2022-03-12 21:08:42.528893719 +0800
  29. Birth: -
复制代码
cp 复制文件或目录

1、简介
cp 是copy 英文单词的缩写,功能是复制文件或目录
2、语法格式
  1. cp [参数选项] [源文件] [目标文件]
复制代码
3、参数说明
参数参数说明-p复制时保持源文件的权限、时间属性-d如果复制的文件时符号链接,那么仅赋值符号链接本身,而且保留符号链接所指向的目标文件或目录-r递归复制目录,即复制目录下所有层级的子目录及文件-a等同于-p、-d、-r三个命令总和-i覆盖已有文件提示用户确认4、实践操作
① 将文件a.txt 复制为 aaa.txt
  1. [root@xiezhr test]# cp a.txt aaa.txt
  2. [root@xiezhr test]# ls
  3. aaa.txt  a.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
②复制目录,将dir 目录复制为dir_bak
  1. [root@xiezhr test]# ls
  2. aaa.txt  a.txt  b.txt  c.txt  dir  dir1  dir2  dir3  tt.txt  xiezhr  xiezhr.txt
  3. [root@xiezhr test]# cp -r dir dir_bak
  4. [root@xiezhr test]# ls
  5. aaa.txt  a.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
mv 移动或重命名文件

1、简介
mv 是 move 的缩写,功能是移动重命名文件
2、语法格式
  1. mv [参数选项] [源文件] [目标文件]
复制代码
3、参数说明
参数参数说明-f若目标文件已经存在,则不会询问直接覆盖-i若目标文件已存在,则会询问是否覆盖-n不覆盖已经存在的文件-u在源文件比目标文件新,或目标文件不存在时才进行移动4、实践操作
① 给文件改名(如果a1.txt 不存在,则将aaa.txt 重命名为a1.txt)
  1. [root@xiezhr test]# ls
  2. aaa.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  3. [root@xiezhr test]# mv aaa.txt a1.txt
  4. [root@xiezhr test]# ls
  5. a1.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
② 给文件重命名(如果a2.txt存在,则将a1.txt 覆盖为a2.txt)
  1. [root@xiezhr test]# ls
  2. a1.txt  a2.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  3. [root@xiezhr test]# mv a1.txt a2.txt
  4. mv: overwrite ‘a2.txt’? y
  5. [root@xiezhr test]# ls
  6. a2.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
③ 移动单个文件或多个文件
  1. [root@xiezhr test]# ls
  2. a2.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  3. [root@xiezhr test]# mv a2.txt dir/
  4. [root@xiezhr test]# ls
  5. b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  6. [root@xiezhr test]# mv b.txt c.txt dir/
  7. [root@xiezhr test]# ls
  8. dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
④移动目录 如果目录存在则将文件移动到目录中,如果不存在则将目录改名
  1. [root@xiezhr test]# ls
  2. a2.txt  b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  3. [root@xiezhr test]# mv a2.txt dir/
  4. [root@xiezhr test]# ls
  5. b.txt  c.txt  dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt
  6. [root@xiezhr test]# mv b.txt c.txt dir/
  7. [root@xiezhr test]# ls
  8. dir  dir1  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt[root@xiezhr test]# mv dir1 dir[root@xiezhr test]# lsdir  dir2  dir3  dir_bak  tt.txt  xiezhr  xiezhr.txt[root@xiezhr test]# mv dir2 dir5[root@xiezhr test]# lsdir  dir3  dir5  dir_bak  tt.txt  xiezhr  xiezhr.txt
复制代码
rm 删除文件或目录

1、简介

rm 时rmove 英文单词的缩写,功能时删除一个或多个文件、目录。rm是Linux中最危险的命令。如果删错了那只有跑路了~ 慎重慎重慎重
来源:https://www.cnblogs.com/xiezhr/p/17343212.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具