常用命令-文件系统相关
2020-07-29 22:28
103 查看
常用命令-文件系统相关
- tree 显示目录树
- cd 切换目录和pwd 显示当前工作目录
- ls 列出目录内容
- stat 和 file 查看文件状态或文件类型
- touch 创建空文件
- mkdir 创建目录
- rmdir 删除目录
- cp 复制目录或文件
- mv 移动和重命名文件
- rm 删除文件
- shred
tree 显示目录树
以树状图列出目录的内容(目录下的所有文件,包括子目录里的文件的文件)
命令格式 tree [OPTIONS] [pattern] [directory]
常用选项参数说明 -a 显示所有目录和文件(默认不显示隐藏文件) -A 使用ASNI 绘图字符显示树状图而非以ASCII字符组合 -C 带色彩显示文件和目录清单,便于区分各种类型 -d 显示目录名称而非内容 -dirsfirst 目录显示在前,文件显示在后 -D 列出文件或目录的更改时间 -f 在每个文件或目录之前,显示完整的相对路径名称 -F 在执行文件,目录,Socket,符号链接,管道名称前各自加上*、/、=、@、| 以示区分 -i 不以阶梯状列出文件或目录名称 -L level level表示目录层级(数字),限制目录显示层级 -l 如遇到性质为符号连接的目录,直接列出该连接指向的原始目录 -n 不在文件和目录清单加上色彩 -p 列出权限标示 -P <pattern 范式样本>只显示符合范本样式的文件或目录名称 -q 用 ? 取代控制字符,列出文件和目录名称 -r 以相反次序显示 -s 列出文件或目录大小 -t 用文件和目录的更改时间排序 -u 列出文件或目录的拥有者名称,没有对应名称,则显示用户识别码
范例
#查看指定目录树的层级 [root@CentOS8 ~]#tree -L 1 / #查看指定目录树中的子目录,不包含文件 [root@CentOS8 ~]#tree -L 1 -d /etc #查看目录下最大深度为2级的文件列表,显示全路径及权限 [root@CentOS8 ~]#tree -f -p -L 2 /etc/ #查看目录下的文件列表,并加上符号以示区分目录和文件 [root@CentOS8 ~]#tree -F
cd 切换目录和pwd 显示当前工作目录
cd 切换目录
选项参数说明 -P 切换至物理路径,而非软链接目录 目录可用绝对路径或相对路径 cd 默认切换至家目录 cd . 切换到当前目录(没啥意义) cd .. 切换到上一级目录,即父目录 cd - 切换至上一次所在的工作目录 cd ~ 等同于cd cd ~USERNAME 切换至指定用户USERNAME 的家目录 ps: cd - 可切换至上一次所在的工作目录的原理,在每次切换目录前,将当前目录的路径存放在环境变量OLDPWD中 环境变量PWD 存储的是当前目录路径
pwd 显示当前所在的路径
[root@CentOS8 ~]#cd /etc/sysconfig/ [root@CentOS8 sysconfig]#pwd /etc/sysconfig
ls 列出目录内容
列出当前目录或指定目录的内容(包括文件的类型、时间、属主、属组、大小以及最近的修改时间等)。
命令格式:ls [OPTIONS][files_or_dirs]
常用选项参数说明 -a 列出内容中包含隐藏文件 -l 显示额外的信息 -R 目录递归 -ld 目录和符号链接信息 -l 文件分行显示 -S 按从大到小排序 -t 按mtime 排序 -u 配合-t 选项,显示并按atime 从新到旧排序 -U 按目录存放顺序显示 -X 按文件后缀排序 -F 对不同类型文件显示时附加不同的符号:*/=>@| -C 文件多时,以多列的方式显示文件,默认是一列(标准输出) ps: ls 查看不同后缀文件时的颜色由/etc/DIR_COLORS 和@LS_COLORS 变量定义
范例:别名ll
[root@CentOS8 sysconfig]#alias ll alias ll='ls -l --color=auto'
stat 和 file 查看文件状态或文件类型
文件的扩展属性通过
stat和
file查看。stat 显示文件的详细属性(查看文件状态),file 查看文件类型
命令格式
stat [FILE or DIR]
file [OPTION][FILE]
file 常用参数选项说明 -b 列出文件辨识结果时,不显示文件名称 -f filelist 列出文件filelist 中文件名的文件类型 -F 使用指定分隔符号替换输出文件名后默认的 : 分隔符 -L 查看对应软链接对应文件的文件类型
范例
stat 和file 的用法
[root@CentOS8 ~]#stat /etc/passwd File: /etc/passwd Size: 2424 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 135060587 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:passwd_file_t:s0 Access: 2020-07-29 10:16:56.118167356 +0800 Modify: 2020-07-27 10:05:05.893097849 +0800 Change: 2020-07-27 10:05:05.895097839 +0800 Birth: - #查看Linux和wins 文本格式的区别 [root@CentOS8 ~]#cat linux.txt wins.txt a b c a b c[root@CentOS8 ~]#file wins.txt linux.txt wins.txt: ASCII text, with CRLF line terminators linux.txt: ASCII text #hexdump -C 将文本内容转换为16进制和相应的ASCII字符查看 [root@CentOS8 ~]#hexdump -C linux.txt 00000000 61 0a 62 0a 63 0a |a.b.c.| 00000006 [root@CentOS8 ~]#hexdump -C wins.txt 00000000 61 0d 0a 62 0d 0a 63 |a..b..c| 00000007 #编辑内容为多个目录的文件 [root@CentOS8 ~]#vim list.txt /etc/ /bin /etc/issue #显示文件中的内容 [root@CentOS8 ~]#cat list.txt /etc/ /bin /etc/issue #查看这些目录的文件类型 [root@CentOS8 ~]#file -f list.txt /etc/: directory /bin: symbolic link to usr/bin /etc/issue: ASCII text
文本格式转换
#安装格式转换工具 [root@CentOS8 ~]#yum -y install dos2unix #或者dnf 安装 [root@CentOS8 ~]#dnf -y install dos2unix #将windows 的文本格式转换成Linux 文本格式 [root@CentOS8 ~]#dos2unix wins.txt dos2unix: converting file wins.txt to Unix format... [root@CentOS8 ~]#file wins.txt wins.txt: ASCII text #将Linux 的文本格式转换成windows 文本格式 [root@CentOS8 ~]#unix2dos linux.txt unix2dos: converting file linux.txt to DOS format... [root@CentOS8 ~]#file linux.txt linux.txt: ASCII text, with CRLF line terminators
文件字符集编码转换
#查看当前支持的字符集编码列表 [root@CentOS8 ~]#iconv -l #windows7 上文本默认的编码ANSI(GB2312) [root@CentOS8 ~]#file windows.txt windows.txt: ISO-8859 text, with no line terminators
touch 创建空文件
创建空的新文件或刷新已有文件的时间戳
命令格式 touch [OPTION] FILE
常用参数格式说明 -a 仅改变atime 和ctime -m 仅改变mtime 和ctime -t [CC[YY]]MMDDhhmm[.ss] 指定atime 和mtime 的时间戳 -c 文件不存在,不予创建
范例
#创建空的新文件 [root@CentOS8 data]#touch f1.txt [root@CentOS8 data]#ll total 0 -rw-r--r--. 1 root root 0 Jul 29 20:36 f1.txt #刷新已有文件的时间戳 [root@CentOS8 ~]#stat anaconda-ks.cfg File: anaconda-ks.cfg Size: 1577 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 202373341 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2020-07-28 16:12:10.434978076 +0800 Modify: 2020-07-27 10:06:35.345639027 +0800 Change: 2020-07-27 10:06:35.345639027 +0800 Birth: - [root@CentOS8 ~]#touch anaconda-ks.cfg [root@CentOS8 ~]#stat anaconda-ks.cfg File: anaconda-ks.cfg Size: 1577 Blocks: 8 IO Block: 4096 regular file Device: 802h/2050d Inode: 202373341 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2020-07-29 20:37:14.297230665 +0800 Modify: 2020-07-29 20:37:14.297230665 +0800 Change: 2020-07-29 20:37:14.297230665 +0800 Birth: - #创建空的新文件,带日期格式文件名 [root@CentOS8 data]#touch $touch `date -d "-1 day" +%F_%T`.log [root@CentOS8 data]#ls 2020-07-28_20:41:35.log f1.txt [root@CentOS8 data]#touch `touch $(date -d "-1 year" +%F_%T).log [root@CentOS8 data]#ls 2019-07-29_20:41:48.log 2020-07-28_20:41:35.log f1.txt
mkdir 创建目录
创建目录,常见选项:
-p 确保目录名称存在,不存在则新建 -v 显示详细信息 -m MODE 创建目录时直接指定权限
范例
alias rm='DIR=/data/backup`date +%F%T`;mkdir $DIR;mv -t $DIR'
rmdir 删除目录
删除目录,常见选项:
-p 递归删除父级空目录 -v 显示详细信息 ps:rmdir 只能删除空目录,如果想删除非空目录,可使用rm -r 命令,递归删除目录树
cp 复制目录或文件
实现文件或目录的复制
命令格式
cp [OPTION]... [-T] SOURCE DEST cp [OPTION]... SOURCE... DIRECTORY cp [OPTION]... -t DIRECTORY SOURCE...
常用参数选项 -i 如果目标已存在,覆盖前提示是否覆盖 -r,-R --recursive 递归处理,将指定目录下的文件与子目录一并处理 -a 归档,相当于-dR --preserve=all,常用于备份功能 -d --no-dereference--preserve=links 不复制源文件,只复制链接名 --preserve[=ATTR_LIST] mode:权限 ownership:属主属组 timestamp:时间 links:链接 context:上下文 all:全部 -p 等同于--preserve=mode,ownership,timestamp -v,--verbose 显示执行过程 -f,--force 强制拷贝覆盖 -u,--update 只复制源比目标更新文件或目标不存在的文件 -b 目标存在,覆盖前先备份,默认形式为filename~,只保留最近的一个备份 --backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为filename.~#~,可保留多个版本
复制会出现的情况及不同情况下文件复制会出现的问题,什么操作能实现,哪些操作不能实现
源目标 | 目标不存在 | 目标存在且为文件 | 目标存在且为目录 |
---|---|---|---|
一个文件 | 新建DEST 文件,并将SRC 中内容复制到DEST 中 | 将SRC 中的内容覆盖至DEST 中,目标文件中的原始数据将会丢失。建议复制使用 -i 选项 | 在该目录下新建与原文件同名的文件,并将SRC 文件中的内容复制到DEST 中 |
多个文件 | 提示错误 | 提示错误 | 在该目录下分别新建与原文件同名的文件,并将SRC 文件中的内容一一复制到对应的DEST 中 |
目录文件 | 新建指定DEST 同名目录,复制SRC 目录中所有文件至DEST 下 | 提示错误 | 在DEST 下新建与原目录同名的目录,并将SRC 中内容复制至新目录中 |
范例
[root@CentOS8 ~]#cp /etc/issue /data/issue_dawn.bak [root@CentOS8 ~]#ll /etc/issue /data/issue_dawn.bak -rw-r--r--. 1 root root 23 Jul 29 21:58 /data/issue_dawn.bak -rw-r--r--. 1 root root 23 Jan 2 2020 /etc/issue [root@CentOS8 ~]#cp -p /etc/issue /data/issue_dawn2.bak [root@CentOS8 ~]#ll !* ll -p /etc/issue /data/issue_dawn2.bak -rw-r--r--. 1 root root 23 Jan 2 2020 /data/issue_dawn2.bak -rw-r--r--. 1 root root 23 Jan 2 2020 /etc/issue #将目录复制到目录中,报错 [root@CentOS8 ~]#cp /etc/sysconfig/ /data/ cp: -r not specified; omitting directory '/etc/sysconfig/' #将目录复制到目录中,使用选项-r [root@CentOS8 data]#cp -r /etc/sysconfig/ /data/ [root@CentOS8 data]#tree /data/dir2 /data/dir2 └── dir1 ├── f1.txt ├── f2.txt ├── f3.txt ├── f4.txt └── f5.txt #覆盖已存在的目标文件并做备份 [root@CentOS8 data]#cp -b /etc/motd /data/issue cp: overwrite '/data/issue'? y [root@CentOS8 data]#ll /data -rw-r--r--. 1 root root 0 Jul 29 22:16 /data/issue -rw-r--r--. 1 root root 0 Jul 29 22:15 /data/issue~ #覆盖已存在的目标文件并保存多个版本,文件名按数字递增 [root@CentOS8 data]#cp --backup=numbered /etc/motd /data/issue cp: overwrite '/data/issue'? y [root@CentOS8 data]#cp --backup=numbered /etc/motd /data/issue cp: overwrite '/data/issue'? y [root@CentOS8 data]#cp --backup=numbered /etc/motd /data/issue cp: overwrite '/data/issue'? y [root@CentOS8 data]#ll /data -rw-r--r--. 1 root root 0 Jul 29 22:19 issue -rw-r--r--. 1 root root 0 Jul 29 22:15 issue~ -rw-r--r--. 1 root root 0 Jul 29 22:16 issue.~1~ -rw-r--r--. 1 root root 0 Jul 29 22:19 issue.~2~ -rw-r--r--. 1 root root 0 Jul 29 22:19 issue.~3~ 常用的 cp -r 是拷贝目录 cp -avr 拷贝目录,属性不变,显示拷贝过程 \cp 拷贝,不管目标有没有相同名字文件
mv 移动和重命名文件
实现文件或目录的移动和改名.
命令格式
mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE...
常用参数选项: -i 交互式 -f 强制执行 -b 目标存在,覆盖前先备份 ps: 同一分区移动数据,速度很快:数据位置没有变化 不同分区移动数据,速度相对慢:数据位置发生了变化
rename 可实现批量修改文件名
命令格式:rename [OPTIONS] <expression> <replacement> <file>…
#为所有的log 文件加上.bak 后缀 [root@centos8 data]#ls f1.log f2.log f3.log f4.log f5.log [root@centos8 data]#rename ".log" ".log.bak" f{1..5}.log [root@centos8 data]#ls f1.log.bak f2.log.bak f3.log.bak f4.log.bak f5.log.bak #去掉所有的bak 后缀 [root@centos8 data]#rename ".bak" "" f{1..3}.* [root@centos8 data]#ls f1.log f2.log f3.log f4.log f5.log
rm 删除文件
可实现文件目录的删除,ps:**此命令非常危险,慎重使用,建议使用mv 代替rm **
命令格式
rm [OPTION]… FILE…
-i 交互式 -f 强制删除 -r 递归 --no-preseve-root 删除/
范例
#使用mv 代替rm [root@centos8 data]#alias rm='DIR=/data/backup`date +%F%T`;mkdir $DIR;mv -t $DIR' #安全机制,删除/ 时,要求设置--no-preserve-root 选项 [root@centos8 data]#rm -rf / rm: it is dangerous to operate recursively on '/' rm: use --no-preserve-root to override this failsafe #该操作,请做好快照备份,删除/ 文件 [root@centos8 ~]#rm -rf /* [root@centos8 ~]#/2Tab #查看删除过程中/ 下的文件 [root@centos8 ~]#echo * #输出当前目录下的所有文件(不包含隐藏文件)
删除特殊文件
#将名为 /data/-f 的文件删除 [root@centos8 data]#rm -f -f #此方法错误,无法删除 [root@centos8 data]#ll total 0 -rw-r--r--. 1 root root 0 Jul 30 13:59 -f #可删除的方式 [root@centos8 data]#rm -- -f [root@centos8 data]#rm ./-f [root@centos8 data]#rm /data/-f #将名为 ~ 的 [root@centos8 data]#touch "~" [root@centos8 data]#ll total 0 -rw-r--r--. 1 root root 0 Jul 30 14:05 '~' [root@centos8 data]#rm -f ~ rm: cannot remove '/root': Is a directory [root@centos8 data]#rm -- ~ rm: cannot remove '/root': Is a directory [root@centos8 data]#rm -f ./~ [root@centos8 data]#ll total 0
shred
rm虽然删除了文件,但被删除的文件还是有可能恢复,对于安全要求较高的场景,可使用shred安全删除文件
命令格式
shred [OPTION]… FILE…
常见参数选项 -z 最后一次覆盖添加0,以隐藏覆盖操作 -v 显示操作进度 -u 覆盖后截断并删除文件 -n # #表示数字,指定覆盖文件内容的次数,默认是3次
范例
[root@centos8 data]#shred -zvun 5 passwords.txt shred: passwords.txt: pass 1/6 (random)... shred: passwords.txt: pass 2/6 (000000)... shred: passwords.txt: pass 3/6 (random)... shred: passwords.txt: pass 4/6 (ffffff)... shred: passwords.txt: pass 5/6 (random)... shred: passwords.txt: pass 6/6 (000000)... shred: passwords.txt: removing shred: passwords.txt: renamed to 0000000000000 shred: 0000000000000: renamed to 000000000000 shred: 000000000000: renamed to 00000000000 shred: 00000000000: renamed to 0000000000 shred: 0000000000: renamed to 000000000 shred: 000000000: renamed to 00000000 shred: 00000000: renamed to 0000000 shred: 0000000: renamed to 000000 shred: 000000: renamed to 00000 shred: 00000: renamed to 0000 shred: 0000: renamed to 000 shred: 000: renamed to 00 shred: 00: renamed to 0 shred: passwords.txt: removed [root@centos8 data]#ls passwords.txt ls: cannot access 'passwords.txt': No such file or directory
相关文章推荐
- 最短路 (Floyd & Dijkstra)(咕咕咕,未完(因机房关门)待续)
- 问题1133:C语言基础练习
- Day12-----集合/泛型
- JS基础-13-包装类
- “后疫情时代”的金融科技价值
- 问题1138:C语言-猴子吃桃
- C++ 文件操作fstream -- filesystem遍历目录
- 高德地图自定义icon,并根据地址设置多个marker标记
- 问题1141:词组缩写
- 前端学习之CSS——浮动
- 问题1144:《C语言程序设计》江宝钏主编-习题6-3-倒数数列
- 2020-07-29
- 问题1311:C语言-解方程
- RHCSA第三次作业
- 问题1169:赚经验
- tcp/ip协议与socket介绍
- 7.29 HashMap和快速排序以及泛型的使用
- 问题1511:金币
- JDBC_WEB+条件查询
- Java输出流对象路径存放到问题