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]# 

©著作权归作者所有:来自51CTO博客作者ATaburiss的原创作品,如需转载,请注明出处,否则将追究法律责任