Linux之文件和目錄管理、用戶和組管理

1、Linux上的文本、文件及目錄管理類命令都有哪些,其常用的使用方法及其相關示例演示。
文本、文件和目錄管理類命令:pwd,ls,cat,tac,rev,file,echo,cp,mv,rm,touch,stat,head,tail,more,less;mkdir,rmdir,tree,tee

pwd:printing working directory 顯示工作目錄

cd:change directory
    cd [/PATH/TO/SOMEFILE]
    cd;切換回家目錄
        注意:bash中,~表示家目錄
    cd ~:切換回自己的家目錄
    cd ~USERNAME:切換到指定用戶家目錄
    cd -:上一次所在目錄與當前目錄之間來回切換

$PWD:當前工作目錄
    $OLDPWD:上一次的工作目錄

ls:list,列出指定目錄下的內容
     ls [OPTION]... [FILE]…
        -a:顯示所有文件,包括隱藏文件
        -A:顯示除.和..以外所有文件
        -l:--long,長格式列表,顯示文件的詳細屬性信息
        -rw-r--r--. 1 root root 9748 Jun 25 17:34 install.log
            -:文件類型,-,d,b,c,l,s,p
            rw-r--r--:屬主,屬組,其他用戶
            .表示文件帶有隱藏屬性
            1:數字表示文件被硬鏈接的次數
            root root:屬主,屬組
            9748:數字表示文件的大小,單位是字節;
            Jun 25 17:34:
            install.log:文件名
        -h,--human-readale:對文件大小單位換算;換算後結果可能會非精準值:
        -d;查看目錄本事而非其內部的文件內部列表;
        -r:--reverse,逆序顯示
        -R:recursive,遞歸顯示

cat:concatenate,文件文本查看工具;
    cat [OPTION]... [FILE]…
        -n:給顯示的文件行編號
        -E:顯示行結束符$

tac:逆序顯示

rev: 反向輸出文件內容。

file:查看文件內容的類型
    file [file]…

echo:回顯
    echo [SHORT-OPTION]... [STRING]…
        -n:不進行換行
        -e:讓轉義符生效

cp命令:copy源文件:目標文件
    cp [OPTION]... [-T] SOURCE DEST
    cp [OPTION]... SOURCE... DIRECTORY
  cp [OPTION]...   -t   DIRECTORY  SOURCE…

單源複製:cp [OPTION]... [-T] SOURCE DEST
    如果DEST不存在,則事先創建此文件,並複製源文件的數據流至DEST中
    如果DEST存在:
        如果DEST非目錄文件,則覆蓋目標文件
        如果DEST是目錄文件,則先在DEST目錄下創建一個與源文件同名的文件,並複製其數據流

    常見選項:
        -i:交互式複製,即覆蓋之前提醒用戶確認;
        -f:強制覆蓋目標文件
        -r:遞歸複製目錄
        -d:複製符號鏈接文件本身;而非其指向的源文件
        -a:-dR --preserve=all,archive
        --preserve
            mode:權限
            ownership:屬主和屬組
            timestamp:時間戳
            context:安全標識
            xattr:符號鏈接
            all:以上所有屬性

mv:move

rm:remove
 rm [OPTION]... FILE…
    常見選項:
        -i:interactive
        -f:forec
        -r:recursive

    刪除目錄:rm -rf 
    危險操作:rm -rf /*

    注意:所有不用的文件建議不要直接刪除,而是移動至某個專用目錄;

touch命令
    格式:touch [OPTION]... FILE...
    -a僅改變atime和ctime
    -m 僅改變mtime和ctime
    -t [[CC]YY]MMDDhhmm[.ss]
        指定atime和mtime的時間戳
    -c如果文件不存在,則不予創建 

stat命令
    文件:metadata, data
    三個時間戳:
        access time:訪問時間,atime,讀取文件內容
        modify time: 修改時間, mtime,改變文件內容(數據)
        change time: 改變時間, ctime,元數據發生改變

more: 分頁查看文件
    more [OPTIONS...] FILE...
        -d: 顯示翻頁及退出提示

less:一頁一頁地查看文件或STDIN輸出
    查看時有用的命令包括:
        /文本搜索文本
        n/N跳到下一個或上一個匹配
        less命令是man命令使用的分頁器

head [OPTION]... [FILE]...
    -c #: 指定獲取前#字節
    -n #: 指定獲取前#行
    -#:指定行數

tail [OPTION]... [FILE]...
    -c #: 指定獲取後#字節
    -n #: 指定獲取後#行
    -#:同上
    -f: 跟蹤顯示文件fd新追加的內容,常用日誌監控
        相當於--follow=descriptor
    -F: 跟蹤文件名,相當於--follow=name --retry
        注意:tailf類似tail –f,當文件不增長時並不訪問文件

mkdir:make directories
    mkdir [OPTION]... DIRECTORY…
        -p:自動按需創建父目錄
        -v:verbose 顯示創建目錄過程
        -m:MODE:直接給定權限:
            mkdir -m 1777 /tmp/test1

    注意:路徑基名方爲命令的作用對象,基名之前的路徑必須的存在

rmdir:remove empty directories
    rmdir [OPTION]... DIRECTORY…
        -p:刪除某目錄後,如果其目錄爲空,則一併刪除之;
        -v:verbose :顯示過程

tree命令:
     list contents of directo‐ries in a tree-like format
        -d 只顯示目錄
        -L level 指定顯示的層級數目
        -P pattern 只顯示由指定pattern匹配到的路徑

tee命令:把數據重定向到給定文件和屏幕上。
        COMMAND | tee /path/to/somefile
            -a:向文件中重定向時使用追加模式

2、使用命令行展開功能,創建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目錄下創建目錄:x_y, x_z, q_y, q_z

    [root@centos-7 ~]# mkdir /tmp/{a1/{a,b},a2}
    [root@centos-7 ~]# mkdir /tmp/{x,q}_{y,z}

3、文件的元數據信息有哪些,分別表示什麼含義,如何查看?如何修改文件的時間戳信息。

文件類型;訪問權限perm;被硬鏈接次數;文件onwer;文件group;文件大小;文件的最近一次被修改時間;文件名;

文件的時間戳管理工具:touch
[root@centos-7 ~]# ll /tmp/test1
    -rw-r--r--. 1 root root 0 Jul  3 10:24 /tmp/test1
    查看狀態(屬性信息或者元數據):stat
    [root@centos-7 ~]# stat /tmp/test1
        File: ‘/tmp/test1’
    Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 33557872    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2019-07-03 10:24:01.561819291 -0400
Modify: 2019-07-03 10:24:01.561819291 -0400
Change: 2019-07-03 10:24:01.561819291 -0400
 Birth: -
[root@centos-6 ~]# stat /tmp/test1
    File: `/tmp/test1'
    Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 786436      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-03 10:43:31.991703330 -0400
Modify: 2019-07-03 10:43:31.991703330 -0400
Change: 2019-07-03 10:43:31.991703330 -0400
    注意:centos6與centos7不同

文件時間戳:
    Access: 訪問時間
        touch -a
Modify: 修改時間
    touch -m
Change: 改變時間

4、在/tmp目錄下創建以tfile開頭,後跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

[root@centos-7 ~]# mkdir /tmp/rfile-$(date +%F-%H-%M-%S)

5、複製/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

root@centos-7 ~]# mkdir /tmp/mytest1;cp -r /etc/p*[^0-9] /tmp/mytest1

6、創建用戶tom,指定UID爲5001,指定家目錄爲/tmp/tom, 指定shell爲/bin/zsh, 指定基本組爲tom,附加組爲jack

[root@centos-7 ~]# groupadd jack; useradd -u 5001 -d /tmp/tom -s /bin/zsh -G jack tom
[root@centos-7 ~]# getent passwd tom
    tom:x:5001:5001::/tmp/tom:/bin/zsh

7、常用的用戶以及組管理命令有哪些,並演示命令以及用法。

    groupadd命令:添加組
        groupadd [options] group
            -g GID:指定gid,默認是上一組的GID+1
            -r:創建系統組

    groupmod:修改組
        groupadd [options] group
            -g:修改組iD
            -n:修改組組名

    groupdel:刪除組
        groupdel [options] group

useradd/adduser:添加用戶或者更新默認新用戶信息
    useradd [options] user
        -u,-uid 指定用戶UID
        -g,-gid 指定用戶基本組,注意:此組的實現存在
        -G,-groups 指定用戶所屬的附加組,多個組之間用逗號分隔
        -c,--comment 指明註釋信息
        -d,--home 以指定的路徑爲用戶的家目錄;通過複製/etc/skel此目錄並重命名實現,指定的家目錄路徑如果事先存在,則不會爲用戶複製環境配置文件;
        -s,指定用戶的默認shell,
        -r,創建系統用戶
        -m,-M,-f

        注意:創建用戶是的諸多默認設定配置文件:/etc/login.defs

        注意:useradd —D 顯示創建用戶默認設置
            useradd -D 選項:修改默認選項的值
                    默認選項的配置文件:/etc/default/useradd
                            [root@centos-7 ~]# useradd -D
                            GROUP=100
                            HOME=/home
                            INACTIVE=-1 非活動期限禁用
                            EXPIRE= 
                            SHELL=/bin/bash
                            SKEL=/etc/skel
                            CREATE_MAIL_SPOOL=yes 郵箱路徑:/var/spool/mail

usermod命令:修改用戶屬性
    usermod [options] LOGIN 
        -u,--uid UID:修改用戶的id爲此處制定的新UID
        -g,--gid GROUP:修改用戶所屬的基本組
        -G,--groups GROUP1[,GROUP2,...[,GROUPN]]]:修改用戶所屬的附加組,原來的附加組會被覆蓋
        -a,--append:與-G一同使用,用於爲用戶追加新的附加組
        -c,--comment :修改註釋信息
        -d,--home:修改用戶的家目錄;用戶原有的文件不會被轉移至新目錄
        -m, --move-home:只能與-d選項一同使用,用於將原來的家目錄移動爲新的家目錄
        -l, --login NEW_LOGIN:修改用戶名
        -L, --lock:鎖定用戶密碼;即在用戶原來的密碼字符串之間添加一個“!”
        -U, --unlock:解除用戶的密碼
        -s, --shell SHELL:修改用戶的morenshell

userdel命令:刪除用戶
    userdel [options] LOGIN
        -r:刪除用戶時一併刪除其家目錄

passwd命令:
    passwd  [-k]  [-l]  [-u [-f]] [-d] [-e] [-n mindays] [-x max‐
             days] [-w warndays] [-i inactivedays] [-S]  [--stdin]  [user‐
             name]
(1)passwd:修改用戶自己的密碼
(2)passwd USERNAME:修改指定用戶的密碼,但僅root有此權限

        -l,-u:鎖定和解鎖用戶
        -d:清楚用戶密碼串;
        -e DATE:過期時間
        -I DAYS:非活動期限
        -n DAYS:密碼的最短使用期限
        -x DAYS:密碼的最長使用期限
        -w DAYS:警告期限
        --stdin:
        echo "字符串" |passwd --stdin USERNAEM &>/dev/null 

gpasswd命令
    gpasswd [option] group
        -a USERNAME:向組中添加用戶
        -d USERNAME:從組中刪除用戶

newgrp命令:臨時切換指定的組爲基本組
    newgrp [-] [group]
        -:會模擬用戶重新登錄以實現重新初始化其工作環境

chage命令:更改用戶密碼過期信息
    chage [options] LOGIN

id命令:顯示用戶的真實有效iD
    id [OPTION]... [USER]
        -u:僅顯示有效的UID
        -g:僅顯示用戶的基本組ID
        -G:僅顯示用戶所屬的所有租的ID
        -n:顯示名字而非ID

su命令:switch user
    登錄時切換:會重新讀取用戶的配置文件來重新初始化
        su - USERNAME
        su -l USERNAME
    非登錄式切換:不會讀取目標用戶的配置文件來重新初始化
        su USERNAME

    注意:管理員可無密碼切換至其他任何用戶:

    -c 'COMMAND':僅以指定用戶的身份運行此處指定的命令

其他幾個命令:chsh,chfn,finger,whoami,pwck,gprck

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章