Linux文件操作命令

马哥教育 Linux SRE 学习笔记

文件操作命令


显示当前工作目录


每个shell和系统进程都有一个当前的工作目录 CWD:current work directory

显示当前shell CWD的绝对路径

pwd命令: printing working directory

  • -P 显示真实物理路径
  • -L 显示链接路径(默认)

范例:

[root@rocky8 ~]$pwd
/root
[root@rocky8 ~]$cd /opt/
[root@rocky8 opt]$pwd
/opt
[root@rocky8 ~]$cd /usr/bin/
[root@rocky8 bin]$pwd -P
/usr/bin

绝对和相对路径


  • 绝对路径

    以正斜杠/ 即根目录开始

    完整的文件的位置路径

    可用于任何想指定一个文件名的时候

  • 相对路径名

  • 不以斜线开始

  • 一般情况下,是指相对于当前工作目录的路径,特殊场景下,是相对于某目录的位置 可以作为一个简短的形式指定一个文件名

基名:basename,只取文件名而不要路径

目录名:dirname,只取路径,不要文件名

范例:

[root@rocky8 ~]$basename /etc/sysconfig/network
network[root@rocky8 ~]$dirname /etc/sysconfig/network
/etc/sysconfig[root@rocky8 ~]$dirname /etc/sysconfig/network-scripts/ifcfg-ens33
/etc/sysconfig/network-scripts
[root@rocky8 ~]$basename /etc/sysconfig/network-scripts/ifcfg-ens33
ifcfg-ens33

更改目录


命令 cd : change directory 改变目录

选项:-P 切换至物理路径,而非软链接目录

可以使用绝对或相对路径

  • 切换至父目录: cd …
  • 切换至当前用户主目录: cd
  • 切换至以前的工作目录: cd -

范例:

[root@rocky8 ~]$cd /etc/sysconfig/
[root@rocky8 sysconfig]$pwd
/etc/sysconfig
[root@rocky8 sysconfig]$cd ../../usr
[root@rocky8 usr]$pwd
/usr
[root@rocky8 usr]$cd /bin
[root@rocky8 bin]$pwd
/bin
[root@rocky8 bin]$cd -P /bin
[root@rocky8 bin]$pwd
/usr/bin

相关的环境变量:

  • PWD:当前目录路径
  • OLDPWD:上一次目录路径

范例:

[root@rocky8 ~]$echo $OLDPWD
/usr/bin
[root@rocky8 ~]$cd -
/usr/bin
[root@rocky8 bin]$pwd
/usr/bin

列出目录内容


ls 命令可以列出当前目录的内容或指定目录

用法:

ls [options] [files_or_dirs]

常见选项:

  • -a 包含隐藏文件
  • -l 显示额外的信息
  • R 目录递归
  • -ld 目录和符号链接信息
  • -1 文件分行显示
  • -S 按从大到小排序
  • -t 按mtime排序
  • -u 配合-t选项,显示并按atime从新到旧排序
  • -U 按目录存放顺序显示
  • -X 按文件后缀排序
  • -F 对不同类型文件显示时附加不同的符号:*/=>@|
  • -C 文件多时,以多列的方式显示文件,默认是一列(标准输出)

说明:

ls 查看不同后缀文件时的颜色由 /etc/DIR_COLORS 和@LS_COLORS变量定义
ls -l 看到文件的大小,不一定是实际文件真正占用空间的大小

范例:

[root@rocky8 bin]$cd /usr/
[root@rocky8 usr]$ls -a
.  ..  bin  games  include  lib  lib64  libexec  local  sbin  share  src  tmp[root@rocky8 usr]$ls -l
total 168
dr-xr-xr-x.   2 root root 36864 May 24 13:18 bin
drwxr-xr-x.   2 root root     6 Oct 11  2021 games
drwxr-xr-x.  47 root root  8192 May 20 23:13 include
dr-xr-xr-x.  39 root root  4096 May 20 23:13 lib
dr-xr-xr-x.  57 root root 40960 May 20 23:13 lib64
drwxr-xr-x.  31 root root  4096 May 20 23:13 libexec
drwxr-xr-x.  12 root root   131 Jul 11  2023 local
dr-xr-xr-x.   2 root root 16384 May 20 23:13 sbin
drwxr-xr-x. 117 root root  4096 May 24 13:18 share
drwxr-xr-x.   4 root root    34 Jul 11  2023 src
lrwxrwxrwx.   1 root root    10 Oct 11  2021 tmp -> ../var/tmp[root@rocky8 usr]$ls -R
[root@rocky8 usr]$ls -ld
drwxr-xr-x. 12 root root 144 Jul 11  2023 .[root@rocky8 usr]$ls -1
bin
games
include
lib
lib64
libexec
local
sbin
share
src
tmp[root@rocky8 usr]$ls -S
lib64  bin  sbin  include  lib  libexec  share  local  src  tmp  games[root@rocky8 usr]$ls -t
share  bin  include  libexec  lib64  sbin  lib  src  local  games  tmp[root@rocky8 usr]$ls -tu
lib64  lib  tmp  bin  sbin  include  libexec  local  share  games  src[root@rocky8 usr]$ls -U
bin  sbin  lib  lib64  share  games  include  libexec  local  src  tmp[root@rocky8 usr]$ls -X
bin  games  include  lib  lib64  libexec  local  sbin  share  src  tmp

查看文件状态 stat


文件相关信息:metadata, data

每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容
  • modify time 修改时间,mtime,改变文件内容(数据)
  • change time 改变时间,ctime,元数据发生改变
[root@rocky8 ~]$stat /etc/passwdFile: /etc/passwdSize: 1289            Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 135164929   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-25 13:16:21.235016434 +0800
Modify: 2024-05-20 23:13:31.169145534 +0800
Change: 2024-05-20 23:13:31.170145544 +0800Birth: 2024-05-20 23:13:31.169145534 +0800

确定文件内容


文件可以包含多种类型的数据,使用file命令检查文件的类型,然后确定适当的打开命令或应用程序使 用

格式:

file [options] <filename>...

常用选项:

  • -b 列出文件辨识结果时,不显示文件名称
  • -f filelist 列出文件filelist中文件名的文件类型
  • -F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
  • -L 查看对应软链接对应文件的文件类型
  • –help 显示命令在线帮助

范例:windows的文本格式和Linux的文本格式的区别

#在Windows创建文本文件win.txt写入a、b、c,然后上传到Linux中
#在Linux创建Linux.txt,写入a、b、c
[root@rocky8 ~]$touch linux.txt
[root@rocky8 ~]$nano linux.txt
[root@rocky8 ~]$ls
anaconda-ks.cfg  install_nginx.sh  linux.txt  win.txt[root@rocky8 ~]$cat linux.txt
a
b
c
[root@rocky8 ~]$cat win.txt
a
b
c[root@rocky8 ~]$file win.txt linux.txt
win.txt:   ASCII text, with CRLF line terminators
linux.txt: ASCII text
[root@rocky8 ~]$hexdump -C linux.txt
00000000  61 0a 62 0a 63 0a                                 |a.b.c.|
00000006
[root@rocky8 ~]$hexdump -C win.txt
00000000  61 0d 0a 62 0d 0a 63                              |a..b..c|
00000007#安装转换工具
[root@rocky8 ~]$dnf install dos2unix -y
#将Windows的文本格式转换成的Linux文本格式
[root@rocky8 ~]$dos2unix win.txt
dos2unix: converting file win.txt to Unix format...
[root@rocky8 ~]$file win.txt
win.txt: ASCII text#将Linux的文本格式转换成Windows的文本格式
[root@rocky8 ~]$unix2dos win.txt
unix2dos: converting file win.txt to DOS format...
[root@rocky8 ~]$file win.txt
win.txt: ASCII text, with CRLF line terminators

文件通配符模式 wildcard pattern


文件通配符可以用来匹配符合条件的多个文件,方便批量管理文件

通配符采有特定的符号,表示特定的含义,此特符号称为元 meta 字符

常见的通配符如下:

* 匹配零个或多个字符,但不匹配 "." 开头的文件,即隐藏文件
? 匹配任何单个字符,一个汉字也算一个字符
~ 当前用户家目录
~mage 用户mage家目录
[0-9] 匹配数字范围
[a-z] 一个字母
[A-Z] 一个字母
[wang] 匹配列表中的任何的一个字符
[^wang] 匹配列表中的所有字符以外的字符
[^a-z] 匹配列表中的所有字符以外的字符
. 和 ~+ 当前工作目录
~-   前一个工作目录

另外还有在Linux系统中预定义的字符类表示法如下:man 7 glob

[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母,表示 a-z
[:upper:]: 任意大写字母,表示 A-Z 
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符

范例:

[root@rocky8 ~]$cd /root/
[root@rocky8 ~]$ll -/linux.txt
ls: invalid option -- '/'
Try 'ls --help' for more information.
[root@rocky8 ~]$ll ~-/linux.txt
-rw-r--r-- 1 root root 6 May 25 14:08 /root/linux.txt

范例: [ ] 和 { }

[root@rocky8 opt]$touch f{3..5}.txt
[root@rocky8 opt]$ll f{1..5}.txt
ls: cannot access 'f1.txt': No such file or directory
ls: cannot access 'f2.txt': No such file or directory
-rw-r--r-- 1 root root 0 May 26 13:14 f3.txt
-rw-r--r-- 1 root root 0 May 26 13:14 f4.txt
-rw-r--r-- 1 root root 0 May 26 13:14 f5.txt[root@rocky8 opt]$ll f[1-5].txt
-rw-r--r-- 1 root root 0 May 26 13:14 f3.txt
-rw-r--r-- 1 root root 0 May 26 13:14 f4.txt
-rw-r--r-- 1 root root 0 May 26 13:14 f5.txt[root@rocky8 opt]$ touch file{a..z}.txt file{A..Z}.txt
[root@rocky8 opt]$ls file[a-c].txt
filea.txt  fileA.txt  fileb.txt  fileB.txt  filec.txt
[root@rocky8 opt]$ls file[f-k].txt
filef.txt  fileg.txt  fileh.txt  filei.txt  filej.txt  filek.txt
fileF.txt  fileG.txt  fileH.txt  fileI.txt  fileJ.txt
[root@rocky8 opt]$ls file[cxz].txt
filec.txt  filex.txt  filez.txt
[root@rocky8 opt]$ls file[^cxz].txt
filea.txt  filee.txt  fileH.txt  filel.txt  fileO.txt  files.txt  fileV.txt
fileA.txt  fileE.txt  filei.txt  fileL.txt  filep.txt  fileS.txt  filew.txt
fileb.txt  filef.txt  fileI.txt  filem.txt  fileP.txt  filet.txt  fileW.txt
fileB.txt  fileF.txt  filej.txt  fileM.txt  fileq.txt  fileT.txt  fileX.txt
fileC.txt  fileg.txt  fileJ.txt  filen.txt  fileQ.txt  fileu.txt  filey.txt
filed.txt  fileG.txt  filek.txt  fileN.txt  filer.txt  fileU.txt  fileY.txt
fileD.txt  fileh.txt  fileK.txt  fileo.txt  fileR.txt  filev.txt  fileZ.txt

范例:

[root@rocky8 opt]$ls file[:lower:].txt
filee.txt  filel.txt  fileo.txt  filer.txt  filew.txt
[root@rocky8 opt]$ls file[[:lower:]].txt
filea.txt  filee.txt  filei.txt  filem.txt  fileq.txt  fileu.txt  filey.txt
fileb.txt  filef.txt  filej.txt  filen.txt  filer.txt  filev.txt  filez.txt
filec.txt  fileg.txt  filek.txt  fileo.txt  files.txt  filew.txt
filed.txt  fileh.txt  filel.txt  filep.txt  filet.txt  filex.txt

范例:比较有无*的功能区别

[root@rocky8 opt]$ls -a *
f3.txt     fileC.txt  fileG.txt  fileK.txt  fileO.txt  fileS.txt  fileW.txt
f4.txt     filed.txt  fileh.txt  filel.txt  filep.txt  filet.txt  filex.txt
f5.txt     fileD.txt  fileH.txt  fileL.txt  fileP.txt  fileT.txt  fileX.txt
filea.txt  filee.txt  filei.txt  filem.txt  fileq.txt  fileu.txt  filey.txt
fileA.txt  fileE.txt  fileI.txt  fileM.txt  fileQ.txt  fileU.txt  fileY.txt
fileb.txt  filef.txt  filej.txt  filen.txt  filer.txt  filev.txt  filez.txt
fileB.txt  fileF.txt  fileJ.txt  fileN.txt  fileR.txt  fileV.txt  fileZ.txt
filec.txt  fileg.txt  filek.txt  fileo.txt  files.txt  filew.txt

范例:

[root@rocky8 opt]$ls -d /etc/*/
/etc/alternatives/       /etc/kdump/           /etc/rc4.d/
/etc/asciidoc/           /etc/kernel/          /etc/rc5.d/
/etc/audit/              /etc/krb5.conf.d/     /etc/rc6.d/
/etc/authselect/         /etc/ld.so.conf.d/    /etc/rc.d/
/etc/auto.master.d/      /etc/libblockdev/     /etc/redhat-lsb/
/etc/bash_completion.d/  /etc/libibverbs.d/    /etc/rhsm/
/etc/binfmt.d/           /etc/libnl/           /etc/rpm/
/etc/chkconfig.d/        /etc/libpaper.d/      /etc/rsyslog.d/
/etc/cifs-utils/         /etc/libreport/       /etc/rwtab.d/
/etc/cron.d/             /etc/libssh/          /etc/sasl2/
/etc/cron.daily/         /etc/logrotate.d/     /etc/security/
/etc/cron.hourly/        /etc/lsb-release.d/   /etc/selinux/
/etc/cron.monthly/       /etc/lvm/             /etc/sgml/
/etc/cron.weekly/        /etc/microcode_ctl/   /etc/skel/
/etc/crypto-policies/    /etc/modprobe.d/      /etc/ssh/
/etc/dbus-1/             /etc/modules-load.d/  /etc/ssl/
/etc/default/            /etc/NetworkManager/  /etc/sssd/
/etc/depmod.d/           /etc/nftables/        /etc/sudoers.d/
/etc/dhcp/               /etc/openldap/        /etc/sysconfig/
/etc/dnf/                /etc/opt/             /etc/sysctl.d/
/etc/dracut.conf.d/      /etc/pam.d/           /etc/systemd/
/etc/firewalld/          /etc/pesign/          /etc/terminfo/
/etc/fonts/              /etc/pkcs11/          /etc/tmpfiles.d/
/etc/gcrypt/             /etc/pki/             /etc/tuned/
/etc/gdbinit.d/          /etc/plymouth/        /etc/udev/
/etc/gnupg/              /etc/pm/              /etc/udisks2/
/etc/groff/              /etc/polkit-1/        /etc/unbound/
/etc/grub.d/             /etc/popt.d/          /etc/vmware-tools/
/etc/gss/                /etc/postfix/         /etc/X11/
/etc/init.d/             /etc/profile.d/       /etc/xdg/
/etc/iproute2/           /etc/rc0.d/           /etc/xinetd.d/
/etc/java/               /etc/rc1.d/           /etc/xml/
/etc/jvm/                /etc/rc2.d/           /etc/yum/
/etc/jvm-commmon/        /etc/rc3.d/           /etc/yum.repos.d/
[root@rocky8 opt]$l.
.  ..[root@rocky8 opt]$touch file*.log
[root@rocky8 opt]$touch file1.log
[root@rocky8 opt]$ls file*.logfile1.log  'file*.log'
[root@rocky8 opt]$ls 'file*.log'
'file*.log'

创建空文件和刷新时间


touch命令可以用来创建空文件或刷新文件的时间

格式:

touch [OPTION]... FILE...

选项说明:

  • -a 仅改变 atime和ctime
  • -m 仅改变 mtime和ctime
  • -t [[CC]YY]MMDDhhmm[.ss] 指定atime和mtime的时间戳
  • -c 如果文件不存在,则不予创建

范例:

[root@rocky8 opt]$touch f1.txt
[root@rocky8 opt]$ll
total 0
-rw-r--r-- 1 root root 0 May 26 13:47 f1.txt
[root@rocky8 opt]$ll /etc/issue
-rw-r--r--. 1 root root 23 Mar 30  2022 /etc/issue
[root@rocky8 opt]$touch /etc/issue
[root@rocky8 opt]$ll /etc/issue
-rw-r--r--. 1 root root 23 May 26 13:48 /etc/issue[root@rocky8 opt]$stat /etc/issueFile: /etc/issueSize: 23              Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 134301900   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-05-26 13:48:06.637382517 +0800
Modify: 2024-05-26 13:48:06.637382517 +0800
Change: 2024-05-26 13:48:06.637382517 +0800Birth: 2023-07-11 17:41:16.345230925 +0800[root@rocky8 opt]$date
Sun May 26 13:48:56 CST 2024
[root@rocky8 opt]$touch `date -d "-1 day" +%F_%T`.log
[root@rocky8 opt]$ls
2024-05-25_13:49:03.log  f1.txt
[root@rocky8 opt]$touch $(date -d "1 year" +%F_%T).log
[root@rocky8 opt]$ls
2024-05-25_13:49:03.log  2025-05-26_13:49:25.log  f1.txt

复制文件和目录


利用 cp(copy)命令可以实现文件或目录的复制

格式:

cp [OPTION]... [-T] SOURCE DEST
cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...

常用选项

  • -i 如果目标已存在,覆盖前提示是否覆盖
  • -n 不覆盖,注意两者顺序
  • -r, -R 递归复制目录及内部的所有内容
  • -a 归档,相当于-dR --preserv=all,常用于备份功能
  • -d --no-dereference --preserv=links 不复制原文件,只复制链接名
  • –preserv[=ATTR_LIST
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
all
  • -p 等同–preserv=mode,ownership,timestamp
  • -v --verbose
  • -f --force
  • -u --update 只复制源比目标更新文件或目标不存在的文件
  • -b 目标存在,覆盖前先备份,默认形式为 filename~ ,只保留最近的一个备份
  • –backup=numbered 目标存在,覆盖前先备份加数字后缀,形式为 filename.# ,可以保留多 个版本

范例:

[root@rocky8 opt]$cp /etc/issue /opt/issue_bak
[root@rocky8 opt]$ls
issue_bak
[root@rocky8 opt]$ll
total 8
-rw-r--r-- 1 root root 23 May 26 13:54 issue_bak
-rw-r--r-- 1 root root 23 May 26 13:48 issue_bak2[root@rocky8 opt]$cp /etc/sysconfig/ /opt/
cp: -r not specified; omitting directory '/etc/sysconfig/'
[root@rocky8 opt]$cp -r /etc/sysconfig/ /opt/
[root@rocky8 opt]$ll
total 12
-rw-r--r-- 1 root root   23 May 26 13:54 issue_bak
-rw-r--r-- 1 root root   23 May 26 13:48 issue_bak2
drwxr-xr-x 5 root root 4096 May 26 13:57 sysconfig

范例:复制时如果覆盖先备份再覆盖

[root@rocky8 opt]$cp -b /etc/motd /opt/issue_bak
cp: overwrite '/opt/issue_bak'? y
[root@rocky8 opt]$ll
total 16
-rw-r--r-- 1 root root 1167 May 26 13:59 issue_bak
-rw-r--r-- 1 root root   23 May 26 13:54 issue_bak~
-rw-r--r-- 1 root root   23 May 26 13:48 issue_bak2
drwxr-xr-x 5 root root 4096 May 26 13:57 sysconfig[root@rocky8 opt]$cp --backup=numbered /etc/fstab /opt/issue_bak
cp: overwrite '/opt/issue_bak'? y
[root@rocky8 opt]$cp --backup=numbered /etc/shadow /opt/issue_bak
cp: overwrite '/opt/issue_bak'? y
[root@rocky8 opt]$ll
total 24
---------- 1 root root  870 May 26 14:01 issue_bak
-rw-r--r-- 1 root root   23 May 26 13:54 issue_bak~
-rw-r--r-- 1 root root 1167 May 26 13:59 issue_bak.~1~
-rw-r--r-- 1 root root  713 May 26 14:00 issue_bak.~2~
-rw-r--r-- 1 root root   23 May 26 13:48 issue_bak2
drwxr-xr-x 5 root root 4096 May 26 13:57 sysconfig

练习:

1、每天将/etc/目录下所有文件,备份到/data独立的子目录下,并要求子目录格式为 backupYYYY-mm-dd,备份过程

[root@rocky8 data]$cp -av /etc/ /data/backup`date +%F`
[root@rocky8 data]$cp -av /etc/ /data/etc-`date +%F_%H-%M-%S`
[root@rocky8 ~]$cd /data/
[root@rocky8 data]$ls
backup2024-05-26  etc-2024-05-26_14-03-51

2、创建/data/rootdir目录,并复制/root下所有文件到该目录内,要求保留原有权限

[root@rocky8 data]$cp -a /root /data/rootdir
[root@rocky8 data]$ll
total 24
drwxr-xr-x. 97 root root 8192 May 26 13:19 backup2024-05-26
drwxr-xr-x. 97 root root 8192 May 26 13:19 etc-2024-05-26_14-03-51
dr-xr-x---.  3 root root  258 May 25 14:12 rootdir

移动和重命名文件


mv 命令可以实现文件或目录的移动和改名

同一分区移动数据,速度很快:数据位置没有变化

不同分区移动数据,速度相对慢:数据位置发生了变化

格式:

mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...

常用选项:

  • -i 交互式
  • -f 强制
  • -b 目标存在,覆盖前先备份

利用 rename 可以批量修改文件名

格式:

rename [options] <expression> <replacement> <file>...

范例:

[root@rocky8 data]$cd /opt/
[root@rocky8 opt]$ls
issue_bak  issue_bak~  issue_bak.~1~  issue_bak.~2~  issue_bak2  sysconfig
[root@rocky8 opt]$cd /data
[root@rocky8 data]$ls
[root@rocky8 data]$
[root@rocky8 data]$mv /opt/issue_bak /data/
[root@rocky8 data]$ls
issue_bak
[root@rocky8 data]$cd /opt/
[root@rocky8 opt]$ls
issue_bak~  issue_bak.~1~  issue_bak.~2~  issue_bak2  sysconfig[root@rocky8 opt]$cp /data/issue_bak /opt/
[root@rocky8 opt]$ls
issue_bak  issue_bak~  issue_bak.~1~  issue_bak.~2~  issue_bak2  sysconfig
[root@rocky8 opt]$mv -b /opt/issue_bak /data/
mv: overwrite '/data/issue_bak'? y#为所有的f开头包含conf的文件加上.bak后缀:
rename  'conf'    'conf.bak'   f* 
#去掉所有的bak后缀:
rename  '.bak'  '' *.bak

删除文件


使用 rm 命令可以删除文件和目录

注意:此命令非常危险,慎重使用,建议使用 mv 代替 rm

格式:

rm [OPTION]... FILE...

常用选项:

  • -i 交互式
  • -f 强制删除
  • -r 递归
  • –no-preserve-root 删除/

范例:

[root@rocky8 ~]$rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe[root@rocky8 data]$touch f{1..5}
[root@rocky8 data]$ls
f1  f2  f3  f4  f5
[root@rocky8 data]$rm f1
rm: remove regular empty file 'f1'? y
[root@rocky8 data]$ls
f2  f3  f4  f5
[root@rocky8 data]$rm -f f2
[root@rocky8 data]$cd
[root@rocky8 ~]$rm -r /data/
rm: descend into directory '/data/'? y
rm: remove regular empty file '/data/f3'? y
rm: remove regular empty file '/data/f4'? y
rm: remove regular empty file '/data/f5'? y
rm: remove directory '/data/'? y

rm 虽然删除了文件,但是被删除的文件仍然可能被恢复,在安全要求较高的场景下,可以使用shred安 全删除文件

目录操作


显示目录树 tree

常见选项:

  • -d: 只显示目录
  • -L level:指定显示的层级数目
  • -P pattern: 只显示由指定wild-card pattern匹配到的路径

范例:

[root@rocky8 ~]$tree /tmp/
/tmp/
├── systemd-private-ea213e2cad0045218d109930153f008d-chronyd.service-1iJ1Cg
│   └── tmp
├── vmware-root_912-2697663791
├── vmware-root_919-4013854454
├── vmware-root_920-2731086625
├── vmware-root_927-3980167416
└── vmware-root_936-26975326817 directories, 0 files

创建目录 mkdir

常见选项:

  • -p: 存在于不报错,且可自动创建所需的各目录
  • -v: 显示详细信息
  • -m MODE: 创建目录时直接指定权限

范例:

[root@rocky8 ~]$mkdir /test/name
mkdir: cannot create directory ‘/test/name’: No such file or directory
[root@rocky8 ~]$mkdir -p /test/name

删除空目录 rmdir

常见选项:

  • -p 递归删除父空目录
  • -v 显示详细信息

注意:rmdir只能删除空目录,如果想删除非空目录,可以使用rm -r 命令,递归删除目录树

[root@rocky8 ~]$rmdir -pv /test/name/
rmdir: removing directory, '/test/name/'
rmdir: removing directory, '/test'
rmdir: removing directory, '/'
rmdir: failed to remove directory '/': Device or resource busy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Light_Future的C++框架的套利代码读取arbitrage_strategy.cpp

1. 套利策略的初始化函数,订阅两个数据 void arbitrage_strategy::on_init(subscriber& suber) {// 向订阅者注册两个交易代码的tick接收器。suber.regist_tick_receiver(_code1, this);suber.regist_tick_receiver(_code2, this);// 获取当前交易日。uint32_t trading_d…

SpringCloud配置文件bootrap

解决方案&#xff1a; 情况一、SpringBoot 版本 小于 2.4.0 版本&#xff0c;添加以下依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId> </dependency> 情况二、SpringBoot…

[集群聊天服务器]----(八)群组类、群组操作接口以及业务模块之创建群组,加入群组以及群组聊天

接着上文关于[集群聊天服务器]----(七)业务模块之一对一聊天、添加好友函数、好友类以及离线消息类的剖析。本章将对创建群组&#xff0c;加入群组以及群组聊天业务进行剖析。 群类 类似于User类&#xff0c;构建了Group类 #ifndef GROUP_H #define GROUP_H#include "g…

在Windows中安装Redis

一、下载Redis github链接&#xff1a;https://github.com/redis-windows/redis-windows/releases 二、安装 解压后点击start.bat文件即可启动服务 新开一个cmd窗口进入安装了Redis的文件夹输入redis-cli.exe -h 127.0.0.1 -p 6379连接Redis&#xff0c;见如下结果便是成功&…

sql-labs靶场环境搭建(手把手保姆级教学)

文章目录 一、sql-labs靶场简介&#xff1a;二、搭建过程1、资源下载2、配置文件&#xff1b;3、访问网站4、创建数据库 三、使用PhpStudy2018原因 一、sql-labs靶场简介&#xff1a; SQL-Labs 是一个实践环境&#xff0c;旨在用于数据库和 SQL&#xff08;结构化查询语言&…

某大型制造集团企业信息化建设总体规划设计方案(67页PPT)

方案介绍&#xff1a; 随着信息技术的飞速发展&#xff0c;企业信息化建设已成为提高管理效率、增强企业竞争力的重要手段。某大型制造集团为应对市场变化、提升管理水平、优化资源配置&#xff0c;决定进行全面深入的信息化建设。本方案旨在构建一个集生产、管理、销售、物流…

Java中的IO和NIO(New IO)有什么区别?

在Java编程中&#xff0c;IO&#xff08;Input/Output&#xff09;和NIO&#xff08;New IO&#xff09;是两个重要的概念&#xff0c;它们分别代表了Java中的传统IO和新的IO库。为了全面解释这两者之间的区别&#xff0c;我们将从技术难点、面试官关注点、回答吸引力和代码举例…

【DevOps】Jenkins + Dockerfile自动部署Maven(SpringBoot)项目

环境 docker_host192.168.0.1jenkins_host192.168.0.2 jenkins_host构建完成后把jar发布到docker_host&#xff0c;再通过dockerfile自动构建镜像&#xff0c;运行镜像 1 Jenkins安装 AWS EC2安装Jenkins&#xff1a;AWS EC2 JDK11 Jenkins-CSDN博客 AWS EC2上Docker安装…

T113调试7寸RGB屏

文章目录 软硬件介绍软件板卡屏幕 调试修改内核设备树修改U-Boot设备树 测试添加启动logo其它问题总结 软硬件介绍 软件 基于Tina5.0 SDK。 板卡 韦东山的T113工业板&#xff1a; 屏幕 韦东山的7寸RGB电容触摸屏&#xff1a; 调试 修改内核设备树 打开内核设备树<…

代码随想录算法训练营第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点 、 面试题 02.07. 链表相交、142.环形链表II

24. 两两交换链表中的节点 题目链接&#xff1a; 24. 两两交换链表中的节点 文档讲解&#xff1a;代码随想录 状态&#xff1a;没做出来&#xff0c;没有正确更新头节点&#xff0c;因为head和cur共享引用&#xff0c;会随着cur的移动&#xff0c;丢失之前存放的节点 错误代码&…

efuse xinpian

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 xx项目需要进行efuse烧录&#xff0c;之前都是单板环境&#xff0c;现补充裸板烧录教…

Java计算时间相差多少秒/localdatetime计算时间差

1、常用的计算时间差方法&#xff1f; 【将字符串的时间转化成LocalDateTime】 String time1"2024-01-01 10:25:10";LocalDateTime starttime1 LocalDateTime.parse(time1, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));【LocalDateTime计算时…

51单片机-实机演示(按键)

书接上回。http://t.csdnimg.cn/4wSSW 目录 一.按下灭&#xff0c;松开亮 二.两个按键控制两个灯 三.点一下灯开&#xff0c;在按一下关 四。优化按键消抖 1.加入bit变量 一.按下灭&#xff0c;松开亮 代码 #include <reg52.h> //此文件中定义了单片机的一些特…

自定义函数python:深入解析与实操

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;函数的命名与规范 二、函数命名&#xff1a;遵循规范&#xff0c;易于…

利用阅读APP3.0目录展示要查看的内容01

喜欢读电子书的小伙伴往往会遇到一个问题&#xff0c;就是想要看书中某些内容&#xff0c;但是不知道具体章节&#xff0c;所以就用查找功能来查&#xff0c;但是呢查找功能查出来展示的结果并不直观。 比如想要阅读:青竹蜂云剑&#xff0c;大衍决&#xff0c;南宫婉&#xff0…

【wpf】关于焦点

背景 今天踩了一个坑。我用到handycontrol中的一个密码控件PasswordBox <hc:PasswordBox x:Name"pb" hc:TitleElement.Title"密码" hc:TitleElement.TitlePlacement"Left" Width"120"></hc:PasswordBox>然后想实现一个回…

基于springboot的在线宠物用品交易网站源码数据库

基于springboot的在线宠物用品交易网站源码数据库 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了在线宠物用品交易网站的开发全过程。通过分析在线宠物用品交易网站管理的不足&#xff0c;创建了一个计算机管理在…

265 基于matlab的粒子群优化分数阶灰色预测模型

基于matlab的粒子群优化分数阶灰色预测模型&#xff0c;以误差结果为目标进行预测&#xff0c;输出多个预测结果。并输出迭代曲线。程序已调通&#xff0c;可直接运行。 265 分数阶灰色预测 粒子群优化算法 - 小红书 (xiaohongshu.com)

二叉树——经典练习题

目录 前言&#xff1a; 一、单值二叉树 题目描述&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 二、二叉树最大深度 题目描述&#xff1a; 思路分析&#xff1a; 代码实现&#xff1a; 三、检查两颗树是否相同 题目描述&#xff1a; 思路分析&#xff1a; 代…

用C语言设计轨道电机的驱动库

一、设计目的 设计能驱动立体轨道电机的抽象驱动程序库。 二、设计要求 命名规范。设计简单&#xff0c;方便使用。体积小。满足电机的移动、停止、初始化、恢复等控制&#xff0c;甚至通过网络控制。 三、设计内容 (一)属性封装 1、定义配置结构体 // 用于配置参数 typed…