1. 程式人生 > >linux練習題

linux練習題

面試考題 linux

linux練習題


1、指定格式顯示當前時間,格式:2017-11-09 10:20:30

    [root@cent6OS ~]#date "+%Y-%m-%d %H:%M:%S"

    2017-11-19 19:04:14

     date –d  “-6 day”  “+%F  %T” 指定格式顯示六天前的日期

date –d  “yesterday”

date –d  “10 month”

    date  "+%s"   距離1970年1月1號的秒數時間

   `echo date  "+%s" `/ 3600/24 | bc   將秒數轉化為天數

2、顯示前天是星期幾

  今天星期三 兩天前是星期一  0或7-6  0或7表示星期日

    [root@centos7 ~]#date -d "2 day ago" "+%u"

    6

  設置當前日期為2017-11-09  16:26:00

 date -s "16:26:00 2017-11-09" "+%Y-%m-%d %H:%M:%S"

3、在本機字符終端登錄時,除顯示原有信息外,再顯示當前登錄終端號,主機名和當前時間
登錄的終端號 時間 主機名
Nano  /etc/issue 
The hostname is \n 主機名
Time is  \t  時間
TTy is \l  登錄終端

4、今天18:30自動關機,並提示用戶
shutdown  -P(power off)  "18:30"
shutdown  -h(halt)  now  立即關機
shutdown  -r  +2  2分鐘後重啟 

二、文件管理

  1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中 間出現至少一位數字的文件或目錄

            ls -d  /var/1*[0-9]*[[:lower:]]
  2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的 文件或目錄
            ls  -d  /etc/[0-9]*[^[:digit:]]       tuolefu ^
  3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其 它任意長度任意字符的文件或目錄

            ls  -d   [^[:alpha:]][[:alpha:]]*
  4、顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數 字,其它為任意字符的文件或目錄
            ls  -d  /etc/rc[0-6]*
  5、顯示/etc目錄下,所有以.d結尾的文件或目錄
            l s  -d  /etc/*.d
  6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文 件或目錄
            ls  -d  [mnrp]*.conf
  7、只顯示/root下的隱藏文件和目錄
            ls  -d  /root/.[^.]*
             ls  -aI  /root/[^.]* 
  8、只顯示/etc下的非隱藏目錄
                ls  -d   /etc/[^.]*/
     總結
        *顯示普通文件  壓縮文件  可執行程序
        */只顯示目錄
    (1) 如何創建/testdir/dir1/x, /testdir/dir1/y,
        /testdir/dir1/x/a, /testdir/dir1/x/b,
        /testdir/dir1/y/a, /testdir/dir1/y/b
            mkdir -pv /testdir/dir1{x,y}/{a,b}
    (2) 如何創建/testdir/dir2/x, /testdir/dir2/y,
        /testdir/dir2/x/a, /testdir/dir2/x/b
      mkdir /testdir/dir2/{x/{a,b},y} -pv
    (3) 如何創建/testdir/dir3, /testdir/dir4, /testdir/dir5, /testdir/dir5/dir6,                 /testdir/dir5/dir7
      mkdir -pv /testdir/dir{3,4,5/dir{6,7}}

三、重定向與管道
 1、將/etc/issue文件中的內容轉換為大寫後保存至/tmp/issue.out文件中
   tr   ‘a-z‘  ‘A-Z‘ <  /etc/issue   >  /tmp/issue.out
2、將當前系統登錄用戶的信息轉換為大寫後保存至/tmp/who.out文件中
who | tr [a-z] [A-Z] > /tmp/who.out
 3、一個linux用戶給root發郵件,要求郵件標題為”help”,郵件正文如下:Hello, I am 用戶名,The system version is here,please help me to check it ,thanks!
操作系統版本信息

Mail   -s  "help"  root  <<EOF

>Hello, I am  `whoami` | $USER  ,The system version is here,please help me to check it ,thanks!

 >  Uname -r       系統內核信息

>Cat  /etc/centos-release    操作系統版本信息

         >  EOF

4、將/root/下文件列表,顯示成一行,並文件名之間用空格隔開

    ls/root/ | tr ‘\n‘  ‘ ‘

 5、計算1+2+3+..+99+100的總和

[root@centos7 ~]#seq --separator="+" 1 100 | bc

5050

[root@centos7 ~]#seq -s ‘+‘ 1 100 | bc

5050

[root@centos7 ~]#echo {1..100} | tr " " "+" | bc

5050

[root@centos7 ~]#

  6、刪除Windows文本文件中的‘^M’字符

   tr  -d   ‘\r‘  <  win.txt    >  linux.txt  

   tr   -d   ‘\15‘   win2.txt  > linux2.txt

7、處理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4”,只保留其中的數字和空格

[root@centos7 ~]#echo   ‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4‘ |  tr -dc ‘[0-9]  \n‘

‘xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4‘    單引號認為!$為普通字符  ,不認為它是上個命令的最後一個參數

 8、將PATH變量每個目錄顯示在獨立的一行

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

 9、將指定文件中0-9分別替代成a-j

tr [0-9] [a-j] < testfile.txt

10、將文件中每個單詞(由字母組成)顯示在獨立的一行,並無空行

    tr  -sc  ‘a-z大A到Z‘  ‘\n‘   <  /etc/centos-release

四、用戶組和權限管理

1、創建用戶gentoo,附加組為bin和root,默認shell為/bin/csh,註釋信息為"Gentoo Distribution"

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

2、創建下面的用戶、組和組成員關系

名字為admins 的組

用戶natasha,使用admins 作為附屬組

用戶harry,也使用admins 作為附屬組

用戶sarah,不可交互登錄系統,且不是admins 的成員,natasha,harry,sarah密碼都是centos

    groupadd  admins;

     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;

3、當用戶xiaoming對/testdir 目錄無執行權限時,意味著無法做哪些操作?

不能cd進入該目錄  目錄下的文件什麽都不能做(即使文件有777最高權限)

4、當用戶xiaoqiang對/testdir 目錄無讀權限時,意味著無法做哪些操作?

     不能查看目錄的文件列表

5、當用戶wangcai 對/testdir 目錄無寫權限時,該目錄下的只讀文件file1是否可修改和刪除?

         file1文件是不能刪除的,不能修改

6、當用戶wangcai 對/testdir 目錄有寫和執行權限時,該目錄下的只讀文件file1是否可修改和刪除?

     file1文件可以刪除,但是不能修改

7、復制/etc/fstab文件到/var/tmp下,設置文件所有者為wangcai讀寫權限,所屬組為sysadmins組有讀寫權限,其他人無權限

cp  /etc/fstab   /var/tmp/ ;

chmod

u=rw,g=rw,o=  fstab

chown

wangcai:sysadmins  fstab

8、誤刪除了用戶haha的家目錄,請重建並恢復該用戶家目錄及相應的權限屬性、所有者

cp -r /etc/skel /home/haha  (復制目錄並改名)

chown -R haha:haha /home/haha

chmod 700 /home/haha

haha用戶的所有者和所有組為haha,所以需更改

9、在/testdir/dir裏創建的新文件自動屬於g1組,組g2的成員如:alice能對這些新文件有讀寫權限,組g3的成員如:tom只能對新文件有讀權限,其它用戶(不屬於g1,g2,g3)不能訪問這個文件夾。

[root@centos7 app]#mkdir /testdir/dir

[root@centos7 app]#groupadd g1

[root@centos7 app]#groupadd g2

[root@centos7 app]#groupadd g3

[root@centos7 app]#chgrp g1  /testdir/dir

[root@centos7 app]#chmod g+s  /testdir/dir

創建用戶並添加到相應組

[root@centos7 ~]#setfacl -m d:g:g2:rw,d:g:g3:r,o::- /testdir/dir  (新創建目錄不需要加-R遞歸設置默認權限)

sed文本處理

1、刪除centos7系統/etc/grub2.cfg文件中所有以空白開頭的行行首的空白字符

[root@centos7 ~]$ sed -nr ‘s@^([[:space:]]+)(.*)@\2@p‘ /etc/grub2.cfg

2、刪除/etc/fstab文件中所有以#開頭,後面至少跟一個空白字符的行的行首的#和空白字符

[root@centos7 ~]$ sed -nr ‘s@(^#[[:space:]])(.*)@\2@p‘ /etc/fstab

3、在centos6系統/root/install.log每一行行首增加#號

[root@centos6 ~]# sed -nr ‘s@.*@#\0@p‘ /root/install.log

4、在/etc/fstab文件中不以#開頭的行的行首增加#號

[root@centos6 ~]# sed -nr ‘s@^[^#].*@#\0@p‘ /etc/fstab

5、處理/etc/fstab路徑,使用sed命令取出其目錄名和基名

[root@centos6 ~]# echo "/etc/fstab"   |sed -nr ‘s@(.*/)([^/]+)/?@\2@p‘
fstab
[root@centos6 ~]# echo "/etc/fstab/"   |sed -nr ‘s@(.*/)([^/]+)/?@\2@p‘
fstab
[root@centos6 ~]# echo "/etc/"   |sed -nr ‘s@(.*/)([^/]+)/?@\1@p‘

6、利用sed 取出ifconfig命令中本機的IPv4地址

[root@centos7 ~]$ ifconfig ens33 |sed -nr ‘2s@.*inet (.*) netmask.*@\1@p‘

v7、統計centos安裝光盤中Package目錄下的所有rpm文件的以.分隔倒數第二個字段的重復次數

root@centos7 ~]$ ls /misc/cd/Packages/ |sed -nr ‘s@.*\.([^.]*)\.rpm@\1@p‘ |sort  |uniq -c
2141 i686
3076 noarch
4374 x86_64

8、統計/etc/init.d/functions文件中每個單詞的出現次數,並排序(用grep和sed兩種方法分別實現)

sed方法

[root@centos7 ~]#sed -r ‘s/[^[:alpha:]]/\n/g‘

/etc/init.d/functions | sed ‘/^$/d‘ | uniq -c | sort -n | wc -l

grep方法(註意非正則符號前加斜杠)

egrep -o  "[[:alpha:]]+" /etc/init.d/functions | uniq -c | sort | wc -l

9、將文本文件的n和n+1行合並為一行,n為奇數行

[root@centos7 ~]#seq 1 10 | sed ‘N;s/\n/ /‘

1 2

3 4

5 6

7 8

9 10

[root@centos7 ~]#seq 1 10 | xargs -n3 (設置最多的參數個數)

1 2 3

4 5 6

7 8 9

10

linux練習題