前面一章学习了硬链接和软链接,回顾上一章节内容:
硬链接:在inode表中记录一个条目,所有的元数据和原始文件元数据相同。
·相当于两个名字。
·删除原始文件,另一个条目也能够找数据本身。
·不能跨分区链接
~]#ln [原始文件] 链接文件
软链接:在inode表中记录一个条目,指针指向原始文件条目,删除原始条目,符号连接找不到原始数据。
·新的inode号。
·可以跨分区链接,
·可以对目录进行链接
~]# ln -s [原始文件] 链接文件
那么问题来了,硬链接和软链接的到底区别是啥呢?
用官方的话来概括,一句话: 硬链接,就是一个文件,他们共享inode条目。在inode table中多增加了一条原始文件相同记录,这条inode记录都指向同一个用户数据; 软链接,他们不是同一个文件,在指定目录下创建了一个文件,这个文件的索引节点指针指向原始文件inode table记录。 ##特点:硬链接:不能跨分区链接、删除另一个inode记录,依然能够通过另一条记录找到原始用户数据 用白话解释: 硬链接,就是多了一个或多个文件名,删除这个文件名原始数据依然存在; 软链接,就是一条指针,指向原始文件记录。(/白话翻译不一定准确,安装自己的意思理解/) ##特点:软链接:能够跨分区操作,可以对目录进行链接 |
关于用户组的命令练习
1、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和
释:考验我们对tr命令的掌握程度和配合linux中计算器的灵活使用 思路:看到这种题我们应该能够想到我们要用哪种方法来计算?我这里就用我们所学习过的内容来进行解题。我们首先需要把文本中的空格给替换成‘+’通过计算器来进行计算 解:[expr $(($(tr ' ' '+' < file1)))] [root@localhost ~]# expr $(($(tr ' ' '+' < file1))) 55 [root@localhost ~]# |
2、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
释:对tr命令的练习与掌握,以及对管道的理解。 思路:解这道题思路有很多,可以用我们学过的管道,也可以用重定向联合tr的删除来解题 解:【echo "xt.,l 1 jr#!$mn2 c*/fe3 uz4" | tr -d "[[:alpha:]]""[[:space:]]""[[:punt:]]"】 [root@localhost ~]# echo "xt.,l 1 jr#trmn2 c*/fe3 uz4" | tr -d "[[:alpha:]]""[[:space:]]""[[:punct:]]" 1234 [root@localhost ~]# 另一种解法,如果这个这段字符串在abc.txt这个文件中保存的话,我们还可以用重定向输入来解题 解:【tr -d "[[:alpha:]]""[[:space:]]""[[:punct:]]" < abc.txt】 [root@localhost ~]# echo "xt.,l 1 jr#trmn2 c*/fe3 uz4" > abc.txt [root@localhost ~]# cat ~/abc.txt xt.,l 1 jr#trmn2 c*/fe3 uz4 [root@localhost ~]# tr -d "[[:alpha:]]""[[:space:]]""[[:punct:]]" < abc.txt 1234 [root@localhost ~]# |
3、将PATH变量每个目录显示在独立的一行
释:考验我们对tr命令的掌握程度和配合ECHO 和对变量的理解的灵活使用 思路:我们知道PATH变量中保存的都是外部命令的路径,而且每个路径都是以冒号分割。我们可以tr命令把冒号(:)替换成换行符(\n) 解:【echo $PATH | tr ':' '\n'】 [root@localhost ~]# echo $PATH | tr ':' '\n' /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /root/.local/bin /root/bin [root@localhost ~]# |
4、删除指定文件的空行
释:对tr命令-s选项的理解 思路:文本中的空行都是由每一个换行符组成的,而空行呢都是两个或多个换行符连在一起的,我们需要删除连续的空行就需要用到tr命令-s选项了。 解:【tr -s '\n' < file1】 [root@localhost ~]# cat file1 1 2 3 4 5 6 7 8 9 10 sdf sdf sdf sdf [root@localhost ~]# tr -s '\n' < file1 1 2 3 4 5 6 7 8 9 10 sdf sdf sdf sdf [root@localhost ~]# //我事先已经创建好了file1这个文件// |
5、将文件中每个单词(字母)显示在独立的一行,并无空行
释:依然是涉及到tr的字符替换 思路:一个文中的英语单词无非就是用空格或,.来分割的,我们这些符号替换成换行符。 解:【cat a.txt |tr ' ,.' '\n' |tr -s '\n'】 [root@localhost ~]# cat a.txt hello,world. my name is xxx.aljsdf sdf [root@localhost ~]# cat a.txt |tr ' ,.' '\n' |tr -s '\n' hello world my name is xxx aljsdf sdf [root@localhost ~]# |
6、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
释:用用户管理命令来创建用户并且对其进行一些额外的注视 思路:创建用户useradd,添加附加组-g选项,shell使用-s选项,-c为注释 解:【useradd -G root,bin -s /bin/csh -c "Gentoo Distribution" gentoo】 [root@localhost ~]# useradd -G root,bin -s /bin/csh -c "Gentoo Distribution" gentoo useradd: warning: the home directory already exists. Not copying any file from skel directory into it. Creating mailbox file: File exists [root@localhost ~]# //提示:创建用户成功了,但是警告我,这个家目录已经存在,无法从/etc/skel复制文件到这个目录,创建邮箱,文件存在。// |
7、创建下面的用户、组和组成员关系
名字为admins 的组
用户natasha,使用admins 作为附属组
用户harry,也使用admins 作为附属组
用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos
释:解这道题有很多中方法,条件不一样解题思路也不一样,考验我们对基本的用户管理命令的掌握 思路:1、在没有创建用户和组的情况下,先创建组,在创建用户在创建密码 2、在用户已经存在的情况下,创建组,把已有的用户添加到这个组里面来 解:1、 groupadd amins useradd –G admins natasha useradd –G admins harry useradd –s /sbin/nologin sarah echo centos | passwd –stdin natasha echo centos | passwd –stdin harry echo centos | passwd –stdin sarah 2、 groupadd amins gpasswd -a natasha admins gasswd -a harry admins useradd –s /sbin/nologin sarah echo centos | passwd –stdin natasha echo centos | passwd –stdin harry echo centos | passwd –stdin sarah //如果密码存在第二个就不用设密码了。// |
原创文章,作者:皱 多利亚,如若转载,请注明出处:http://www.178linux.com/27706