1. 程式人生 > >馬哥linux作業--第四周

馬哥linux作業--第四周

處理動作 默認 第四周 lob 信息 追加內容 bar 刪除 pri

Q1:定義一個對所有用戶都生效的命令別名,例如:lftps=‘lftp 172.168.0.1/pub

編輯/etc/bashrc文件,在最後一行追加內容 "lftps=‘lftp 172.168.0.1/pub",保存後執行source /etc/bashrc

Q2:顯示/etc/passwd文件中不以/bin/bash結尾的行

grep -v ".+/bin/bash" /etc/passwd

Q3:找出/etc/passwd文件中,包含二位數字或者三位數字的行。

egrep "\b[[:digit:]]{2,3}\b" /etc/passwd

Q4:顯示/proc/meminfo文件中以大寫或小寫S
開頭的行;用三種方式實現

  1. egrep -i "^s" /proc/meminfo
  2. egrep "^[s|S].*" /proc/meminfo
  3. sed -n "/^[s|S]/p" /proc/meminfo
  4. sed "/^[s|S]/! d" /proc/meminfo

Q5:使用echo輸出一個絕對路徑,使用egrep取出路徑名,類似執行dirname /etc/passwd的結果

echo /etc/passwd | egrep -o ‘^/.+/‘

Q6:找出ifconfig中的ip地址。要求結果只顯示IP地址。

ifconfig | egrep -o "(([[:digit:]]{1,2}|1[[:digit:]]{2}|2[0-5]{2})\.){3}([[:digit:]]{1,2}|1[[:digit:]]{2}|2[0-5]{2})"

Q7:vim定制自動縮進四個字符

編輯/etc/vimrc文件,追加如下內容

set ai
set ts=4

Q8:編寫腳本,實現自動添加三個用戶,並計算這三個用戶的uid之和。

#! /usr/bin/env bash

sum=0

for uname in user1 user2 user3; do
    id $uname &> /dev/null && echo "$uname exists" || useradd $uname
    uid=$(id -u $uname)
    sum=$[$sum+$uid]
done

echo "uid sum = $sum"

Q9:find用法及常用用法的實例演示

  • 常用用法:find path 查找條件 處理動作
  • 查找條件(可組合使用):

    • -name string:根據文件名精確查找,可用glob通配符。
    • -iname string:不區分大小寫的-name
    • -regex PATTERN:根據正則查找,匹配範圍是整個路徑,比如要查找./fubar3,應該用.*bar..*b.*3’,而不是f.*r3
    • -user USERNAME/UID:查找指定屬主的文件。
    • -group GNAME/GID:查找指定屬組的文件。
    • -uid UID:查找指定屬主的文件
    • -gid GID:查找指定屬組的文件。
    • -nouser:查找沒有屬主的文件。
    • -nogroup:查找沒有屬組的文件。
    • -type [fdcblps]:根據文件類型查找。
    • -size [+-]n:根據文件大小查找,可用單位[bcwkMG]+表示大於,-表示小於,不加表示精確匹配(也沒那麽精確,10M表示9-10M都符合條件)
    • -mtime [+-]days:-表示days內修改過,+表示days前修改過,不加表示正好在days修改過。
    • -ctime [+-]days:改變時間,+-含義同-mtime
    • -atime [+-]days:訪問時間,+-含義同-mtime
    • -mmin n:n分鐘前修改過文件內容,
    • -cmin n:n分鐘前文件改變過。
    • -amin n:n分鐘前文件被訪問過。
    • -perm [=-/] MODE:按權限查找,-表示文件權限是MODE超集,/+表示權限中只要有一位能匹配就符合,不指定任何符號表示精確匹配。
  • 查找條件組合:

    • -a:與條件
    • -o:或條件
    • -not:取反
  • 處理動作

    • -print:默認動作,打印結果到標準輸出。
    • -ls:以類似ls -l的格式打印每個文件的信息。
    • -delete:刪除文件。
    • -fls file:類似`-ls,但將結果保存到指定文件中。
    • -ok COMMAND {};:交互模式執行指定命令,{};是固定寫法,表示文件名占位符。
    • -exec COMMAND {};:非交互模式執行指定命令,{};是固定寫法,表示文件名占位符。
  • 常用示例(引用課堂上的練習)
    • 查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄:find /var -user root -group mail
    • 查找/usr目錄下不屬於root, binhadoop的所有文件或目錄;用兩種方法
      • find /usr -not -user root -not -user bin -not -user hadoop
      • find /usr -not \( -user root -o -user bin -o -user hadoop \)
    • 查找/etc目錄下最近一周內其內容修改過,且屬主不是root用戶也不是hadoop用戶的文件或目錄:find /etc -mtime 7 -not -user root -not -user hadoop
    • 查找當前系統上沒有屬主或屬組,且最近一周內曾被訪問過的文件或目錄:find / \( -nouser -o -nogroup \) -atime -7
    • 查找/etc目錄下大於1M且類型為普通文件的所有文件: find /etc -size +1M -type f
    • 查找/etc目錄下所有用戶都沒有寫權限的文件:find /etc -not -perm +222 -type f
    • 查找/etc目錄至少有一類用戶沒有執行權限的文件:find /etc -not -perm -111 -type f
    • 查找/etc/init.d/目錄下,所有用戶都有執行權限,且其它用戶有寫權限的所有文件:find /etc/init.d -perm -113 -type f

馬哥linux作業--第四周