作业 2016年7月30日

关于 文件系统 用户管理的基础练习题

练习题:(使用自己现有知识做的,答案仅供参考)

练习1定义别名命令baketc,每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupYYYY-mm-dd,备份过程可见?

:在家目录中.bashrc中定义别名:

alias  baketc=' cp -rpv /etc/  /testdir/backup$(date +%F)'

cp  -r: 拷贝目录;-p:保留权限;-v:显示其过程    $(date  +%F):命令引用当前时间

由于我们还没有学习定时任务,所以可以每天手工的运行以上的别名可以实现数据备份。

练习2创建/testdir/rootdir目录并复制/root所有下文件到该目录内,要求保留原有权限?  

解:mkdir  -p  /testdir/rootdir  #:创建目录中的目录需要带参数 -p

   cp -rp   /root/  /testdir/rootdir   #: cp  -r: 拷贝目录;-p:保留权限

练习3如何创建/testdir/dir1/x, /testdir/dir1/y, /testdir/dir1/x/a, /testdir/dir1/x/b, /testdir/dir1/y/a, /testdir/dir1/y/b

解:mkdir -vp /testdir/dir1/{x,y}/{a,b}

Dir1

├── x

   ├── a

   └── b

└── y

    ├── a

    └── b

[root@wCentos7 testdir]# mkdir -vp /testdir/dir1/{x,y}/{a,b}

mkdir: created directory /testdir/dir1

mkdir: created directory /testdir/di1/x

mkdir: created directory /testdir/dir1/x/a

mkdir: created directory /testdir/dir1/x/b

mkdir: created directory /testdir/dir1/y

mkdir: created directory /testdir/dir1/y/a

mkdir: created directory /testdir/dir1/y/b

 

练习4如何创建/testdir/dir2/x,/testdir/dir2/y,/testdir/dir2/x/a,/testdir/dir2/x/b

解:mkdir -vp /testdir/dir2/{x/{a,b},y}

需要得到的目录树为:

dir2

├── x

   ├── a

   └── b

└── y

 

[root@wCentos7 testdir]# mkdir -vp /testdir/dir2/{x/{a,b},y}

mkdir: created directory /testdir/dir2

mkdir: created directory /testdir/dir2/x

mkdir: created directory /testdir/dir2/x/a

mkdir: created directory /testdir/dir2/x/b

mkdir: created directory /testdir/dir2/y

练习5如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6, /testdir/dir5/dir7

 

解:mkdir -vp /testdir/{dir3,dir4,dir5/{dir6,dir7}}

需要得到的目录树结构为:

├── dir3

├── dir4

├── dir5

   ├── dir6

   └── dir7

 

[root@wCentos7 testdir]# mkdir -pv /testdir/{dir3,dir4,dir5/{dir6,dir7}}

mkdir: created directory /testdir/dir3

mkdir: created directory /testdir/dir4

mkdir: created directory /testdir/dir5

mkdir: created directory /testdir/dir5/dir6

mkdir: created directory /testdir/dir5/dir7

练习6/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中?

cat /etc/issue | tr 'a-z' 'A-Z' > /tmp/issue.out

解:管道的作用就是把上个命令的输出,当做下一个命令的输入。

Cat 看的到文件内容输出给 tr ,

 

tr  'a-z'  'A-Z'

tr把输入的内容所有小写“a-z”转换为 大写的“A-Z

 

[root@wCentos7 testdir]# cat /etc/issue | tr 'a-z' 'A-Z' >/tmp/issue.out

[root@wCentos7 testdir]# cat /tmp/issue.out

\S

KERNEL \R ON AN \M

 

========================

WELCOME TO MY HOSTNAME SA

WELCOME TO MY HOSTNAME SB

=========================

[root@wCentos7 testdir]# cat /etc/issue

\S

Kernel \r on an \m

 

========================

welcome to my hostname SA

welcome to my hostname SB

=========================

 

 

 

练习7将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中?

解:who |  tr 'a-z' 'A-Z' >/tmp/who.out

 

Who :查看当前系统登录用户 who 命令;

转换大写: tr 'a-z' 'A-Z'  

>  :输出从定向到 /tmp/who.out文件

 

[root@wCentos7 testdir]# who  |  tr 'a-z' 'A-Z' >/tmp/who.out

[root@wCentos7 testdir]# who

root     :0           2016-07-28 08:36 (:0)

root     pts/0        2016-07-30 08:41 (10.1.16.1)

[root@wCentos7 testdir]# cat /tmp/who.out

ROOT     :0           2016-07-28 08:36 (:0)

ROOT     PTS/0        2016-07-30 08:41 (10.1.16.1)

 

 

 

练习8一个linux用户给root发邮件,要求邮件标题为”help”,邮件正文如下:

Hello, I am 用户名,the system version is here,pleasehelp me to check it ,thanks!

操作系统版本信息

解:重点在于如何实现邮件调用系统的命令:

 用户名 : id -un

 操作系统版本信息 : cat /etc/redhat-release

mail -s "hello" root <root.mail

nano  root.mail

Hello, I am `id -un`,the system version is here,pleasehelp me to check it ,thanks!

`cat /etc/redhat-release`

 

练习9/root/下文件列表,显示成一行,并文件名之间用空格隔开?

解:ls -1 /root | tr "\n" " "

重点:

ls 先让文件列表一列显示;

替换掉每行的换行符 ”\n“为 空格即可 实现我们的要求

 

 

 

[root@wCentos7 ~]# ls -1 /root

anaconda-ks.cfg

bash1.sh

bash.sh

Desktop

Documents

Downloads

dz

dz.zip

f11

f1.txt

initial-setup-ks.cfg

linux.txt

Music

Pictures

Public

Templates

Videos

windows_tr.txt

windows.txt

zzzzzzz

 

[root@wCentos7 ~]# ls -1 /root | tr "\n" " "

anaconda-ks.cfg bash1.sh bash.sh Desktop Documents Downloads dz dz.zip f11 f1.txt initial-setup-ks.cfg linux.txt Music Pictures Public Templates Videos windows_tr.txt windows.txt zzzzzzz

[root@wCentos7 ~]#

 

 

练习10file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和?

解:由于内容确定了,文件的格式确定了,我们可以分析:

把文件内容中每个数字之间的空格换成”+“号,再让我们的计算器程序 bc 区统计和即可

 

[root@wCentos7 ~]# cat file1_sum

1 2 3 4 5 6 7 8 9 10

[root@wCentos7 ~]# echo " $(cat file1_sum | tr " " "+") "| bc

55

 

练习11删除Windows文本文件中的'^M'字符

 

解:我们得先确定,相同的内容的文件,在windowslinux中有上面区别,

Windows.txt linux.txt

 

[root@wCentos7 ~]# cat windows.txt  #windows传到linux文件

hello!

what is your name ?

my name is  sb

 

 

how are you ?

 

 

 

bey-bey!

 

[root@wCentos7 ~]# cat linux.txt  #linux上相同内容的文件

hello!

what is your name ?

my name is sb

 

 

how are you ?

 

 

 

bey-bey!

 

[root@wCentos7 ~]# ll windows.txt linux.txt   #相同内容的文件大小不一样

 

-rw-r–r–. 1 root root 70 Jul 30 10:13 linux.txt

-rwxr–r–. 1 root root 80 Jul 30 10:11 windows.txt

 

 

[root@wCentos7 ~]# hexdump -c windows.txt  #查看16进制的windows文件

0000000   h   e   l   l   o   !  \r  \n   w   h   a   t       i   s    

0000010   y   o   u   r       n   a   m   e       ?  \r  \n   m   y    

0000020   n   a   m   e       i   s           s   b  \r  \n  \r  \n  \r

0000030  \n   h   o   w       a   r   e       y   o   u       ?  \r  \n

0000040  \r  \n  \r  \n  \r  \n   b   e   y   –   b   e   y   !  \r  \n

0000050

[root@wCentos7 ~]# hexdump -c linux.txt  #查看16进制的linux文件

0000000   h   e   l   l   o   !  \n   w   h   a   t       i   s       y

0000010   o   u   r       n   a   m   e       ?  \n   m   y       n   a

0000020   m   e       i   s       s   b  \n  \n  \n   h   o   w       a

0000030   r   e       y   o   u       ?  \n  \n  \n  \n   b   e   y   –

0000040   b   e   y   !  \n  \n                                        

0000046

[root@wCentos7 ~]# cat windows.txt | tr -d  "\r">windows_tr.txt

通过观察发现:windows的文件多出了 \r的字符,所以删除掉 \r字符即可,删除后文件的内容还是有一点不一样,就是\n的数量问题,linux\n数量比windows的要多些,现在我们处理不了,了解windowslinux文本文件的有什么区别即可。

 

 

[root@wCentos7 ~]# ll

total 36

-rw——-. 1 root root        1417 Jul 21 11:34 anaconda-ks.cfg

-rw-r–r–. 1 chen ChenJiaShun    0 Jul 28 16:33 bash1.sh

-rw-r–r–. 1 root root           0 Jul 28 16:33 bash.sh

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Desktop

drwxr-xr-x. 3 root root          17 Jul 27 23:14 Documents

drwxr-xr-x. 2 root root          22 Jul 28 11:39 Downloads

-rw-r–r–. 1 root root          52 Jan 12  2016 dz

-rwxrw-rw-. 1 root root         154 Jul 29 18:13 dz.zip

-rw-r–r–. 1 root root          12 Jul 27 10:19 f11

-rwxrw-rw-. 1 root root          15 Jul 27 10:15 f1.txt

-rw——-. 1 root root        1465 Jul 21 11:35 initial-setup-ks.cfg

-rw-r–r–. 1 root root          70 Jul 30 10:13 linux.txt

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Music

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Pictures

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Public

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Templates

drwxr-xr-x. 2 root root           6 Jul 21 11:54 Videos

-rw-r–r–. 1 root root          70 Jul 30 10:17 windows_tr.txt

-rwxr–r–. 1 root root          80 Jul 30 10:11 windows.txt

-rw-r–r–. 1 root root           0 Jul 27 23:24 zzzzzzz

[root@wCentos7 ~]# hexdump -c linux.txt

0000000   h   e   l   l   o   !  \n   w   h   a   t       i   s       y

0000010   o   u   r       n   a   m   e       ?  \n   m   y       n   a

0000020   m   e       i   s       s   b  \n  \n  \n   h   o   w       a

0000030   r   e       y   o   u       ?  \n  \n  \n  \n   b   e   y   –

0000040   b   e   y   !  \n  \n                                        

0000046

[root@wCentos7 ~]# hexdump windows_tr.txt

0000000 6568 6c6c 216f 770a 6168 2074 7369 7920

0000010 756f 2072 616e 656d 3f20 6d0a 2079 616e

0000020 656d 6920 2073 7320 0a62 0a0a 6f68 2077

0000030 7261 2065 6f79 2075 0a3f 0a0a 620a 7965

0000040 622d 7965 0a21                         

0000046

[root@wCentos7 ~]# hexdump -c  windows_tr.txt

0000000   h   e   l   l   o   !  \n   w   h   a   t       i   s       y

0000010   o   u   r       n   a   m   e       ?  \n   m   y       n   a

0000020   m   e       i   s           s   b  \n  \n  \n   h   o   w    

0000030   a   r   e       y   o   u       ?  \n  \n  \n  \n   b   e   y

0000040   –   b   e   y   !  \n                                        

0000046

 

练习12处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格

 解:分析下字符串中相当与要删除字母,删除标点符号等字符;

我们用tr -d 删除字母  r -d "[[:alpha:]]"  

我们用tr -d 删除标点符号 r -d "[[:punct:]]"

 

echo "xt.,l 1 jr#!$mn2 c*/fe3 uz4"  | tr -d "[[:alpha:]]" | tr -d  "[[:punct:]]"

 

[root@wCentos7 testdir]# echo "xt.,l 1 jr#"[[:alpha:]]"mn2 c*/fe3 uz4 5    6   7   8"  | tr -d "[[:alpha:]]" | tr -d  "[[:punct:]]"

 1 2 3 4 5    6   7   8

[root@wCentos7 testdir]#

 

练习13PATH变量每个目录显示在独立的一行

echo $PATH | tr ':' '\n'

解:分析下 $PATH是以 : 为分隔符,所以把 : 替换成换行 \n即可

 

[root@wCentos7 testdir]# echo $PATH | tr ':' '\n'

/usr/local/sbin

/usr/local/bin

/usr/sbin

/usr/bin

/root/bin

[root@wCentos7 testdir]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

练习14删除指定文件的空行

例如: file1

解 :cat /etc/issue  | tr -s "\n" \S

 #原文件中 换行为 \n 两个重复的\n删除一个保留一个 即可以实现删除空行的效果

 

[root@wCentos7 testdir]# cat /etc/issue  | tr -s "\n" \S

Kernel \r on an \m

========================

welcome to my hostname SA

welcome to my hostname SB

=========================

 

[root@wCentos7 testdir]# cat /etc/issue   

\S

Kernel \r on an \m

 

========================

welcome to my hostname SA

welcome to my hostname SB

=========================

 

练习15将文件中每个单词(字母)显示在独立的一行,并无空行

解:cat /etc/issue |tr "[[:space:]]" "\n" | tr -s "\n"

分析下文件内容:

需要每个字母的尾部空白行 替换为换行符 \n,tr "[[:space:]]" "\n"

再删除掉有重复换行符的即可:tr -s "\n"

 

 

[root@wCentos7 testdir]# cat /etc/issue

\S

Kernel \r on an \m

 

========================

welcome to my hostname SA

welcome to my hostname SB

=========================

 

 

[root@wCentos7 testdir]# cat /etc/issue |tr "[[:space:]]" "\n" | tr -s "\n"

\S

Kernel

\r

on

an

\m

========================

welcome

to

my

hostname

SA

welcome

to

my

hostname

SB

=========================

 

 

练习16创建用户gentoo,附加组为binroot,默认shell/bin/csh,注释信息为"Gentoo Distribution"

:  useradd -G bin,root -s /bin/csh  -c "Gentoo Distribution" gentoo

Useradd :添加用户的命令;

-G :设置用户的附加组

-s: 设置用户的shell环境

-c: 设置用户的描述 说明

 

[root@wCentos7 ~]# getent passwd gentoo #查看用户的说明

gentoo:x:1002:1002:Gentoo Distribution:/home/gentoo:/bin/csh

[root@wCentos7 ~]# getent group gentoo

gentoo:x:1002:

[root@wCentos7 ~]# cat /etc/group  #查看附加组中是否有gentoo用户信息

root:x:0:gentoo

bin:x:1:gentoo

…………..

gentoo:x:1002:

[root@wCentos7 ~]#

 

 

练习17创建下面的用户、组和组成员关系

名字为admins 的组

用户natasha,使用admins 作为附属组

用户harry,也使用admins 作为附属组

用户sarah,不可交互登录系统,且不是admins 的成员,natashaharrysarah密码都是centos

 

解:groupadd admins

#单独添加群组的命令

useradd -G admins natasha

#添加用户 natasha 并且设置附加组为 admins

useradd -G admins harry

#添加用户 harry并且设置附加组为 admins

useradd -s /sbin/nologin sarah

#添加用户 sarah 不让其登录设置shell为:/sbin/nologin即可

echo centos | passwd –stdin natasha

#passwd –stdin接收标准输入的密码 centos ,这样可以避免用户交互

echo centos | passwd –stdin harry

#passwd –stdin接收标准输入的密码 centos ,这样可以避免用户交互

echo centos | passwd –stdin sarah

#passwd –stdin接收标准输入的密码 centos ,这样可以避免用户交互

 

 

 

[root@wCentos7 ~]# groupadd admins

[root@wCentos7 ~]# useradd -G admins natasha

[root@wCentos7 ~]# useradd -G admins harry

[root@wCentos7 ~]# useradd -s /sbin/nologin sarah

[root@wCentos7 ~]# echo ecntos | passwd –stdin natasha

Changing password for user natasha.

passwd: all authentication tokens updated successfully.

[root@wCentos7 ~]# echo ecntos | passwd –stdin harry

Changing password for user harry.

passwd: all authentication tokens updated successfully.

[root@wCentos7 ~]# echo ecntos | passwd –stdin sarah

Changing password for user sarah.

passwd: all authentication tokens updated successfully.

[root@wCentos7 ~]#

 

 

   

 

[root@wCentos7 ~]# getent group admins

admins:x:1003:natasha,harry

[root@wCentos7 ~]# getent passwd sarah

sarah:x:1005:1006::/home/sarah:/sbin/nologin

[root@wCentos7 ~]# getent passwd natasha

natasha:x:1003:1004::/home/natasha:/bin/bash

[root@wCentos7 ~]# getent passwd harry

harry:x:1004:1005::/home/harry:/bin/bash

 

 

[root@wCentos7 ~]# w

 10:56:53 up 23:15,  5 users,  load average: 0.02, 0.04, 0.05

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT

root     :0       :0               Thu08   ?xdm?  19:20   0.44s gdm-session-worker [pam/gdm-autologin]

root     pts/1    10.1.16.1        10:52    4:21   0.03s  0.03s -bash

root     pts/0    10.1.16.1        08:41    5.00s  2.77s  0.03s w

natasha  tty2                      10:53    3:25   0.02s  0.02s -bash

harry    tty3                      10:56   21.00s  0.02s  0.02s -bash

 

原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/27699

(0)
linux_rootlinux_root
上一篇 2016-08-05
下一篇 2016-08-05

相关推荐

  • centos6.9的安装

    先准备一个安装虚拟机的的软件VMware Workstation Pro和光盘centos6.9和光盘 然后打开该软件,点击创建新的虚拟机   然后会出现一个新建虚拟机向导,选择典型,点下一步 继续点下一步   把虚拟机名称改成所装的版本 然后新建一个文件夹,点击浏览,接着点击这个新建的文件夹,这个文件夹就是虚拟机所装入的位置,…

    2017-07-15
  • Btrfs文件系统的管理

    BTRFS文件系统 核心特性 支持将多个底层物理设备组合成同一个设备使用,即多物理卷支持。btrfs可由多个底层物理卷组成:支持RAID,以连击“添加”、“移除”、“修改” 写时复制,在修改文件时,先将文件复制一份,然后在新文件上进行修改,最后将文件名的指针指向新文件,所以原文件还是存在的。 数据及元数据校验码:checksum 子卷:在一个卷上创建子卷,每…

    Linux干货 2016-07-16
  • DNS简单概念 一

    DNS简单概念 一 DNS简单概念 一 1 §·主机角色 1 §·DNS服务器的类型: 1 §·DNS中简单术语 2 §·DNS中资源记录及其类型 2 §·DNS域与区域 4 §·BIND安全设置 5 §·BIND高级设置BIND VIEW 6   §·主机角色 在网络上不同的主机有不同的角色, 比如: DNS解析角色,邮件角色,网页服务器 §·D…

    Linux干货 2016-09-26
  • linux中文本处理工具cat 、less、more、head、tail、cut等使用

    文本内容查看工具:cat和less  cat 使用:查看文件内容          cat  选项      文件        …

    Linux干货 2016-08-08
  • 实现创建私有CA

    CA的构成:PKI: Public Key Infrastructure签证机构:CA(Certificate Authority)注册机构:RA证书吊销列表:CRL证书存取库:X.509:定义了证书的结构以及认证协议标准版本号序列号签名算法颁发者有效期限主体名称主体公钥CRL分发点扩展信息发行者签名证书类型:证书授权机构的证书服务器用户证书获取证书两种方法…

    Linux笔记 2018-05-22
  • linux系统及简单使用

    简介:CentOS(Community Enterprise Operating System)社区企业操作系统,安全和稳定性较好,有优秀的社区支持。   Linux系统的原则: 1、由单一目的的较小的程序程序组成 2、一切皆文件 3、避免捕获用户接口 4、配置文件保存在文本中 5、链接程序完成复杂的功能   Linux系统安装: 英文安…

    Linux干货 2017-07-15