管道、重定向和用戶管理練習

前面一章學習了硬鏈接和軟鏈接,回顧上一章節內容:

   硬鏈接在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.www58058.com/27706

(0)
皺 多利亞皺 多利亞
上一篇 2016-08-04 14:41
下一篇 2016-08-04 14:42

相關推薦

  • 基于LNMP架構添加Memcached支持,并驗證其緩存結果

    一 Memcached簡介 Memcached是一個自由開源的,高性能,分布式內存對象緩存系統。它是一種基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。 Memcached簡潔而強大。它的簡潔設計便于快速開發,減輕開發難度,解決了大數據量緩存的很多問題。它的API兼容大部分流…

    Linux干貨 2016-12-12
  • N22-Dexter-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示?    Linux上的文件管理類命令有cp,rm,mv    cp命令:copy    常用選項:       -i:交互式復制,即覆蓋之前提醒用戶確認;     &nbsp…

    Linux干貨 2016-08-24
  • sed大法好

    sed sed概念 (1)基本概念:sed是流編輯器(stream editor),A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).作用就是對輸入的流(文件或者從一個管道輸入的流…

    Linux干貨 2016-12-02
  • 馬哥教育網絡班21期+第9周課程練習

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash  declare -i loginable=0 declare -i unloginable=0  &n…

    Linux干貨 2016-09-07
  • 簡單描述LVS工作原理-第1部分

    一、NAT模式(VS-NAT) 原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址,并發至此RS來處理,RS處理完成后把數據交給經過負載均衡器,負載均衡器再把數據包的原IP地址改為自己的IP,將目的地址改為客戶端IP地址即可?期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器? 優點:集群中的物理服務器可以使…

    Linux干貨 2016-08-15
  • Linux用戶與用戶組的詳解

    添加用戶   創建或添加新用戶使用useradd命令來實現,其命令用法為:   useradd [option] username   該命令的option選項較多,常用的主要有:   -c 注釋      用戶設置對賬戶的注釋說明文字  …

    Linux干貨 2016-08-05
欧美性久久久久