【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示(二)

简介: 【一、玩转shell命令】Linux常用shell命令(及相关知识)详解与用法演示

三、文件相关命令

1. 文件操作命令

(1)touch创建文件

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

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

(2)rm删除文件

Linux下一切皆文件!

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

-f选项表示强制删除

rm -rf *

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

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

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

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

(3)cp拷贝命令

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

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

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

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

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

(4)mv文件移动

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

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

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

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

2. 文件内容相关

(1)cat查看内容

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

(2)more按屏查看内容

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

(3)less按屏查看

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

(4)head查看文件头部

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

(5)tail查看文件尾部

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

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

3. 文件权限与用户属性

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

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

  • 文件类型介绍:
  • 文件权限介绍
权限 含义
r 读权限
w 写权限
x 执行权限

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

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

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

① 目录

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

目录默认的满权限为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,管理员用户

$:普通用户

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

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

(1)whoami我是谁

查看当前用户

(2)chmod修改用户权限

① 直接增删权限

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

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

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

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

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

+:增加权限

-:去除权限

r:读权限

w:写权限

x:执行权限

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

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

chmod u-w 1111.txt

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

chmod a+w 1111.txt

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

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

chmod 0220 1111.txt

可以看到,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),硬链接就是多个文件名对应同一个索引节点,硬链接就是指向一个磁盘文件的有效路径名,硬链接文件和源文件是同一个文件。

② 软链接

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

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

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

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

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

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

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

(1)ln建立软硬连接

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

(2)unlink删除链接

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

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

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

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

(1)wc统计

选项:

-w :统计单词数

-l :统计行数

-c :统计字节数

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

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

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

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

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

④ 多级子目录只显示一级

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

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

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

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

相关文章
|
4天前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
16 7
|
3天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
16 5
|
20小时前
|
Java Shell Windows
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
10 1
|
4天前
|
监控 Linux Perl
Linux 命令小技巧:显示文件指定行的内容
在 Linux 系统中,处理文本文件是一项常见任务。本文介绍了如何使用 head、tail、sed 和 awk 等命令快速显示文件中的指定行内容,帮助你高效处理文本文件。通过实际应用场景和案例分析,展示了这些命令在代码审查、日志分析和文本处理中的具体用途。同时,还提供了注意事项和技巧,帮助你更好地掌握这些命令。
13 4
|
3天前
|
缓存 网络协议 Linux
Linux ip命令常用操作
Linux的 `ip`命令是一个强大且灵活的网络管理工具,能够执行从基本的网络接口配置到高级的路由和VLAN管理等多种操作。通过熟练掌握这些常用操作,用户可以更加高效地管理和配置Linux系统的网络环境。无论是在日常管理还是故障排除中,`ip`命令都是必不可少的工具。
7 2
|
Unix Shell Linux
|
3月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?
|
6月前
|
Shell Linux C语言
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
Linux中执行Shell的函数(popen,system,exec)介绍:分享一些常用的执行Shell的函数及其相关编程技巧和经验
200 0