一、文件链接
它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,称为硬链接;另一种是symbolic link,称为符号链接,也称为软链接。
1、符号链接 :
- 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
- 符号链接可以跨文件系统 ,硬链接不可以。
- 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
- 符号链接可以对目录进行链接,硬链接不可以。
2、硬链接:
- 硬链接以文件副本的形式存在,但不占用实际空间。(即便删除源文件依然能够查看,而符号链接则失效)
- 硬链接不允许给目录创建硬链接。
- 硬链接只有在同一个文件系统中才能创建。
语法格式:
参数:-s 对源文件建立符号链接,而非硬链接。
ln [参数] [源文件或目录] [目标文件或目录]
二、权限管理命令
chmod 命令用来改变文件或目录权限的命令,但是只有文件的属主和超级用户 root 才能执行这个命令。有两种模式,一种是采用权限字母和操作符表达式;另一种是采用数字。查看文件或目录权限的命令:ls -l 或 ll。(详细解释)
chgrp 命令用于变更文件或目录的所属组。umask 命令用于显示和设置用户创建文件的默认权限。
1、修改文件/目录访问权限
方法一:文字设定法
语法格式:
chmod [选项] [who] [+/-/=] [mode] 文件名或者目录名
who:
- u:所属者
- g:所属组
- o:其他用户
- a:所有的
操作符合:
- +:添加权限
- -:剥夺权限
- =:设置指定权限并取消其他所有权限。例如:u=rw,则会失去 x 权限。
mod:
- r:可读
- w:可写
- x:可执行
**注意:**对不同用户操作权限,可以使用 ,
分隔。
实例:
chmod u=rw,g=rx,o=r /tmp/test
chmod u=rwx /tmp/test
chmod a+rw /tmp/test
方法二:数字设定法
语法格式:
chmod 三位8进制数 文件或者目录
u g o
rw- r-- r-- 变化范围000-777
110100100 三位8进制数 644
实例:
chmod 644 /tmp/test
2、修改文件/目录的所有权
修改文件/目录的所属者。
chown 用户名 文件或者目录
修改文件/目录的所属者和所属组。
chown 用户名.组名 文件或者目录
只修改所属组,使用 chgrp 命令。
chgrp 组名 文件或者目录
3、修改文件/目录的默认权限
语法格式:
umask [参数] [权限掩码]
当使用不带参数的 umask 命令时,系统就会输出当前 umask 的值。
[root@localhost tmp]# umask
0022
通常文件权限只会用到后 3 位,即 022。值得一提的是 umask 命令与 chmod 命令设定刚好相反,umask 设置的是权限“补码”,而 chmod 设置的是文件权限码。对于文件言,系统不允许创建之初就对其赋予可执行权限,因此文件权限的最高设定值为 6,目录为 7。将最高可选值减去 umask 中的值即得到默认文件创建权限。因此当 umask 为 022 时,默认创建文件的权限为 644,而默认创建目录的权限为 755。
- 创建的文件:777-111-022=644
- 创建的目录:777-022=755
umask 参数使用方法如下,n 为 0~7 的整数。
umask nnn
三、查找命令
1、查找命令及相关文件的路径
whereis 命令用来定位命令的二进制程序、源代码文件和 man 手册页等相关文件的路径。whereis 命令查找速度非常快,因为它不是在磁盘中乱找,而是在一个数据库中查询; 数据库是 linux 系统自动创建的,包含有本地所有文件的信息,并且每天通过自动执行 updatedb 命令更新一次。正因为这样,whereis 命令的搜索结果有时候会不准确,比如刚添加的文件可能搜不到, 原因就是该数据库文件没有被更新。
语法格式:
whereis [参数] [命令名]
显示 ln 命令的程序和 man 手册页的位置:
[root@localhost tmp]# whereis ln
ln: /bin/ln /usr/share/man/man1/ln.1.gz /usr/share/man/man1p/ln.1p.gz
2、查找文件
which 指令会在环境变量 $PATH 设置的目录里查找符合条件的文件。运维人员在日常工作中经常使用 which 命令来检查某个系统命令是否存在,或者找出所执行命令所对应的具体位置。
语法格式:
which [参数] [文件]
3、快速查找
locate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库 /var/lib/locatedb,值得注意的是:版本不同,会有所不同。有的版本位置是 /var/lib/mlocate/mlocatedb,还有的是 /var/lib/slocate/slocate.db ,这个数据库中含有本地所有文件信息。
Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。
语法格式:
locate [参数] [文件]
搜索 /text 目录下所有以 b 开头的文件:
[root@localhost mlocate]# locate /text/b
/text/b
/text/bb
/text/bbb
4、查找文件
find 命令可以根据给定的路径和表达式查找的文件或目录。find 参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
find 如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用 find 命令,find 命令模糊搜索还是比较消耗系统资源的。
语法格式:
find [路径] [参数] 文件或者目录
常用参数:
| 参数名 | 解释 |
| :-: | - |
| -name | 按照文件的名字查找 |
| -user | 查找符和指定的拥有者名称的文件或目录 |
| -group | 查找符合指定之群组名称的文件或目录 |
| -mtime | 查找在指定时间曾被更改过的文件或目录,单位以24小时计算 |
| -mmin | 查找在指定时间曾被更改过的文件或目录,单位以分钟计算 |
| -ctime | 查找在指定时间之时被更改的文件或目录,单位以24小时计算 |
| -perm | 查找符合指定的权限数值的文件或目录 |
| -size | 查找符合指定的文件大小的文件 |
| -type | 只寻找符合指定的文件类型的文件 |
| -newer | 查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录 |
实例
在根目录下查找文件大小,大于 50 MB且小于 100 MB 的文件。
find / -size +50M -size -100M
在根目录下查找内容在5天内修改的文件。
find / -mtime -5
在根目录下查找比 /test/a 文件新但是比 /test/b 文件旧的文件。
find / -newer /test/a -a ! -newer /test/b
列出所有/etc目录下的链接文件。
find /etc -type l
查找根目录下所有 st 开头的文件。
find / -name 'st*'
如果对 find 查找到的内容实施复制
xargs 一般作为过滤器使用。xargs 的一个参数 -i,使用 -i 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -i 与 xargs 结合使用,每一个参数命令都会被执行一次。
find ... | xargs -i cp {} 目标位置
exec 对符合条件的文件执行所给的 Linux 命令(例如下面的 cp 命令),而不询问用户是否要执行该命令。{} 表示命令的参数即所找到的文件,命令的末尾必须以“\;”结束。ok 和 exec 相似,不同的是,它会询问用户是否要执行该命令。
find ... -exec cp {} 目标位置 \;
5、查找指定内容
使用正则表达式进行全局查找并打印。
语法格式:
grep [参数] 要查找内容 文件名
- -v 显示不符合要求的各行
- -c 只显示行数(符合要求)
- -n 显示符合要求的行和行号
- -i 不区分大小写
实例:
在 /etc/passwd 中查找“st”所有行。
grep "st" /etc/passwd
在 /etc/ 下所有文件中查找含有 data 的行。
grep "data" /etc/*
对命令的执行结果进行内容查找。
ls /etc/ | grep "sys"
正则表达式
匹配某个范围 [0-9];查找开头是数字或者字母,后跟24的内容。
grep '[0-9 a-z]24' a.txt
匹配行首 ^。
grep ‘^a’ a.txt
不匹配行首。
grep '^[^a]' a.txt
以某个字母开头,某个字母结尾。
grep 'x...y' a.txt
四、排序与去重
1、sort 排序
sort 命令能对文件进行排序,将排序结果标准输出(仅仅显示,不改变原文件)。
语法格式:
sort [参数] [文件]
- -r :逆序;
- -n:按数值大小排序;
- -f:大小写等同对待;
- -t:指定排序时所用的栏位分隔字符;
- -k:按指定栏进行排序,使用了
-k 1.2
,表示对第一个栏的第二个字符开始到本栏的最后一个字符为止的字符串进行排序; - -i:忽略非打印字符,ASCII 码 040 至176 外的字符都忽略。
将排序结果输出到新文件。
sort -o newfile file
合并多个文件并排序。
cat file1 fil2 ...|sort > newfile
对 file1 文件,按成绩进行倒序排序,并将结果输出到指定文件中,文件内容如下:
语文 98
数学 85
英语 66
物理 88
生物 76
化学 44
执行命令,将文件以 tab 进行分栏( $'\t'
表示 tab),第二栏按数字逆序进行排序,将排序内容输出到 course2。
sort -nrt $'\t' -k 2 file1 > course2
2、去除文件中连续的重复项
uniq 命令用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。
语法格式:
uniq [参数] [文件]
- -d 只显示重复行
- -u 只显示不重复行
- -c 显示每行,在前显示重复的次数
五、文件的比较
1、比较两个已排过序的文件
comm 命令会一列列地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成 3 列显示:第 1 行仅是在第 1 个文件中出现过的列,第 2 行是仅在第 2 个文件中出现过的列,第 3 行则是在第 1 与第 2 个文件里都出现过的列。
语法格式:
comm [参数] file1 file2
- -1 过滤掉 file1 中独有的内容。
- -2 过滤掉 file2 中独有的内容。
- -3 多虑掉两个文件相同的内容。
- -12 只显示相同的行
- -23 显示第1个文件中有而第2个文件无的行
2、比较文件的差异
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录 。
语法格式:
diff [参数] [目录]
使用 diff 产生补丁文件。
diff file1 file2 >补丁文件
3、补丁文件
patch 命令让用户利用设置修补文件的方式,修改,更新原始文件。通过该命令可以将一个文件利用补丁文件变为另一个文件。
把 file1 修改为 file2。
patch file1 补丁文件
对 file1 中打的补丁进行取消。
patch -R file1 补丁文件
六、其他命令
1、系统信息
uname 显示正在使用的linux系统信息,-a 显示所有信息,-r 显示操作系统的发行号。
[root@localhost mlocate]# uname -r
2.6.32-431.el6.x86_64
2、当前日期
date 当前日期,+%T 时:分:秒,+%F yyyy-mm-dd,+%D mm/dd/yy。
[root@localhost mlocate]# date +%T
15:36:44
[root@localhost zyx]# date +"%F %T"
2020-10-29 10:38:41
3、日历
cal 显示日历。
[root@localhost mlocate]# cal
October 2020
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
4、计算器
bc 内置的计算器,可以输入表达式计算结果,输入quit退出.
5、统计
wc 命令统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
语法格式:
wc [参数] [文件]
- -c 统计字节数
- -l 统计行数
- -w 统计字数
6、重启系统
reboot 用来重新启动计算机。
7、定时关机
shutdown 用来关机。
- -h now 马上关机
- -g 修改等待周期为你指定的时间(分钟)
120 分钟后关机。
shutdown -g 120
8、IP 地址
查看 ip 地址
[root@localhost tmp]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:62:77:48
inet addr:192.168.198.132 Bcast:192.168.198.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe62:7748/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14953 errors:0 dropped:0 overruns:0 frame:0
TX packets:8850 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:21469664 (20.4 MiB) TX bytes:507062 (495.1 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1884 errors:0 dropped:0 overruns:0 frame:0
TX packets:1884 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:95396 (93.1 KiB) TX bytes:95396 (93.1 KiB)
设置 ip 地址
ifconfig eth0 192.168.0.xxx
9、切换用户
su 命令用于切换当前用户身份到指定用户或者以指定用户的身份执行命令或程序。
su 用户名
10、利用 VM 实现文件共享
利用 VM 工具实现 windows 和 linux 文件共享。VM--setting--options--shared folders ,选择 windows 下的目录添加,该目录在linux中如何查看:/mnt/hgfs/ 共享目录
11、逻辑运算符
可以在命令直接使用逻辑运算符。
- -a:并且
- -o:或者
- !:非
在根目录下查找比 /test/a 文件新但是比 /test/b 文件旧的文件。
find / -newer /test/a -a ! -newer /test/b
标题:Linux 中文件的链接、权限、比较、查找与排序的操作 —— Centos 6.5
作者:Yi-Xing
地址:http://47.94.239.232/articles/2020/10/03/1601693254314.html
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!