前面一章學習了硬鏈接和軟鏈接,回顧上一章節內容:
硬鏈接:在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