【Linux】Linux常用命令

本文详细介绍了Linux中的一些基本命令,包括pwd、cd、ls、alias、du、mkdir、touch、ln、cp、rm、mv、which和find,涵盖了查看工作目录、切换目录、列表显示目录内容、设置别名、统计文件空间占用、创建和管理目录、文件及链接、复制和删除文件或目录等内容。
摘要由CSDN通过智能技术生成


pwd命令——查看当前的工作目录

  pwd是用来实现用户查看当前的工作目录。

  pwd 命令的基本格式为:

[root@host ~]# pwd
/root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KgbMy93x-1680000968672)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327154606540.png)]

cd命令——切换工作目录

  cd:将用户的工作目录更改到其他位置

  cd 目标位置:切换到目标位置

  例如:

[root@host ~]# cd /etc/sysconfig/network-scripts/

在这里插入图片描述

  cd ~或者cd:若不指定目标位置,切换到当前用户的宿主目录

  例如:

//在/etc/sysconfig/network-scripts/目录下使用cd命令
[root@host network-scripts]# cd
//输入pwd查看是否在当前用户的宿主目录
[root@host ~]# pwd
/root
//进入/etc/sysconfig/network-scripts/目录
[root@host ~]# cd /etc/sysconfig/network-scripts/
//在/etc/sysconfig/network-scripts/目录下使用cd ~命令
[root@host network-scripts]# cd ~
//输入pwd查看是否在当前用户的宿主目录
[root@host ~]# pwd
/root

  指定进入指定test用户的家目录

cd ~test

在这里插入图片描述

  cd -:切换到上一次执行cd命令之前所在的目录

  如

//进入/etc/sysconfig/network-scripts/目录
[root@host ~]# cd /etc/sysconfig/network-scripts/
//切换上一次执行cd命令的目录即root目录
[root@host network-scripts]# cd -
/root
[root@host ~]# 

在这里插入图片描述

绝对路径

  绝对路径是从linux最底层的根(/)开始算。如 cd /home/test/home/test 就是绝对路径。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzqMAXBz-1680000929644)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327163014765.png)]

相对路径

  相对路径就是相对当前你所在路径开始算。如cd test , test就是指当前工作目录下的test目录,也就是相对路径。

在这里插入图片描述

相对路径的表现形式

表现形式说明示例
直接使用目录名或文件名表示当前工作目录中的子目录、文件位置grub.conf
以一个点号“.”开头表示以当前的工作目录作为起点./grub.conf
以两个点号“…”开头表示以当前目录的上一级目录(父目录)作为起点…/vmlinuz
以“~用户名”形式开头表示以指定用户的宿主目录作为起点~teacher
以“~”形式开头表示以当前用户的宿主目录作为起点~

  cd 文件名

  例如

cd abc

  效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ICjLBiZP-1680000929645)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327165436649.png)]

  cd ./文件

  例如

cd ./abc/

  效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3kNBH8X-1680000929645)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327165359523.png)]

  cd …/文件

  例如

//进入上一级目录
cd ../

  效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gmCko6AB-1680000929646)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327165708812.png)]

  cd ~文件

  例如

//进入root目录下的test目录
cd ~/test

  效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lyrRWfGK-1680000929647)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327170141988.png)]

  cd ~用户名/文件

  例如

cd ~

  效果如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJ51SUrE-1680000929647)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327170349334.png)]

ls命令——列表显示目录内容

  ls,以列表的方式显示目录内容。ls显示目录中内容,包括子目录和文件相关属性信息

ls形式

ls [选项] [文件或目录...] 

  常用选项:-l -a -A -d -h -R --color

ls -l

  以长格式(Long)显示文件和目录的列表,包括权限、大小、最后更新时间等详细信息。ll命令与ls -l功能相同。

  如图,用ls -l 命令查看某一个目录会得到一个7个字段的列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VSAP93ld-1680000929647)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327180506075.png)]

drwxr-xr-x. 2 root root     6 3月  27 16:50 abc

第1字段drwxr-xr-x.代表文件属性字

​ 第一个字符代表的类型

  • “-“表示该文件是一个普通文件
  • "d”长示该文件是一个目录
  • "l”表示该文件是一个软链接文件。类似于windows下的快捷方式

​   第一个字符的后面9个字母表示该文件或目录的权限位:

​      r表示读(查看、下载)、w表示写(添加、更改、删除、上传)、x表示执行(运行文件、切换目录)

​     其中前三个表示文件拥有者(属主)的权限,中间三个表示文件所属组拥有的权限,最后三个表示其他用户拥有的权限。

第2字段2代表文件硬链接数

​   如果一个文件不是目录,此时这一字段表示这个文件所具有的硬链接数。如果是一个目录,则第2字段表示该目录所含子目录的个数。如果新建一个空目录,这个目录的第二字段就是2,表示该目录下有两个子目录。

第3字段root代表文件\目录拥有者

第4字段root代表文件\目录拥有者所在的组

第5字段6代表文件所占用的空间(默认以字节为单位)

​   如果是一个目录,则表示该目录的大小,而不是目录以及它下面的文件的总大小。Linux系统中一切皆文件,因此目录也是一种文件。

第6字段3月 27 16:50代表文件\目录最近访问或修改时间

第7字段abc代表文件名

  ​ 如果是一个符号链接(软链接文件),那么会有一个“->”箭头符号,后面根一个它指向的文件名

ls -a

  显示所有(All)子目录和文件的信息,包括名称以点号“.”开头的隐藏目录和隐藏文件。

如图,用命令查看

[root@host network-scripts]# ls -a

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4D1ryULd-1680000929648)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327183255769.png)]

ls -A

  与-a选项的作用基本类似,但有两个特殊隐藏目录不会显示,即表示当前的“."和表示父目录的“…”。

如图,用命令查看

[root@host network-scripts]# ls -A

在这里插入图片描述

ls -d

  显示目录(Directory)本身的属性,而不是显示目录中的内容。

如图,用命令查看abc目录本身的属性

[root@host network-scripts]# ls -l -d abc/
drwxr-xr-x. 2 root root 6 3月  27 16:50 abc/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ndyoRGm-1680000929649)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327183949032.png)]

ls -h

  以更人性化(Human)的方式显示目录或文件的大小,默认的大小单位为字节(B),使用-h选项后将显示KB、MB等单位。此选项需要结合-l选项一起使用。

如图,用命令更加人性化显示列表格式

[root@host network-scripts]# ls -l -h

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BW5ckg1h-1680000929649)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327184247645.png)]

ls -R

  以递归(Recursive)的方式显示目录及其子目录中的所有内容。

如图,用命令查看test下所有文件的属性

[root@host ~]# ls -l -R test/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eG5VHBDK-1680000929649)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327184616410.png)]

ls --color

  在字符模式中以颜色区分不同的文件。默认已开启。

  通常情况下,深蓝色表示目录,白色表示一般文件,绿色表示可执行的文件,黄色标识设备文件,红色表示压缩文件。

ls -i

  显示文件和目录的inode号。一个文件在系统中有特定的ID标识,文件名可能相同,inode号肯定不相同。除了硬链接文件,硬链接文件是别名。

如图,用命令查看所有文件inode号

[root@host ~]# ls -i

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zChRD51X-1680000929650)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327185027778.png)]

ls -t

  以时间排序,最新的文件会排在上面。

如图,用命令通过最新时间排序查看

[root@host ~]# ls -lt

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mM8BnyDw-1680000929650)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327185340033.png)]

ls -r

  表示反向排序、倒序输出。

如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uTgWExnO-1680000929651)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327185557712.png)]

结合通配符

  “?":代表任意一个字符,有且一个字符

例如

[root@host test]# ls 1?1
121  131  141

如图可知,只有121、131、141符合搜索要求,“?”只代表一个字符

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dTwrmpYU-1680000929651)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327190114928.png)]

  “*”:代表任意数个字符,可以是0个或者1个或者多个

例如

[root@host test]# ls 1*1
121  131  141  1abc1

如图可知,只有121、131、141、1abc1符合搜索要求,“*”代表任意字符个数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxRE1W1k-1680000929652)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327190716288.png)]

  “[]”:表示可以匹配字符组中的任意一个字符[abc]、[a-f]

[root@host test]# ls 1[234]1
121  131  141

如图可知,搜索1[234]1只有121、131、141符合要求,会取[]中的任意字符进行匹配。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VL15q2zv-1680000929652)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327190942171.png)]

alias命令——设置别名

  alias:通过别名机制简化常用的、比较长的命令

  alias命令的基本格式为:

alias 命令别名='命令'

这里需要注意的是:

  • 等号(=)前后不能有空格,否则就会出现语法错误了。
  • 如果value中有空格或tab,则value一定要使用引号(单、双引号都行)括起来。

定义别名

  了解了别名的基础知识之后,我们来看一个定义别名的例子:

[root@host ~]$ alias vi='vim'

  这个例子定义了一个 vim 命令的别名,以后,当我们执行 vi 命令时,其实真正执行的是 vim 命令。是不是很简单呢!

如何查看别名

  如果太热衷于设置别名,那么你就会面临着要记住很多别名的困扰,因此,学会查看所有已设置的别名,就显得尤为重要了。

  查看别名的方法也很简单,直接输入 alias 命令,不加任何选项和参数即可:

[root@host ~]$ alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

  可以看到,系统把当前可用的所有的别名都列出来了。仔细找一下,是不是可以看到刚才设置的那个别名了:alias vi='vim'

查看单独命令的别名

如果我们只想查看一个单独命令是否设置了别名,那么方法有两个。

方法一:使用 alias 命令加参数

[root@host ~]$ alias vi
alias vi='vim'

方法二:使用快捷键
  当在终端中输入一个命令后,按下 Ctrl+Alt+E 组合键,假如设置了别名,那么别名自动会变成实际的命令。

注意:这个快捷键并非在所有终端中都可行,有些终端的快捷键会和这个快捷键冲突,这样的话,该方法就不好使了。

如何取消别名

  别名定义的太多了,往往带来的不是方便,而是困扰。所以我们也需要掌握删除别名的方法。

  那么,如何删除一个别名呢?可以使用 unalias 命令。比如,我们想删除 vi=‘vim’ 这个别名,可以这样来操作:

//删除别名设置
[root@host ~]$ unalias vi
 
//再看看, 已经被删除了吧
[root@host ~]$ alias
alias cp='cp -i'
alias dirA='echo work directory is /root'
alias dirB='echo work directory is $PWD'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

  经过仔细观察,确实已经找不到刚才定义的 vi 别名了。

  如果你想删除所有的别名,直接使用 unalias 命令的-a选项即可,只不过要谨慎使用,避免你设置的所有的别名一下子都被清除了,自己还得一个一个重新设置回来。

//删除所有别名
[root@host ~]$ unalias -a
 
//空空如也
[root@host ~]$ alias

如何执行命令本身而非别名

  别名虽好,但也有它的弊端,比如定义的别名恰好和某个命令重名了,这就麻烦了,Shell 中执行的将永远都是别名。这里,如果我们想执行真正的那个命令而非别名,该怎么办呢?有三种方法可以解决这个问题:

  • 方案一:使用命令的绝对路径。
  • 方案二:切换到命令所在的目录,执行./command。
  • 方案三:在命令前使用反斜线(\)。

  下面我们就通过示例来演示这三个方法:

//绝对路径方法
[root@host ~]$ /bin/vi test.sh
 
//明确指定当前路径的方法
[root@host ~]$ cd /bin
[root@host bin]$ ./vi ~/test.sh
 
//使用反斜线的方法
[root@host bin]$ cd
[root@host ~]$ \vi test.sh

  这里推荐大家使用最后一种方法,因为它既方便又实用。

du命令——统计目录及文件空间占用情况

  du:统计指定目录(或文件)所占用磁盘空间的大小.

  du 命令的基本格式为:

du [选项] [文件或目录]

常用项

选项说明
-a统计磁盘空间占用时包括所有的文件,而不仅仅只是统计目录
-h以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果
-s只统计所占用空间总的大小,而不是统计每个子目录、文件的大小
–max-depth=n统计所有小于等于第n层的目录的总大小

注意选项-a和-s不可同时使用

du

如图,用命令查看

[root@host evolution]# du

在这里插入图片描述

du -a

  -a选项让 du 输出包括文件夹和文件在内的完整统计信息。

如图,用命令查看

[root@host evolution]# du -a

统计磁盘空间占用时包括所有的文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uA2eBZFV-1680000929653)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327194714105.png)]

du -h

  -h选项常常代表“展示帮助信息”,即 --help 的缩写形式。但是,du 命令却不走寻常路,它的-h选项是 --human-readable 的缩写形式,表示以人类可读的形式展示磁盘使用量的单位名称(K/M/G)。

如图,用命令查看

[root@host evolution]# du -ah

  以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OXZz4V00-1680000929654)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327194830141.png)]

du -s

  -s选项,是 --summarize 的缩写形式,其作用是对 du 的每一个给定参数计算其磁盘使用量,我们来看例子。

如图,用命令查看

[root@host evolution]# du -sh /root
79M	/root

只统计所占用空间总的大小,而不是统计每个子目录、文件的大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QfOaLmnA-1680000929654)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327195111458.png)]

du --max-depth=n

  文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth 选项来进行控制。

如图,用命令查看/var/log目录中子目录的大小

[root@host ~]# du -h --max-depth=1 /var/log/ 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YmUku7zZ-1680000929654)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327213516884.png)]

mkdir命令——创建新目录

  mkdir 命令,是 make directories 的缩写,用于创建新目录,此命令所有用户都可以使用。

  mkdir 命令的基本格式为:

mkdir [选项] 目录位置及名称

  其中选项我们这里主要介绍-p选项,-p选项是递归创建所有目录,以创建 /home/test/demo 为例,在默认情况下,你需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动帮你创建/home、/home/test 以及 /home/test/demo。

第一种是直接建立目录

[root@host test]# mkdir cangls
[root@host test]# ls
121  123  1234  12345  131  141  1abc1  222  234  345  a  b  c  cangls

  我们建立一个名为 cangls 的目录,通过 ls 命令可以查看到这个目录已经建立。注意,我们在建立目录的时候使用的是相对路径,所以这个目录被建立到当前目录下。

第二种是使用 -p 选项递归建立目录

mkdir -p 11/22/33/44

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbuVzj48-1680000929655)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327214932515.png)]

还有另一种一次性创建多个目录的方式,例如

mkdir {a,b,c}

这里使用了{}的扩展功能,一次性创建了三个目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nprZvJt2-1680000929655)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327215209705.png)]

-p后面加-v可以显示目录创建的规则,例如

[root@host test]# mkdir /aa/bb/cc -pv

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NZ0Lk8WG-1680000929656)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230327220053938.png)]

touch命令——创建空文件

  Linux的touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

  touch 命令的基本格式为:

touch 文件..

  touch文件有三种形式:修改文件时间、创建新的单个文件、创建新的多个文件。

第一种修改文件时间

touch test

如下图可知经过touch命令test的修改时间改变了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ONUBm34N-1680000929657)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328135451584.png)]

第二种创建新的单个文件

touch abc.txt

如下图可知使用touch命令后创建了一个txt文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbLeusnd-1680000929657)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328140309923.png)]

第三种创建新的多个文件

其中可以直接创建

touch 1.txt 2.txt 3.txt

如下图可知使用touch命令后同时创建了多个txt文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Eks3YVve-1680000929657)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328140054737.png)]

还有一种创建多个txt文件

touch {4,5,6}.txt

{}实现了扩展功能,可以用于一次性创建多个文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C20SlJnY-1680000929657)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328140742294.png)]

关于{}用法还有另一种

touch file{10..15}

{}中间的字符如果是连续的可以用..代替

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-36piCL4T-1680000929658)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328140956919.png)]

ln命令——创建理解文件

  ln是linux中一个非常重要命令。它的功能是为某一个文件在另外一个位置建立一个同步的链接。

  ln 命令的基本格式为:

ln [-s] 源文件或目录... 链接文件或目标位置

链接文件类型

  Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

软连接

  软链接只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间

ln [-s] 源文件或目录... 链接文件或目标位置

例如,给文件创建软链接

ln -s log2013.log link2013

说明:为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMjnmDEn-1680000929658)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328142748576.png)]

硬链接

  硬链接会在你选定的位置上生成一个和源文件大小相同的文件

ln 源文件或目录... 链接文件或目标位置

例如,给文件创建硬链接

ln log2013.txt ln2013

说明:为log2013.txt创建硬链接ln2013,log2013.txt与ln2013的各项属性相同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DcmYFrhF-1680000929658)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328145553992.png)]

如果我将删除链接原文件,软链接文件变为不可用,硬链接文件只有硬链接个数发生改变,仍然可以用。

[root@host ~/test]# rm -rf log2013.log
[root@host ~/test]# ll
[root@host ~/test]# rm -rf log2013.txt
[root@host ~/test]# ll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BM7RAYEe-1680000929659)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328145337410.png)]

软链接和硬链接区别

文件类型软链接文件硬链接文件
删除源文件后失效仍然可用(文件占用空间与源文件相同)
使用范围适用于文件和目录仅适用于文件
保存位置与源文件可在不同的文件系统中必须与源文件在同一个文件系统(即同一个分区)中
与源文件的关系相当于快捷方式相当于给文件起要个别名
inode号码inode号码不同inode号码相同

可以用图来表示硬链接和软链接。在Linux中,文件名文件数据是分开存储的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bBW3TtkM-1680000929660)(F:\博客存放\软链接硬链接.jpg)]

这里有两点要注意:

  第一,ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

  第二,ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

  ln指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

cp命令——复制文件或目录

  cp命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令 一样,功能非常强大。

  cp 命令的基本格式为:

cp [选项] 源文件或目录 目标文件或目录

常用项

选项说明
-f覆盖目标同名文件或目录时不进行提醒,而直接强制复制
-i覆盖目标同名文件或目录时提醒用户确认
-p复制时保持源文件的权限、属主及时间标记等属性不变
-r复制目录时必须使用此选项,表示递归复制所有文件及子目录

注意:复制多个文件或目录时,目标位置必须是目录,且目标目录必须已存在

cp命令基本用法

  cp 命令既可以复制文件,也可以复制目录。我们先来看看如何复制文件,例如:

//建立源文件
[root@host ~]# touch cangls
//把源文件不改名复制到 /tmp/ 目录下
[root@host ~]# cp cangls /tmp/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfmdVfuN-1680000929661)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328152132248.png)]

如果需要改名复制,则命令如下:

//改名复制
[root@host ~]# cp cangls /tmp/bols

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HuEAlEsM-1680000929661)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328152424130.png)]

如果复制的目标位置已经存在同名的文件,则会提示是否覆盖,因为 cp 命令默认执行的是“cp -i”的别名,例如:

//目标位置有同名文件,所以会提示是否覆盖
[root@host ~]# cp cangls /tmp/
cp:是否覆盖"/tmp/cangls"?y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9wpUr0tn-1680000929662)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328152408414.png)]

接下来我们看看如何复制目录,其实复制目录只需使用“-r”选项即可,例如:

//建立测试目录
[root@localhost ~]# mkdir movie
//目录原名复制
[root@localhost ~]# cp -r /root/movie/ /tmp/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXdK1ats-1680000929662)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328152648287.png)]

注意:cp是cp -i的别名,要想不使用cp -i的别名功能,有三种方法:取消别名(alias cp);使用cp这个外部命令的完整路径,进入/usr/bin/cp;\cp也能取消cp的别名功能。

rm命令——删除文件或目录

  当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理。rm 是强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。

  rm 命令的基本格式为:

rm [选项] 源文件或目录 目标文件或目录

常用项

选项说明
-f强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。
-i和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的文件或目录。
-r递归删除,主要用于删除目录,可删除指定目录及包含的所有内容,包括所有的子目录和文件。

注意,rm 命令是一个具有破坏性的命令,因为 rm 命令会永久性地删除文件或目录,这就意味着,如果没有对文件或目录进行备份,一旦使用 rm 命令将其删除,将无法恢复,因此,尤其在使用 rm 命令删除目录时,要慎之又慎。

基本用法
  rm 命令如果任何选项都不加,则默认执行的是"rm -i 文件名",也就是在删除一个文件之前会先询问是否删除。例如:

[root@host ~/test]# touch cangls
[root@host ~/test]# rm cangls
//删除前会询问是否删除
rm:是否删除普通空文件"cangls"?y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12sL3vRm-1680000929662)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328154144396.png)]

删除目录
如果需要删除目录,则需要使用"-r"选项。例如:

//递归建立测试目录
[root@host ~/movie]# mkdir -p test/lm/movie/jp
[root@host ~/movie]# rm test
rm:无法删除"/test/": 是一个目录
//#如果不加"-r"选项,则会报错
[root@host ~/movie]# rm -r test
//会分别询问是否进入子目录、是否删除子目录
rm:是否进入目录"test"? y
rm:是否进入目录"test/lm"? y
rm:是否进入目录"test/lm/movie"? y
rm:是否删除目录 "test/lm/movie/jp"?y
rm:是否删除目录 "test/lm/movie"?y
rm:是否删除目录 "test/lm"?y
rm:是否删除目录 "test"?y

在这里插入图片描述

大家会发现,如果每级目录和每个文件都需要确认,那么在实际使用中简直是灾难!

强制删除
  如果要删除的目录中有 1 万个子目录或子文件,那么普通的 rm 删除最少需要确认 1 万次。所以,在真正删除文件的时候,我们会选择强制删除。例如:

//重新建立测试目录
[root@host ~/movie]# mkdir -p test/lm/movie/jp
//强制删除,一了百了
[root@host ~/movie]# rm -rf test

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NtNZOqtG-1680000929663)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328155055034.png)]

  加入了强制功能之后,删除就会变得很简单,但是需要注意,数据强制删除之后无法恢复,除非依赖第三方的数据恢复工具,如 extundelete 等。但要注意,数据恢复很难恢复完整的数据,一般能恢复 70%~80% 就很难得了。所以,与其想要数据恢复,不如养成良好的操作习惯。

  虽然 -rf 选项是用来删除目录的,但是删除文件也不会报错。所以,为了使用方便,一般不论是删除文件还是删除目录,都会直接使用 -rf选项。

mv命令——移动文件或目录

  mv 命令(move 的缩写),既可以在不同的目录之间移动文件或目录,也可以对文件和目录进行重命名。

  mv 命令的基本格式为:

mv [选项]... 源文件或目录... 目标文件或目录

常用项

选项作用
-f强制覆盖,如果目标文件已经存在,则不询问, 直接强制覆盖
-i如果目标文件已经存在,则询问用户 是否覆盖(默认选项)
-v显示文件或目录的移动过程

需要注意的是,同 rm 命令类似,mv 命令也是一个具有破坏性的命令,如果使用不当,很可能给系统带来灾难性的后果。

移动文件或目录

//移动之后,源文件会被删除,类似剪切
[root@host ~]# mv file15 /tmp
[root@host ~]# mkdir test
//也可以移动目录。和 rm、cp 不同的是,mv 移动目录不需要加入 "-r" 选项
[root@host ~]# mv test/ /tmp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b7lwmuER-1680000929663)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328161135054.png)]

如果移动的目标位置已经存在同名的文件,则同样会提示是否覆盖,因为 mv 命令默认执行的也是 “mv -i” 的别名,例如:

//重新建立文件
[root@localhost ~]# touch cangls
[root@localhost ~]# mv cangls /tmp
//由于 /tmp 目录下已经存在 cangls 文件,所以会提示是否覆盖,需要手工输入 y 覆盖移动
mv:县否覆盖"tmp/cangls"?y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jGpSXJRb-1680000929664)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328161404756.png)]

强制移动
  之前说过,如果目标目录下已经存在同名文件,则会提示是否覆盖,需要手工确认。这时如果移动的同名文件较多,则需要一个一个文件进行确认,很不方便。

  如果我们确认需要覆盖已经存在的同名文件,则可以使用 -f选项进行强制移动,这就不再需要用户手工确认了。例如:

//重新建立文件
[root@localhost ~]# touch cangls
//就算 /tmp/ 目录下已经存在同名的文件,由于"-f"选项的作用,所以会强制覆盖
[root@localhost ~]# mv -f cangls /tmp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4KbWCJkc-1680000929664)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328161538442.png)]

改名
   如果源文件和目标文件在同一目录中,那就是改名。例如:

//把 lmls 改名为 bols
[root@host ~]# mv lmls bols

目录也可以按照同样的方法改名。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WjPsrZkb-1680000929664)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328161749627.png)]

which命令——查找命令文件存放目录

  which 用于查看给定命令的绝对路径。

  which 可指定一个或多个参数。对于它的每个参数,它将可执行文件的完整路径打印到 stdout。它通过使用与 bash(1) 相同的算法在环境变量 PATH 中列出的目录中搜索可执行文件或脚本来实现这一点。

  which 命令的基本格式为:

//默认当找到第一个目标后不再继续查找
which 命令|程序名
//在所有搜索路径中查找
which -a 命令|程序名

如果想要知道某个命令所在路径可用用which来查找

[root@host ~]# which cd
/usr/bin/cd
[root@host ~]# which -a touch
/usr/bin/touch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2rg4fBG-1680000929665)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328162906320.png)]

一般情况下,which 是一个别称,可以查看 which 的详细定义

root@host ~]# which which

alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
	/usr/bin/alias
	/usr/bin/which

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8xFu42F-1680000929665)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328163221059.png)]

打印帮助信息

[root@host ~]# which --help

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7vzGMMw-1680000929665)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328163407792.png)]

find命令——查找文件或目录

  find是用来在文件系统上查找复合条件的文件。

  find命令有非常强大的灵活性,可以指定丰富的搜索条件(如文件权限属主属组文件类型日期和大小等)来定位系统中的文件和目录,同时还支持对对搜索的结果进行命令操作。

  find 命令的基本格式为:

find [搜索范围] [查找条件表达式]

注意:查找范围是指查找文件或子目录的目标位置;查找条件表达式是指按照条件类型查找。

常用查找条件类型

查找类型关键字说明
按名称查找-name根据目标文件的名称进行查找,允许使用“*”及“?”通配符
按文件大小查找-size根据目标文件的大小进行查找
一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括kB(注意k是小写)、MB、GB
按文件属主查找-user根据文件是否属于目标用户进行查找
按文件类型查找-type根据文件的类型进行查找
文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件©等块设备文件(b):成块读取数据的设备(硬盘,内存,光驱)
字符设备文件©:按单个字符读取数据的设备(键盘,鼠标)

查找条件

根据文件名查找——name

//查找 movie 目录下所有文件名以 .txt 结尾的文件
[root@host ~]# find /usr -name '[0-9].txt'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4r1Thkj-1680000929665)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328170750421.png)]

//查找 /usr 目录下所有文件名刚好为1个字符的文件
[root@host ~]# find /usr -name '?.txt'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n0rR8zA9-1680000929666)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328170823913.png)]

//查找 /usr 下所有文件名以 .txt 结尾的文件或目录,且该文件的父目录必须是 src
[root@host ~]# find /usr -path '*/src/*.txt'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lwMrAhJr-1680000929666)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328170954135.png)]

根据文件类型查找——type

//检索 /usr 下所有文件名以 python 开头的目录
[root@host ~]# find /usr -type d -name 'python*'

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ceIcTWz1-1680000929666)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328175327124.png)]

根据文件大小来查找——size

//查找大于100M的文件
[root@host ~]# find /sys -size +100M 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fi3zQWPp-1680000929667)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328175458929.png)]

根据文件的所属权来查找——user

//查找/var目录下属主为root,且属组为mail的所有文件或目录
find /var -user root -a -group mail

在这里插入图片描述

根据inode号进行查找——inum

//根据33823474查找对应文件为bols
[root@host ~]# find / -inum 33823474 
/root/bols

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jv3DJgLb-1680000929667)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328181254210.png)]

根据修改时间来查找——mtime

//查找20天以前的文件
[root@host ~]# find -mtime  +20 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlHDVSIk-1680000929668)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328180400984.png)]

find命令实现多个查找

逻辑运算符

  find命令支持一些复杂的搜索方式:逻辑与、逻辑或、逻辑非。而我这里主要介绍的是逻辑与(且)、逻辑或(或)。

  -a:and,逻辑与

  find命令也支持逻辑运算符选项,其中-a代表逻辑与运算,也就是-a的两个条件都成立,find搜索的结果才成立(其中有一个不成立都不行)。

例如

//在当前目录下搜索大于2MB,并且文件类型是普通文件的文件
[root@localhost ~ ] # find . -size +2M -a -type f

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uuFAMG68-1680000929668)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328182101495.png)]

  -o:or,逻辑或

  -o选项代表逻辑或运算,也就是-o的两个条件只要其中一个成立,find命令就可以找到结果。

例如:

//在当前目录下搜索文件要么是大小大于2MB的文件,要么是bols的文件,两个都可以搜索到。 
[root@localhost ~ ] # find . -size +2M -o -name bols
./.cache/mozilla/firefox/uzbm9w8w.default-default/startupCache/startupCache.8.little
./.cache/mozilla/firefox/uzbm9w8w.default-default/startupCache/scriptCache-current.bin
./.mozilla/firefox/uzbm9w8w.default-default/places.sqlite
./.mozilla/firefox/uzbm9w8w.default-default/favicons.sqlite
./bols

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIR09GjQ-1680000929668)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328182236338.png)]

exec用法

  -exec参数后面跟的是Linux命令,它是以分号“;”为结束标志,由于各个系统中分号会有不同的意义,因此正在分号前面加上反斜杠转义符“\”。

  find 命令exec用法的基本格式为:

find 搜索路径 [选项] 搜索内容 -exec 命令 {} \;

注意:

  1.{}代表前面find查找出来的文件文件名

  2.基本格式,只要写 -exec,命令最后一定要写 \;

例如

//查找名字中含有“.txt”的普通文件,并使用ls -l命令将它列出来
[root@host ~]# find ./ -type f -a -name "*.txt" -exec ls -l {} \;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AzE12SXu-1680000929669)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328183532351.png)]

xargs命令

  当在find命令中利用-exec对查找到的结果进行进一步处理时,有时可能会出现问题。这是因为-exec是将find所找到的结果一次性地送给后面的命令进行处理,有时候find可能会找到大量的文件,超出了后面的命令所能处理的参数范围,这时就会出现溢出错误,错误信息通常是“参数列太长”或“参数列溢出”,这时就可以使用xargs命令。xargs虽然本身是一个独立的Linux命令,但通常都是被用来配合find命令使用。通过xargs,可以将find所找到的结果分批次地送给之后的命令进行处理,从而避免出现溢出问题。

  xagrs 命令的基本格式为

find 搜索路径 [选项] 搜索内容 | xargs 命令

例如

//查找名字中以“.cfg”结尾的文件,并使用ls -l命令将它列出来
[root@host ~]# find ./ -name "*.cfg" | xargs ls -l

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jfHpgUtq-1680000929669)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328184751831.png)]

find命令删除

find 查看删除的三种方式,如删除当前目录下的txt文件:

方法1:xargs rm -f

[root@host ~/movie]# find ./ -type f -name "*txt" | xargs rm -f

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A8uEAw9m-1680000929669)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328185137792.png)]

方法2:-exec rm -f

[root@host ~/movie]# find ./ -type f -name "*txt" -exec rm -f {} \;

-exec命令是查找到的每个文件调用一次rm命令,因此速度最慢

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KTqL4Jjf-1680000929669)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328185409470.png)]

方法3:-delete

[root@host ~/movie]# find ./ -type f -name "*txt" -delete

如果一次删除大量文件,建议采用第三种方式。经测试在删除千万级文件时,第三种方式比前两种快百倍。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvciVnCx-1680000929670)(C:\Users\86138\AppData\Roaming\Typora\typora-user-images\image-20230328185454170.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的宝贝大唐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值