20210221-1 Linux命令(下)
一、搜索命令
搜索命令
> 搜索文件
○ find 目标目录 搜索参数 操作参数
○ 常用搜索参数如下:
○ -name 文件名:根据文件名搜索文件,可以使用通配符。
○ -user 用户名:属于某个用户的目录和文件。
○ 常用操作参数:
○-delete:找到后删除文件。
○ 【例】
○ [root@localhost ~]# find / -name "*.txt"搜索命令
到 root 下寻找含有 file 的文件
[root@localhost boot]# find /root -name "file*"
/root/file2
/root/file1
/root/newdir/file1
/root/file3
如果寻找root用户创建的文件
[root@localhost boot]# find /root -user root
……
root/.local/share/keyrings/login.keyring
/root/.local/share/keyrings/user.keystore
/root/.esd_auth
/root/模板
/root/公共
/root/文档
/root/f1
/root/.Xauthority
……
> 搜索文件
○ locate 参数 字符串
○ 用于定位文件,找到后显示完整路径。
常用参数有:
-i:忽略大小写。
-c:显示符合条件的文件数量。
○ 【例】
○ [root@localhost ~]# locate hi.txt
○ [root@localhost ~]# updatedb搜索命令
locate 的查找速度特别快,和find不同,locate相当于有一本书,从目录里翻章节,就会很快,当把某一章节写完后 ,需要添加到目录里才能够存在
所以或者重启计算机,或者等半个小时以上,或者直接用命令 updatedb,这样才能把新创建的文件写入“目录”
[root@localhost ~]# locate file3
[root@localhost ~]# updatedb
[root@localhost ~]# locate file3
/root/file3
-i 忽略大小写
[root@localhost ~]# locate file3
/root/file3
[root@localhost ~]# locate File3
/root/File3
[root@localhost ~]# locate -i file3
/root/File3
/root/file3
-c 显示文件数量
[root@localhost ~]# locate -ic file3
2
[root@localhost ~]# locate -c file3
1
> 在文件中搜索文本
○ grep命令
前面的 find 和 locate 搜索的都是文件名,grep搜索的是文件内容
○ 在文件中搜索文本需要使用grep来实现。
○ 格式:grep 参数 字符串 文件名
常用参数即含义如下:
无参:显示匹配行
[root@localhost ~]# grep "b" file3
b
abcd
b
abc
-c:显示匹配行数 (显示符合查询条件的行数)
[root@localhost ~]# grep -c "b" file3
4
-e 字符串:匹配特殊字符串,如-开头
-i:忽略大小写
-v:输出不匹配行
○ 在goods.txt中查找有5的行
○ [root@localhost ~]# grep "5" goods.txt
○ 在goods.txt中查找有5的行共有几行
○ [root@localhost ~]# grep "5" goods.txt搜索命令
> 在文件中搜索文本
○ 正则表达式
○ 正则表达式(regular expression)描述了一种字符串匹配的模式,用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
○ 正则表达式是由普通字符(如字符a到z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
[root@localhost ~]# grep "[Ss]ample" regular.txt搜索命令
[]里的字母表示,匹配S可以,匹配s也可以,linux本身是区分大小写的,[Ss]这样就不会区分大小写了
[root@localhost ~]# grep "[Bb]ab" file3
Bab
bab
正则表达式的匹配点
^:以其后的字符串开头的行。
匹配开头是 B,后面是ab的,第二行的 bab 找到了是因为找的是 ab 的值
[root@localhost ~]# grep "[^B]ab" file3
Bab abc
abc bab
$:以其前的字符串结束的行。
.:匹配单个字符。
*:其前字符串出现(重复)0次或多次。
*代表匹配多个,.代表匹配单个
[ ]:从中必取且任取一个。 表示取任意一个值
\:转义。
[root@localhost ~]# grep "^B" file3
Bab abc
[root@localhost ~]# grep "c$" file3
Bab abc
abc
abc
一些示例
[root@localhost ~]# cat file3
a
1231231231231231231231232123123123
41234
aooooo
booooooo
cooooooooooo
dooo
Bab abc
abc bab
abc
123123123123123123213123123123123
41234
a
b
abc
找至少连续 5 个o
[root@localhost ~]# grep "o\{5\}" file3
aooooo
booooooo
cooooooooooo
[root@localhost ~]# grep "o\{5,\}" file3
aooooo
booooooo
cooooooooooo
这个代表的是,五个o以上的都能选到
[root@localhost ~]# grep "o\{5,10\}" file3
aooooo
booooooo
cooooooooooo
前面的是正则表达式的基础字符串,后面的是扩展字符串
> 在文件中搜索文本
○ 正则表达式
○ 扩展字符集如下,主要用于egrep和grep -E命令。
○ +:匹配之前的字符串一次或多次。
○ ?:匹配之前的字符串0次或1次。
○ |:“或”操作。
【例】
[root@localhost ~]# grep “love(able|rs)(ov)+” regular.txt
[root@localhost ~]# grep -E “love(able|rs)(ov)+” regular.txt
二、用户管理
文件和目录权限管理
> 用户管理
○ 在Linux中,根用户(即root账户,类似Windows系统中的Admin账户)具有系统最高的权限,可以进行任何操作,如果在使用这个账号时,出现一个错误操作,就有可能使系统崩溃,因此管理员要根据不同的需要授予用户不同的操作权限,以保障系统的安全及运行的稳定性。
○ Linux系统中的用户分为超级用户、普通用户和特殊用户3种类型。文件和目录权限管理
root超级用户不安全,在学习的时候是可以的,但是在未来到项目上,是不会被允许这样使用的
所以需要创建自己的用户
超级用户:在默认安装的初始情况下,Linux系统中的超级用户为root,也称其为根用户,具有系统中最高的权限,超级用户可以对Linux系统做任何操作。在实际工作中,除非绝对必要,不要使用超级用户来进行操作或者登录,经常使用超级用户进行操作,会使系统存在很大的危险。初学者需要注意,在大部分UNIX和Linux操作系统里,UID为0的即为超级用户,其登录名称未必是“root”。
每一个用户在 linux 系统中都有一个 UID,U指user,代表用户ID
普通用户:由超级用户创建及授权,普通用户为受限用户,只能操作其拥有权限的目录和文件,用户之间私人的资源可以相互隔离。普通用户只能管理由自己启动的进程,不能结束由其他用户发起的进程。
root超级用户可以结束别人的进程,普通用户只能结束自己的进程
系统用户:也称虚拟用户、伪用户、假用户或特殊用户。在Linux中,每个文件、目录和进程,都归属于某一个用户,为了完成特定的任务,系统内建了若干用户,如mail、ftp、bin等,系统用户也是受限用户。默认情况下,系统用户都是无法登录的,如果给这些用户授权登录口令,就可能使系统存在潜在的危险。所以为了安全起见,最好不要给这些用户授权口令。文件和目录权限管理
这里的假是指不能登录,不能作为真实的用户去使用
比如mysql安装完成后,就是一个虚拟用户了,是无法登录的
> 用户管理
○ 用户信息文件:/etc/passwd
[root@localhost ~]# cd /etc
[root@localhost etc]# ls passwd
passwd
[root@localhost etc]# cat passwd
root:x:0:0:root:/root:/bin/bash
x表示用户设置了密码,但是密码存放于另一个目录,后面的0:0就是UID和组ID
0代表系统管理员用户
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
……
em01:x:1001:1001::/home/em01:/bin/bash
这个是普通用户,普通用户的 UID 是 1001,可以提为系统管理员用户,把UID改为0即可
em02:x:1002:1002::/home/em02:/bin/bash
所以,passwd里存放的就是用户信息
○ 密码文件:/etc/shadow
[root@localhost etc]# cat shadow
root:$6$4bp.AzSfDODkPH5c$o8WDyQLScqUVYPRVr6/CLyfwXq79G4Uaam8B5wXoFf3lvJkEdeY7FLBGDnMdEwQYbI/PcAEolqvqzSTn8laHG.::0:99999:7:::
bin:*:17632:0:99999:7:::
……
dbus:!!:18652::::::
polkitd:!!:18652::::::
……
em02:$6$HgiZoU7z$bpIzia8daS5nf4ueWwdyt1cU.XJQmF5kSXgTXiFKdgdRpgqs/PLooQhCQpqcZd5Ikz5QQVr2/S.r75ykX.xWg1:18671:0:99999:7:::
里面存的是密码,!!代表没有设定密码,凡是没有设定密码的多是虚拟用户
密码用的是 md5 的加密模式
○ 用户组文件:/etc/group
○ 用户组密码文件:/etc/gshadow
○ 用户配置文件
○ /etc/login.defs
○ /etc/default/useradd
○ 新用户信息文件:/etc/skel
○ 登录信息:/etc/motd文件和目录权限管理
文件和目录权限管理
> 用户管理
○ 其实 Linux 并不会直接认识你的“用户名称”,它认识的其实以数字表示的“用户 ID”,每个用户都有一个“用户ID”,称为UID。超级用户的UID为0,系统用户的UID一般为1~499,普通用户的UID默认为500~60000之间的值。
[root@root:~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
┆
gdm:x:109:118:Gnome Display Manager:/var/lib/gdm:/bin/false
studnet:x:1000:1000:student,,,:/home/ studnet :/bin/bash
如果忘记了用户是否创建过,可以用这种方式查询一下
普通用户一般在最后
以下是登录的整个过程
○ Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有/etc/passwd、 /etc/shadow、/etc/group这几个。Linux用户登入系统过程实质是系统读取、核对这几个文件的过程。过程如下:
○ 首先Linux会出现一个登录系统的画面提示输入账号,输入账号与密码;
○ Linux 接着会先找寻 /etc/passwd 里面是否有这个账号名,如果没有则退出登录,如果有的话则将该账号对应的 UID ( User ID )与 GID ( Group ID )读出来,另外,该账号的对应的用户主目录与 shell 设定也一并读出;
○ 核对密码表,这时 Linux 会进入 /etc/shadow 里面找出登录账号与 UID相对应的、记录,然后核对一下刚刚输入的密码与此文件的密码是否符合;
○ 以上核定没有没有问题,用户正式进入系统。
为什么帐号文件与密码文件分开? 安全
> 用户管理
○ /etc/passwd—用户帐号文件
○ [root@localhost ~]# cat /etc/passwd
○ 从passwd文件中可以看到,第一行是root用户,紧接的是系统用户,普通用户通常在文件的尾部。passwd文件中的每一行由7个字段的数据组成,字段之间用“:”分隔,其格式如下:
用户名、口令、用户ID、用户所属组群、全称、用户主目录和登录Shell
[root@root:~]#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
┆
gdm:x:109:118:Gnome Display Manager:/var/lib/gdm:/bin/false
studnet:x:1000:1000:student,,,:/home/ studnet :/bin/bash
○ 用户口令信息文件/etc/shadow
○ Shadow 文件只有超级用户才能查看其内容,且采用MD5算法加密
○ Shadow文件中每一行代表一个用户帐号,每个用户帐号用“:”分隔
em02:$6$HgiZoU7z$bpIzia8daS5nf4ueWwdyt1cU.XJQmF5kSXgTXiFKdgdRpgqs/PLooQhCQpqcZd5Ikz5QQVr2/S.r75ykX.xWg1:18671:0:99999:7:::
1 em02
2 $6$HgiZoU7z$bpIzia8daS5nf4ueWwdyt1cU.XJQmF5kSXgTXiFKdgdRpgqs/PLooQhCQpqcZd5Ikz
5QQVr2/S.r75ykX.xWg1
3 18671
4 0 (0表示不用修改密码,如果是 2 表示如果改过密码,2天以后才能修改密码)
5 99999 (所以99999天之后修改,也就表示不用在修改设置了)
1 2 4 最为重要,这种设计方式也是为了安全
> 用户管理
○ 查询用户
○ whoami:用于查询当前登录账号的名字。
○ finger 用户名:用于返回指定用户账号的信息。
○ 【例】
○ [root@localhost ~]# whoami
○ [root@localhost ~]$ finger root
○ 添加用户
○ useradd | adduser 参数 用户名
○ 【例】
○ [root@localhost ~]# useradd -c zhsan zhsan
○ [root@localhost ~]# finger zhsan
○ [root@localhost ~]# ls /home
useradd和adduser两个命令都是一样的,具体用哪个看习惯就好
常用参数及含义如下:
-u:直接指定一个特定的UID给这个账号,普通用户的UID默认情况下大于499。
-c:指定用户信息描述,即用户别名。
-d:指定用户家目录,不使用系统默认值/home/用户名。
-s:指定用户shell,而不使用默认的/bin/bash。
-g:指定用户所在组的ID。
-G:指定用户所在的多个组集合,组织间用逗号间隔。
-mk:复制其他用户主目录下的文件和配置信息来创建用户。
-e expire_date:账号终止日期。日期的指定格式为MM/DD/YY。
-f inactive_days:账号过期几日后永久停权。当值为0时账号则立刻锁定禁用。而当值为-1时则关闭此功能,预设值为-1。
[root@localhost ~]# useradd -c a1 aA
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
……
malakh:x:1000:1000:malakh:/home/malakh:/bin/bash
em01:x:1001:1001::/home/em01:/bin/bash
em02:x:1002:1002::/home/em02:/bin/bash
aA:x:1003:1006:a1:/home/aA:/bin/bash (a1是别名)
[root@localhost ~]# ls /home
aA em01 em02 malakh
现在 home 里有了 aA 的目录,创建了一个用户后,会自动在home下创建一个同名的目录,被称为家目录
现在想修改UID,从2000开始,要先创建用户,然后 -u
[root@localhost ~]# useradd aB -u 2000
[root@localhost ~]# ls /home
aA aB em01 em02 malakh
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
……
aA:x:1003:1006:a1:/home/aA:/bin/bash
aB:x:2000:2000::/home/aB:/bin/bash UID就是从2000开始的了
文件和目录权限管理
> 用户管理
在linux下,一个用户必须要有密码才能成功登陆
○ 设置密码
○ passwd 参数 用户名
如果想给当前用户修改密码,直接在当前用户下 passwd 即可
[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符 这个地方只是提示,并不影响后续操作
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
如果给其他用户设置密码
[root@localhost ~]# passwd aA
更改用户 aA 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
常用的就是 passwd 用户名;参数也能用,不过用的很少;-d 是很危险的事情,尽量不要用
○ [root@localhost ~]# passwd
○ [root@localhost ~]# passwd zhsan
> 用户管理
○ 删除用户
○ userdel 参数 用户名
常用参数如下:
-r:删除用户的同时删除用户的家目录及其拥有的所有文件。
○ [root@localhost ~]# ls /home
○ [root@localhost ~]# userdel lisi && ls /home
○ [root@localhost ~]# userdel -r zhsan && ls /home
[root@localhost ~]# ls /home
aA aB em01 em02 malakh
[root@localhost ~]# userdel aA
userdel: user aA is currently used by process 20756
删除失败是因为刚刚用 aA登录了,并没有关闭aA,只是切换了账户
[root@localhost ~]# userdel aB
[root@localhost ~]# ls /home
aA aB em01 em02 malakh
aB还在,因为删除的时候是用 userdel 删除的,并没有加上 -r 选项
[root@localhost ~]# useradd aC
[root@localhost ~]# ls /home
aA aB aC em01 em02 malakh
[root@localhost ~]# userdel -r aC
[root@localhost ~]# ls /home
aA aB em01 em02 malakh
加上 -r 后,aC 的所有信息就都删除掉了
> 用户管理
能增加和删除,所有也一定能修改
○ 修改用户属性
○ usermod 参数 用户名
-l -p -e 一般 较为常用,现在修改用户aA 的别名
[root@localhost ~]# usermod -c aA AA
usermod:用户“AA”不存在
[root@localhost ~]# usermod -c AA aA
[root@localhost ~]# ls /home
aA aB em01 em02 malakh
[root@localhost ~]# cat /etc/passwd
……
aA:x:1003:1006:AA:/home/aA:/bin/bash 在这里看,备注名已经得到了修改
现在用 -l 修改账户名称
[root@localhost ~]# usermod -l AA aA
[root@localhost ~]# cd /home
[root@localhost home]# ls
aA aB em01 em02 malakh
依然是 aA,到passwd中查看,发现已经是变成 AA 了,只是家目录中没有变而已,家目录中创建完后就不会变了。如果想变就只能用 -d 变了
[root@localhost home]# cat /etc/passwd
……
AA:x:1003:1006:AA:/home/aA:/bin/bash
> 用户管理
○ 切换用户
○ su 参数 用户名
○ 【例】
○ [root@localhost ~]# su zhsan
○ [zhsan@localhost root]$ pwd
○ [zhsan@localhost root]$ su
○ [root@localhost ~]# pwd
○ [root@localhost ~]# su -l zhsan
○ [zhsan@localhost ~]$ pwd
linux 用户中一定要有密码,从管理员用户切换到普通用户不用输入密码,回到root是需要输入密码的
[root@localhost home]# su AA
[AA@localhost home]$ su root
密码:
现在看普通用户和普通用户之间的切换
[root@localhost home]# su AA
[AA@localhost home]$ su malakh
密码:
[malakh@localhost home]$ su AA
密码:
[AA@localhost home]$
三、权限管理
文件和目录权限管理
> 权限管理
○ 为了保证文件信息的安全,Linux设置了文件保护机制,其中之一就是给文件设定了一定的访问权限。当文件被访问时,系统首先检验访问者的权限,只有与文件的访问权限相符时才允许对文件进行访问。
○ 文件或目录的访问权限分为只读、只写和可执行三种。
比如windows上的文件,打开可以读到就是只读,打开可以写入就是只写,能不能打开是可执行
○ 文件或目录被创建时,文件或目录的所有者(一般是文件的创建者)自动拥有对该文件或目录的读、写和可执行权限。用户也可根据需要把访问权限设置为需要的任何组合。
○ 有三种不同类型的用户可对文件或目录进行访问:文件所有者、同组用户、其他用户。所有者可以允许同组用户有权访问文件,还可以将文件的访问权限赋予系统中的其他用户。
> 权限管理
○ 查看文件权限
○ [root@localhost ~]# ll
[root@localhost home]# ls
aA aB em01 em02 malakh
[root@localhost home]# ls -l
总用量 4
drwx------. 5 AA aA 128 2月 16 17:20 aA
drwx------. 3 2000 2000 78 2月 15 19:37 aB
drwx------. 5 em01 em01 128 2月 13 16:36 em01
drwx------. 5 em02 em02 128 2月 13 17:49 em02
drwx------. 15 malakh malakh 4096 2月 16 06:18 malakh
一共有 10 个字符
○ 设定权限
○ 一个文件或者目录的权限可以通过chmod命令来改变。chmod命令有两种用法,一种是包含文字和操作符表达式的字符设定法,另一种是包含数字的数字设定法。
一般看到的目录文件和普通文件较多,分别是d和-
下面这个是数字设定法,用的是二进制;r—读,w—写,x—执行
所以,如果是只读,就是 100,十进制4;如果只是写就是 010,十进制 2;执行 001,十进制1
如果什么权限都不给就是 0,可读可执行,就是 r-x,101,十进制为 5
> 权限管理
○ 字符设定法
○ chmod 参数 权限模式 文件或目录名
常用权限模式,也就是设置权限时,有三种角色(除了第一位,每三位一段)所有人,同组人,系统内其他人;分别用 u g o 或者直接用 a 简单快速,但是这样将导致权限不够明确
○ 【例3-3】将文件hi. txt设为所有人都可读取
○ [root@localhost test]# chmod ugo+r hi.txt
○ 【例3-4】将文件hi.txt设为所有者与所有者所在组的成员可写入,其他人则不可写入,命令及结果如下:
○ [root@localhost test]# chmod ug+w,o-w hi.txt
现在对 awk 进行权限修改
[root@localhost ~]# ls -l
总用量 36
-rw-r--r--. 1 root root 0 2月 12 04:58 awk
……
-普通文件,rw- 所有者的权限,这里是root的权限,只有读和写的权限;组内其他人员和系统内其他人员都有读的权限 r--
现在把三个角色的权限进行变更
[root@localhost ~]# chmod ugo-r awk
[root@localhost ~]# ls -l
总用量 36
--w-------. 1 root root 0 2月 12 04:58 awk
……
[root@localhost ~]# chmod ug+r awk
[root@localhost ~]# ls -l
总用量 36
-rw-r-----. 1 root root 0 2月 12 04:58 awk
……
> 权限管理
○ 数字设定法
○ 数字设定法用一系列八进制数表示相应的权限,其中0表示没有权限,1表示拥有可执行权限(1的二进制为001,对应到rwx表示r=0,w=0,x=1),2表示可写权限(010),4表示可读权限(100),然后将其相加。所以数字属性的格式应为3个从0~7的八进制数,其顺序是u、g、o。
○ 【例3-5】设定hi.txt只有所有者有读、写、执行权限:
○ [root@localhost test]# chmod 700 hi.txt
○ 【例3-6】设定hi.txt对所有者具有读、写、执行权限,而所在组用户和其他用户只有读、执行权限
○ [root@localhost test]# chmod 755 hi.txt
现在让所有者对 awk 拥有读、写和执行的权限,让其余用户没有权限,所有的权限都给所有者
第一个数字代表文档所有者,后面两个数组分别代表同组用户和系统内的其他用户
[root@localhost ~]# chmod 700 awk
[root@localhost ~]# ls -l
总用量 36
-rwx------. 1 root root 0 2月 12 04:58 awk
……
>【例】
○ 将当前目录中的子目录csi权限修改为“777”,也就是说文件的所有者、拥有组、其他用户的权限都是可读(r=4)、可写入(w=2)、可执行(x=1)
○ 将目录dexter的权限修改为“644”也就是说文件的所有者可读(r=4)、可写入(w=2) ;拥有组(r=4);其他用户的权限都是可读(r=4)
○ 将目录everwood的权限修改为文件的所有者、拥有组、其他用户的权限都是可读(r=4)、可写入(w=2)、可执行(x=1)
○ 将目录friends拥有组现有权限减去只读权限
○ 将目录fringe其他用户权限在现有的基础上加入可读(r)、可写(w)权限。
○ 将目录house所有者权限更改为可读(r)、可写入(w)、可执行(x);拥有组权限可读(r)、可执行(x);其他用户权限更改为可执行(x)文件和目录权限管理
这种时候,数字设定法会更简单
> 权限管理
○ 更改文件或目录的所有者
○ 在Linux中,不仅可以更改权限,还可以更改文件或者目录的所有权。chown命令可以修改文件或者目录的所有者及所属用户组。
○ chown 参数 所有者 文件或目录名
○ 【例3-7】 将hi.txt的所有者设定为zhsan
○ [root@localhost test]# chown zhsan hi.txt
[root@localhost ~]# ls -l
总用量 36
-rwx------. 1 root root 0 2月 12 04:58 awk
……
现在更改 awk 的所有者
[root@localhost ~]# chown em01 awk
[root@localhost ~]# ls -l
总用量 36
-rwx------. 1 em01 root 0 2月 12 04:58 awk
……
四、符号链接命令
补充
> 符号连接命令
○ ln命令用于建立文件的连接,使得某个文件可以同时存在于多个目录之中
○ 格式:ln [选项] 目标源文件 [连接名]
○ 硬连接与目标源文件的关系
○ 符号连接与源文件的关系(软连接)
○ ln的链接又有软链接和硬链接两种:
○ 软链接就是上面所说的ln -s ** **,它只会在用户选定的位置上生成一个文件的镜像,不会重复占用磁盘空间,平时使用较多的都是软链接;
现在对 file2 创建软链接,把 root 目录下的 file2 创建软连接,创建到 boot 下
[root@localhost ~]# ln -s /root/file2 /boot/file2_ruanlianjie
[root@localhost ~]# cd /boot
[root@localhost boot]# ls
现在看一下软链接的内容,与源文件的内容是完全一致的,这就是创建软链接
[root@localhost boot]# cat file2_ruanlianjie
abc
ABC
1 修改软链接的文件,源文件也会一起变化;修改源文件,软链接后的文件也会改变
2 删除掉软链接后的文件,不会影响源文件
3 删除掉源文件,软链接后的文件就无法使用了,file2_ruanlianjie是加红的,代表不能用了
所以,软链接就相当于 windows 上的快捷方式
○ 硬链接是不带参数的ln ** **,它会在用户选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化
[root@localhost ~]# cd newdir/
[root@localhost newdir]# ln /root/file3 file3_ying
[root@localhost newdir]# ls
file1 file3_ying zxc1
硬链接相当于备份,删除硬链接文件,源文件不会有影响;删除源文件,硬链接文件也不会有影响
五、命令别名
补充
> 命令别名
○ 别名允许自定义命令名,或者把命令和常用的参数或选项结合在一起。一旦创建,别名就可以像其他任何命令一样被使用。
○ 查看已经定义的别名
[root@localhost root]#alias
○ 取消别名
[root@localhost root]#unalias 别名
○ 例:
[root@localhost root]#mount /dev/cdrom /media
[root@localhost root]#alias m=‘mount /dev/cdrom /media’
[root@localhost root]#unalias m
比如 ls -l 和 ll 是完全一样的,因为 ll 是 ls -l 的别名
linux安装软件需要先加载光驱,加载光驱时,可以起一个别名
[root@localhost ~]# alias m='mount /dev/cdrom /media'
[root@localhost ~]# m
mount: /dev/sr0 写保护,将以只读方式挂载
这样加载光驱的时候,只输入 m 就可以了,现在显示加载成功;光驱就是只读的
[root@localhost ~]# cd /media
[root@localhost media]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
这就是所有的光驱文件
现在不想用昵称 m了,去掉别名
[root@localhost media]# alias
……
alias m='mount /dev/cdrom /media'
……
[root@localhost media]# unalias m
[root@localhost media]# alias
…… 已经没有 m 了
[root@localhost media]#
注:没有加载光驱时,是这样的
[root@node3 ~]# cd /media
[root@node3 media]# ls
[root@node3 media]#