Linux常用shell命令(二)

举报
mindtechnist 发表于 2023/05/11 15:24:46 2023/05/11
【摘要】 三、文件相关命令1. 文件操作命令(1)touch创建文件touch+不存在的文件名,创建一个文件。如果touch后面是一个已经存在的文件,那么将会更改文件的最后访问时间。(2)rm删除文件Linux下一切皆文件!删除目录的时候一般要加上 -r 选项,表示递归删除子目录(因为Linux中的目录是树状的)-f选项表示强制删除rm -rf *这条命令表示强制删除当前目录的所有内容( * 适配任意...

三、文件相关命令

1. 文件操作命令

(1)touch创建文件

touch+不存在的文件名,创建一个文件。

image

如果touch后面是一个已经存在的文件,那么将会更改文件的最后访问时间。

image

(2)rm删除文件

Linux下一切皆文件!

删除目录的时候一般要加上 -r 选项,表示递归删除子目录(因为Linux中的目录是树状的)

image

-f选项表示强制删除

rm -rf *

这条命令表示强制删除当前目录的所有内容( * 适配任意个字符)。

删除多个文件,直接在rm命令后写上多个文件的文件名即可

rm -f 1.c 2.c 3.c

更多的选项可以通过 man rm 查看。

(3)cp拷贝命令

cp命令的使用要分为几种情况:

  • 目标文件存在和目标文件不存在;
  • 目标文件是文件还是目录;

① 首先目标文件不存在的情况,会直接把源文件拷贝一份并命名为目标文件名;

image

② 目标文件已存在,源文件会覆盖目标文件,并重命名为目标文件名;

image

③ 目标文件是目录,会把源文件拷贝到目标目录中,如果源文件目录有子目录,需要加 -r选项递归拷贝子目录。

image

(4)mv文件移动

和cp命令一样,也要考虑情况:

① 目标文件不存在,相当于给源文件重命名,和cp的区别是,cp之后源文件依然存在,但是mv之后源文件就没了。

image

② 目标文件存在,将覆盖目标文件,并且源文件消失(区别于cp命令)

image

③ 目标文件为路径,会将源文件移动到目标路径下面。

2. 文件内容相关

(1)cat查看内容

查看文件的内容,加 -n 选项可以显示行号。

image

(2)more按屏查看内容

more可以只显示一屏的文件内容,并且在屏幕下方会显示百分比,按enter将一行一行的滚动翻页,按空格可以一屏一屏的滚动翻页,当显示到100%会自动结束,more不能向上翻页。

image

(3)less按屏查看

less比more功能更多一些,less可以使用上下键翻页,每次滚动一行,enter按行向下滚动,空格按屏向下滚动,上键按行向上滚动(more不可以上翻),并且less显示到末尾不会自动退出,按q键手动退出。

(4)head查看文件头部

如果不加选项参数,默认显示文件的前十行,通过 -n选项可以指定显示行数

image

(5)tail查看文件尾部

如果不加选项参数,默认显示文件的后十行,通过 -n选项可以指定显示行数

image

tail通常的用法是通过 -f 选项一直显示文件尾,通过该选项可以不停的显示文件尾部信息,如果文件尾部信息发生变化,那么tail会立马显示出来,通过 tail -f 可以用于追踪日志变化,比如在通信中,我们通过日志打印连接情况,这样就可以在终端不停的显示最新的连接情况。通过SecureCRT克隆会话功能,可以实现一个会话用于通信中的各种操作,另一个会话通过 tail -f 追踪日志变化。

3. 文件权限与用户属性

当我们使用 ls -l 查看详细信息的时候,会看到文件的详细信息,每部分的含义请看下图

image

说明:目录都是具有可执行权限的,如果把目录权限修改为不可执行,那么目录将无法进入;目录大小一般都是4096字节,也就是4kb。

  • 文件类型介绍:
文件类型 含义
d 目录文件
- 普通文件
l 软连接(符号链接)
b 块设备
p pipe管道设备
s 本地套接字
c 字符设备
  • 文件权限介绍
权限 含义
r 读权限
w 写权限
x 执行权限

权限位是按照 读权限-写权限-执行权限 顺序排列的,第一位表示读权限,有则写 r,无则为 - ;第二位是写权限,有则写 w ,无则为 - ;第三位是执行权限,有则写 x ;无则为 - 。对应的权限位数字表示法为,有权限为1,无权限为0。下面举例说明:

image

(1)umask查看8进制文件掩码

umask可以查看文件权限的掩码,那么什么是权限掩码呢?这应该分文件和目录两种情况来考虑,因为二者的默认权限是不同的。

① 目录

以上面看到的aa目录为例,它的权限为 rwxr-xr-x 用数字表示是0755,那么用umask查看它的8进制权限掩码为0022

image

目录默认的满权限为0777,用掩码0022对满权限0777取反得0755,再用0755&0777,得到0755这就是目录aa的权限。或者直接 0777-0022=0755 也可。

② 文件

文件默认满权限是0666,所以应将文件掩码对0666取反再相与,或0666减去掩码,比如文件3.c,0666-0022=0666 对应 rw-r–r–

4. 修改用户权限

我们在命令行的时候可以看到最前面有一个 # 或者 $ 他们分别代表超级用户root和普通用户。

# :超级用户root,管理员用户

$:普通用户

image

我的前面是一个 # 说明我当前用的是root超级用户。

我们通常会有用户和用户组,用户组的存在方便了对用户的管理,比如对一个文件,我给某个用户组相应权限,其他用户没有权限,那么这个用户组就可以方便的对文件进行相应操作。注意,root是超级用户,它不属于任何一个组,且具有最高权限。

(1)whoami我是谁

查看当前用户

image

(2)chmod修改用户权限

① 直接增删权限

chmod [u/g/o/a] [+/-] [r/w/x]

u:用户,修改当前用户的权限

g:组,修改当前用户组的权限

o:其他用户,修改其他用户的权限

a:所有用户,修改所有用户权限

+:增加权限

-:去除权限

r:读权限

w:写权限

x:执行权限

通过上面的组合来达到修改权限的目的。举例:

image

比如上面的1111.txt文件,我们要去除它的用户写权限,应该使用的命令组合是

chmod u-w 1111.txt

image

然后我们要给所有用户增加写权限,应使用

chmod a+w 1111.txt

image

② 使用8进制数字权限修改文件权限

比如,我们给1111.txt当前用户和用户组只有写权限,无读权限,无可执行权限,其他用户没有任何权限,那么这个权限的8进制数字表示为 0220,可以使用命令

chmod 0220 1111.txt

image

可以看到,1111.txt原先的 rw-rw-rw- 变成了 -w–w----

第一种方法适用于对一个用户(或用户组)增减删除某个权限,如果需要要修改的权限位比较多的话,使用8进制数字修改更为方便。

(3)chown修改文件归属用户

需要管理员权限

sudo chown qq:qq1 1111.txt

该命令是让1111.txt归属于qq用户组的qq1用户。

(4)chgrp修改文件所属组

需要管理员权限

sudo chgrp qq2 1111.txt

该命令是让1111.txt归属于qq2用户组。

5. 软链接和硬链接

首先介绍以下什么是软链接,什么是硬链接。

① 硬链接

硬链接是指通过索引节点来进行链接。在Linux文件系统中,存放在磁盘中的文件都会有一个索引节点号(inode index),硬链接就是多个文件名对应同一个索引节点,硬链接就是指向一个磁盘文件的有效路径名,硬链接文件和源文件是同一个文件。

② 软链接

软链接也叫符号链接,它是一个文件,文件中保存了指向文件的位置信息。

image

通过 ll 命令查看源文件,软链接和硬链接如上图所示,可以看到硬链接和源文件大小一致,而软链接不同,并且在软链接后面还有个箭头标志 -> 指向了源文件。并且可以看到硬链接和源文件的链接数都是2,而软链接的链接数是1。

实际上,对于软硬连接的本质可以这么理解:

软链接其实是新建立了一个文件,会新建一个inode节点,这个文件保存了源文件的位置,也就是指向了源文件,你可以把它理解为Windows下面的快捷方式,或者理解为C语言中的指针,如果删除软链接,源文件不会受到任何影响,因为软链接和硬链接是两个不同的文件,但是如果删除源文件,虽然软链接不会受影响,但是他就失去了意义,可以对比C语言指针去理解。

硬链接不会建立新的inode节点,和它源文件是同一个文件,只是将链接计数加1,所以硬链接不可以跨文件系统,可以把硬链接理解为C++中的引用,如果我们修改了源文件,那么硬链接的内容也会相应修改,软链接就是源文件的别名而已。当我们删除硬链接的时候,链接计数就会减一,当链接计数为0的时候,源文件就被删除了,对于硬链接就按照C++引用去理解。

我们可以通过 ls -i 选项来查看文件i节点来验证

image

硬链接和源文件具有相同的i节点,说明他俩是同一个文件,硬链接不会建立新的i节点,只是将链接数加1,而软链接有自己的i节点,说明软链接是一个单独的文件,和源文件不是一回事。那么硬链接和copy有什么关系呢,copy得到的是一个单独的文件,修改它对源文件无任何影响,所以硬链接和copy无任何关系,硬链接是指,两个连接引用同一块磁盘空间(拷贝是拷贝了一块内存空间,总共两个不同的空间)。

(1)ln建立软硬连接

建立软链接的时候要加一个 -s 选项

image

(2)unlink删除链接

unlink可以删除软链接或硬链接,unlink每次删除一个硬链接,文件的链接计数就会减1,当链接计数为0时,文件被删除(所有链接被删除,磁盘空间就无法找到了)。

image

如果使用 rm 删除源文件,那么软链接失效,硬链接计数减1。

image

可以看到硬链接计数减一,软链接变成红色失效了。

四、查看空间占用相关命令

(1)wc统计

选项:

-w :统计单词数

-l :统计行数

-c :统计字节数

image

查看2.txt的单词数、行数、字节数分别为2、2、6。

(2)du查看占用空间大小

① 查看当前目录占用空间情况

image

② 查看某一个目录占用空间情况

image

-h选项,按照适合程序员观看的方式显示(显示单位K)

image

④ 多级子目录只显示一级

–max-depth=1 选项,指定子目录递归最大深度

image

(3)df查看磁盘使用情况

显示磁盘使用情况,以及按照GB单位显示

image

更多选项可以通过man获取。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。