【一、玩转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获取。

相关文章
|
10月前
|
存储 安全 Linux
Linux卡在emergency mode怎么办?xfs_repair 命令轻松解决
Linux虚拟机遇紧急模式?别慌!多因磁盘挂载失败。本文教你通过日志定位问题,用`xfs_repair`等工具修复文件系统,三步快速恢复。掌握查日志、修磁盘、验重启,轻松应对紧急模式,保障系统稳定运行。
1585 2
|
11月前
|
缓存 监控 Linux
Linux内存问题排查命令详解
Linux服务器卡顿?可能是内存问题。掌握free、vmstat、sar三大命令,快速排查内存使用情况。free查看实时内存,vmstat诊断系统整体性能瓶颈,sar实现长期监控,三者结合,高效定位并解决内存问题。
980 0
Linux内存问题排查命令详解
|
11月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1058 1
二、Linux文本处理与文件操作核心命令
|
11月前
|
安全 Ubuntu Unix
一、初识 Linux 与基本命令
玩转Linux命令行,就像探索一座新城市。首先要熟悉它的“地图”,也就是/根目录下/etc(放配置)、/home(住家)这些核心区域。然后掌握几个“生存口令”:用ls看周围,cd去别处,mkdir建新房,cp/mv搬东西,再用cat或tail看文件内容。最后,别忘了随时按Tab键,它能帮你自动补全命令和路径,是提高效率的第一神器。
1665 58
|
11月前
|
Linux
linux命令—stat
`stat` 是 Linux 系统中用于查看文件或文件系统详细状态信息的命令。相比 `ls -l`,它提供更全面的信息,包括文件大小、权限、所有者、时间戳(最后访问、修改、状态变更时间)、inode 号、设备信息等。其常用选项包括 `-f` 查看文件系统状态、`-t` 以简洁格式输出、`-L` 跟踪符号链接,以及 `-c` 或 `--format` 自定义输出格式。通过这些选项,用户可以灵活获取所需信息,适用于系统调试、权限检查、磁盘管理等场景。
731 137
|
11月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
866 16
|
Linux 网络安全 开发工具
技术栈:这50条最常用的 Linux 命令你一定要会!
建议多在终端中实践,遇到不懂的命令就用 man 或 --help 了解详情!
2199 0
|
安全 Linux Shell
Linux系统中sudo命令的高效运用技巧。
用户可以通过sudo -l来列出自己目前可执行的命令列表,这有助于用户了解自己的权限范围。
438 0
|
监控 Linux Shell
linux命令
常用 Linux 命令汇总
|
Linux C++
每天一个linux命令(8):cp 命令
cp 命令是 Linux 中用于复制文件或目录的命令。它的名字来源于英文单词 copy。这个命令非常常用,特别是在需要备份文件或创建文件副本时。
763 0