ln 命令

ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接

当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间

语法: ln [参数][源文件或目录][目标文件或目录]
必要参数:

  • –backup[=CONTROL] 备份已存在的目标文件
  • -b 类似 –backup ,但不接受参数
  • -d 允许超级用户制作目录的硬链接
  • -f 强制执行
  • -i 交互模式,文件存在则提示用户是否覆盖
  • -n 把符号链接视为一般目录
  • -s 软链接(符号链接)
  • -v 显示详细的处理过程
    选择参数:
  • -S “-S<字尾备份字符串> “或 “–suffix=<字尾备份字符串>”
  • -V “-V<备份方式>”或”–version-control=<备份方式>”
  • –help 显示帮助信息
  • –version 显示版本信息

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接

  • 符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    [moe@master ~]$ ln -s d.txt d_soft_link
    [moe@master ~]$ ll
    总用量 16
    ...
    drwxrwxr-x. 4 moe moe 54 4月 15 11:04 dongman
    lrwxrwxrwx 1 moe moe 5 4月 15 15:59 d_soft_link -> d.txt
    -rw-rw-r-- 1 moe moe 22 4月 15 10:43 d.txt
    ...
    [moe@master ~]$ cat d_soft_link
    你好我是测试者
    [moe@master ~]$ cat d.txt
    你好我是测试者
    [moe@master ~]$ gedit d.txt
    [moe@master ~]$ cat d_soft_link
    你好我是测试者22
    [moe@master ~]$ cat d.txt
    你好我是测试者22

    上面脚本是在相同目录创建这个软链接。当在不同目录时,需要使用绝对路径,否则会报红,不能使用,因为软链接记录的是文件的位置信息

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    [moe@master ~]$ ln -s ~/d.txt dongman/d2_soft_link
    [moe@master ~]$ ll dongman/
    总用量 4
    -rw-rw-r-- 1 moe moe 0 4月 15 10:59 a.txt
    -rw-rw-r-- 1 moe moe 22 4月 15 10:44 c.txt
    lrwxrwxrwx 1 moe moe 15 4月 15 16:00 d2_soft_link -> /home/moe/d.txt
    drwxrwxr-x 2 moe moe 6 4月 15 11:04 nv
    drwxrwxr-x 5 moe moe 43 4月 15 11:10 test
    [moe@master ~]$ ln -s d.txt dongman/d3_soft_link
    [moe@master ~]$ ll dongman/
    总用量 4
    -rw-rw-r-- 1 moe moe 0 4月 15 10:59 a.txt
    -rw-rw-r-- 1 moe moe 22 4月 15 10:44 c.txt
    lrwxrwxrwx 1 moe moe 15 4月 15 16:00 d2_soft_link -> /home/moe/d.txt
    lrwxrwxrwx 1 moe moe 5 4月 15 16:04 d3_soft_link -> d.txt(报红)
    drwxrwxr-x 2 moe moe 6 4月 15 11:04 nv
    drwxrwxr-x 5 moe moe 43 4月 15 11:10 test
    [moe@master ~]$ cat dongman/d3_soft_link
    cat: dongman/d3_soft_link: 没有那个文件或目录

    可以给目录创建一个软链接,同时需要注意的是软链接只记录文件的位置信息,所以它占用的空间不会跟原文件相同

  • 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [moe@master dongman]$ ln c.txt c_hard_link
    [moe@master dongman]$ ll
    总用量 8
    -rw-rw-r-- 1 moe moe 0 4月 15 10:59 a.txt
    -rw-rw-r-- 2 moe moe 22 4月 15 10:44 c_hard_link
    -rw-rw-r-- 2 moe moe 22 4月 15 10:44 c.txt
    lrwxrwxrwx 1 moe moe 15 4月 15 16:00 d2_soft_link -> /home/moe/d.txt
    drwxrwxr-x 2 moe moe 6 4月 15 11:04 nv
    drwxrwxr-x 5 moe moe 43 4月 15 11:10 test
    [moe@master dongman]$ ln c.txt c1_hard_link
    [moe@master dongman]$ ll
    总用量 12
    -rw-rw-r-- 1 moe moe 0 4月 15 10:59 a.txt
    -rw-rw-r-- 3 moe moe 22 4月 15 10:44 c1_hard_link
    -rw-rw-r-- 3 moe moe 22 4月 15 10:44 c_hard_link
    -rw-rw-r-- 3 moe moe 22 4月 15 10:44 c.txt
    lrwxrwxrwx 1 moe moe 15 4月 15 16:00 d2_soft_link -> /home/moe/d.txt
    drwxrwxr-x 2 moe moe 6 4月 15 11:04 nv
    drwxrwxr-x 5 moe moe 43 4月 15 11:10 test
    [moe@master dongman]$ ln nv nv_hard_link
    ln: "nv": 不允许将硬链接指向目录

    可以看出这个2和3代表该文件目前有几个索引,只有当这些索引链接的文件都被删除时该文件才会被真正删除,相当于一个实时的备份文件(并不是简单拷贝),防止误删。同时需要注意硬链接不能链接目录

grep 命令

Linux系统中 grep(Global Regular Expression Print) 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来

语法:grep [options] pattern [files]
常用选项::

  • -i:忽略大小写进行匹配。
  • -v:反向查找,只打印不匹配的行。
  • -n:显示匹配行的行号。
  • -r:递归查找子目录中的文件。
  • -l:只打印匹配的文件名。
  • -c:只打印匹配的行数。
1
2
3
4
5
6
7
8
9
10
11
12
13
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link 公共 视频 文档 音乐
b b.txt dongman1 d.txt 模板 图片 下载 桌面
[moe@master ~]$ grep -ni 你好 b.txt
3:hello你好
[moe@master ~]$ grep -ni 你好 . -r
匹配到二进制文件 ./.cache/tracker/meta.db-wal
./dongman/c.txt:1:你好我是测试者
./dongman/c_hard_link:1:你好我是测试者
./dongman/c1_hard_link:1:你好我是测试者
./b.txt:3:hello你好
./d.txt:1:你好我是测试者22
./b_hard_link:3:hello你好

拓展:Linux-grep的详细使用

find 命令

find 命令用于在指定目录下查找文件和目录

语法:find [路径] [匹配条件] [动作]
参数说明 :
路径 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。expression 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份:

  • -name pattern:按文件名查找,支持使用通配符 * 和 ?。
  • -type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
  • -mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
  • -user username:按文件所有者查找。
  • -group groupname:按文件所属组查找。
1
2
3
4
5
6
[moe@master ~]$ find -name b.txt
./b.txt
[moe@master ~]$ find ~ -name b.txt
/home/moe/b.txt
# 使用单引号包含
[moe@master ~]$ find ~ -name '*txt'

tar 命令

tar(英文全拼:tape archive )命令用于备份文件。是创建和解压归档文件的命令行工具,可以用来将多个文件和目录组合成一个单一的归档文件,也可以用来解压已经存在的归档文件
简单语法:tar [选项] 压缩包名 压缩文件 [-C] [存放目录]
常用选项:

  • c或–create 建立新的备份文件
  • -C<目的目录>或–directory=<目的目录> 将压缩包指定到目的目录
  • -v或–verbose 显示指令执行过程
  • -x或–extract或–get 从备份文件中还原文件,即解压
  • -t或–list 列出备份文件的内容
  • -f<备份文件>或–file=<备份文件> 指定备份文件
1
2
3
4
5
6
7
8
9
10
11
12
13
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link 公共 视频 文档 音乐
b b.txt dongman1 d.txt 模板 图片 下载 桌面
[moe@master ~]$ tar -cf txt.tar b.txt d.txt
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link txt.tar(红色显示) 模板 图片 下载 桌面
b b.txt dongman1 d.txt 公共 视频 文档 音乐
[moe@master ~]$ tar -cf txt.tar b.txt d.txt -C dongman
[moe@master ~]$ ls dongman
a.txt c1_hard_link c_hard_link c.txt d2_soft_link nv test
[moe@master ~]$ tar -xf txt.tar -C dongman
[moe@master ~]$ ls dongman
a.txt b.txt c1_hard_link c_hard_link c.txt d2_soft_link d.txt nv test

可以看出只能将解压的文件移动到指定目录中去。其中f这个选项必须放在后面。拓展:tar命令

gzip 命令

gzip命令用于压缩文件。是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出”.gz“的扩展名
简单语法:gzip [选项] 压缩包
常用选项:

  • d 解压
  • -r或–recursive 递归处理,将指定目录下的所有文件及子目录一并处理
1
2
3
4
5
6
7
8
9
10
11
12
13
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link txt.tar 模板 图片 下载 桌面
b b.txt dongman1 d.txt 公共 视频 文档 音乐
[moe@master ~]$ gzip -d txt.tar
gzip: txt.tar: unknown suffix -- ignored
[moe@master ~]$ gzip -r txt.tar
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link txt.tar.gz 模板 图片 下载 桌面
b b.txt dongman1 d.txt 公共 视频 文档 音乐
[moe@master ~]$ gzip -d txt.tar.gz
[moe@master ~]$ ls
a b_hard_link dongman d_soft_link txt.tar 模板 图片 下载 桌面
b b.txt dongman1 d.txt 公共 视频 文档 音乐

拓展:gzip命令

一步到位:

  • 以gzip的方式打包且压缩:tar czf 名称.tar.gz 目标文件
    1
    2
    3
    4
    5
    6
    7
    [moe@master ~]$ ls
    a b_hard_link dongman d_soft_link txt.tar 模板 图片 下载 桌面
    b b.txt dongman1 d.txt 公共 视频 文档 音乐
    [moe@master ~]$ tar czf test.tar.gz b.txt d.txt
    [moe@master ~]$ ls
    a b_hard_link dongman d_soft_link test.tar.gz 公共 视频 文档 音乐
    b b.txt dongman1 d.txt txt.tar 模板 图片 下载 桌面
  • 以gzip的方式解压并解包:tar zxf 名称.tar.gz -C 目标目录
    1
    2
    3
    [moe@master ~]$ tar zxf test.tar.gz -C dongman1
    [moe@master ~]$ ls dongman1
    a.txt b.txt c1_hard_link c_hard_link c.txt d2_soft_link d.txt nv test

bzip2 命令

bzip2命令是 .bz2文件 的压缩程序。bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件

与gzip用法类似,这里也可以一步到位:

  • 以bzip2的方式打包且压缩:tar cjf 名称.tar.gz 目标文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [moe@master ~]$ mkdir bzip2
    [moe@master ~]$ ls
    a b.txt dongman1 test.tar.gz 模板 文档 桌面
    b bzip2 d_soft_link txt.tar 视频 下载
    b_hard_link dongman d.txt 公共 图片 音乐
    [moe@master ~]$ tar cjf test.tar.bz2 b.txt d.txt
    [moe@master ~]$ ls
    a b.txt dongman1 test.tar.bz2 公共 图片 音乐
    b bzip2 d_soft_link test.tar.gz 模板 文档 桌面
    b_hard_link dongman d.txt txt.tar 视频 下载
  • 以bzip2的方式解压并解包:tar zxf 名称.tar.gz -C 目标目录
    1
    2
    3
    [moe@master ~]$ tar xjf test.tar.bz2 -C bzip2/
    [moe@master ~]$ ls bzip2/
    b.txt d.txt

zip命令

zip 命令用于压缩文件。zip 是个使用广泛的压缩程序,压缩后的文件后缀名为 .zip
通过 zip -r 压缩名称(不需要写后缀码) 压缩文件 来压缩文件

1
2
3
4
5
6
7
[moe@master ~]$ zip -r zz b.txt d.txt 
adding: b.txt (deflated 15%)
adding: d.txt (stored 0%)
[moe@master ~]$ ls
a b.txt dongman1 test.tar.bz2 zz.zip 视频 下载
b bzip2 d_soft_link test.tar.gz 公共 图片 音乐
b_hard_link dongman d.txt txt.tar 模板 文档 桌面

又可以通过 unzip -d 压缩后的文件目录 压缩文件 来解压文件

1
2
3
4
5
6
[moe@master ~]$ unzip -d zz zz.zip 
Archive: zz.zip
inflating: zz/b.txt
extracting: zz/d.txt
[moe@master ~]$ ls zz
b.txt d.txt

压缩后的文件目录如果没有会自动创建

上述三种压缩方式的压缩率对比:zip < gzip < bzip2,通用性则是:zip > gzip > bzip2,所以最终常用的压缩方式取中间的 gzip 即可,在Windows中下载的般都是以 tar.gz 为后缀名的文件

which 命令

which命令用于查找文件。which指令会在环境变量$PATH设置的目录里查找符合条件的文件

语法:which [文件…]
参数:

  • -n<文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
  • -p<文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。
  • -w  指定输出时栏位的宽度。
  • -V  显示版本信息。

寻找命令 tar 所在的文件在哪

1
2
[moe@master ~]$ which tar
/usr/bin/tar

切换到root(超级管理员)下,可以使用 su [用户] 命令

1
2
3
[moe@master ~]$ su
密码:
[root@master moe]#

修改用户的密码,可以使用 **passwd [用户]**,此时修改的密码不能简单的使用123456来设置

1
2
3
[root@master moe]# passwd root
更改用户 root 的密码 。
新的 密码:

可以在root用户下修改其他用户的密码,此时密码可以用简单的数字表示

exit 命令可以退出当前用户到上一个用户。如果没有,则关闭终端窗口

who 命令可以查看当前登录的用户

1
2
3
4
[moe@master ~]$ who
moe :0 2024-04-16 16:22 (:0)
moe pts/0 2024-04-16 16:27 (:0)
moe pts/1 2024-04-16 17:10 (:0)

pts:代表终端用户、tty:代表操作系统用户。可以通过 pkill -kill -t [pts/tty]

reboot 和 shutdown 命令:

chmod 命令

chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
其中:

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
  • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
  • r 表示可读取(数字代号为’4’),w 表示可写入(数字代号为’2’),x 表示可执行(数字代号为’1’),- 表示不具有任何权限(数字代号为’0’)
    1
    2
    3
    4
    5
    6
    7
    8
    [moe@master ~]$ ll d.txt
    -rw-rw-r-- 1 moe moe 50 4月 15 16:39 d.txt
    [moe@master ~]$ chmod u+x d.txt
    [moe@master ~]$ ll d.txt
    -rwxrw-r-- 1 moe moe 50 4月 15 16:39 d.txt
    [moe@master ~]$ chmod u=- d.txt
    [moe@master ~]$ ll d.txt
    ----rw-r-- 1 moe moe 50 4月 15 16:39 d.txt

    可以直接通过 =- 来取消所有权限