pwd:显示当前工作目录

    每个shell 和系统进程都有一个当前的工作目录

    CWD:current work directory

    显示当前shell当前工作目录

    #pwd: printing working directory

    $PWD:保存了当前工作目录

    $OLDPWD:保存上一次所在工作目录

            PWD=/PATH/TO/DIR 可以切换当前工作目录

    -P 显示真实物理的路径

        centos7:

        #cd /bin

#pwd -P 显示的是/usr/bin而不是/bin目录,因为/bin是链接指向/usr/bin的

wKiom1eZcqmy0ioGAAANHQFXG4w248.png-wh_50


cd:改变目录

    路径可为绝对或相对路径

cd /home/joshua/work

cd project/docs

    cd ..: 到当前目录的上一级目录

    cd: 回到你的家目录

    cd -: 到上一次的工作目录

    存储当前工作目录和上一次工作目录的相关环境变量

        PWD:保存了当前目录路径

        OLDPWD:上一次所在目录路径

wKioL1eZc0CiUznXAAAYr3BcZNg256.png-wh_50


ls: 列出当前目录的内容或指定目录

    ls [options] [files_or_dirs]

    Example:

        -a 显示所有文件包含隐藏文件

        -A 显示除去.和..之外的所有文件

        -l --long 显示文件的详细信息

        -R 递归显示目录下的所有文件

        -d 查看目录自身而非目录内的文件

        -1 把显示的文件以每个文件一行的方式显示

        –S 按文件的size大小从大到小排序文件

        –u 配合-t选项,按atime时间从新到旧排序的排列文件

    ls常用指令:ls -ld,ls -l

wKioL1eZc7GT2IvIAABVm8SE7iM514.png-wh_50


stat:查看文件时间戳

    文件的两个属性:

     metadata(元数据)文件的大小,类型,属主属组,atime mtime 时间

data(数据)文件的内部内容

    三个时间戳:

        access time:访问时间,读取文件内容时被修改

        modify time: 修改时间,改变文件内容(数据)被修改

        change time: 改变时间, 改变了文件的元数据时被修改

    atime 比 mtime 时间更新时,则读取文件是 atime 时间不会被修改,atime 时间更新的条件

        atime 是1天以前的时间,则读取的时候会被修改

        atime 比 mtime 时间更老

wKioL1eZdKmji98rAAA9obxcUJk585.png-wh_50


touch:创建空文件和刷新时间戳

    touch [OPTION]... FILE...

    -a: 仅改变 atime 时间

    -m: 仅改变 mtime 时间

    -c: 如果文件不存在,则不予创建

    -t:STAMP 手动设置时间戳

        [[CC]YY]MMDDhhmm[.ss]

wKiom1eZdRfxeS1_AABDFqpe5o4073.png-wh_50

    如何创建一个空文件

        #touch FILE

        #> FILE 可以创建一个空文件,但如果文件存在,会把文件覆盖成空文件

        #>> FILE 可以创建一个空文件,文件存在不会覆盖文件

wKiom1eZdc-BsGanAAAoGxWwxBw165.png-wh_50


文件通配符

    *  匹配零个或多个字符

    ?  匹配任何单个字符

    ~  当前用户家目录

    ~username  用户家目录

    ~+  当前工作目录

    ~-  前一个工作目录

    [0-9] 匹配一个数字范围

    [a-z] :大写和小写字母  匹配的是aAbBcC----zZ

    [wxc] 匹配列表中的任何的一个字符

    [^wxc]  匹配列表中的所有字符以外的字符

    预定义的字符类:#man 7 glob

        [[:digit:]]:任意一个数字,相当于0-9

        [[:lower:]]:任意小写字母

        [[:upper:]]: 任意大写字母

        [[:alpha:]]: 任意大小写字母

        [[:alnum:]]:任意数字或字母

        [[:space:]]:空格

        [[:punct:]]:标点符号

练习:

1、显示/var 目录下所有以l 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

wKiom1eZeYejzXWVAAAdHVMDqMo277.png-wh_50

2、显示/etc 目录下以任意一位数字开头,且以非数字结尾的文件或目录

wKioL1eZeZfA1P8VAAAMbZhH4ms205.png-wh_50

3、显示/etc/ 目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录

wKiom1eZea7TRlmkAAAX1_L1aQs033.png-wh_50

4、显示/etc 目录下所有以m 开头以非数字结尾的目录

wKiom1eZec7znXETAABKEmbDSvo653.png-wh_50

5、显示/etc 目录下,所有以.d 结尾的目录

wKioL1eZed7xn2t0AABYC3Oi7TA679.png-wh_50

6、显示/etc 目录下,所有.conf 结尾,且以m,n,r,p 开头的目录

wKiom1eZeijhYNfkAABAXb-XhQ4868.png-wh_50


alias:命令别名

    显示当前shell进程所有可用的命令别名

     #alias

wKiom1eZenTwLzRMAAAxzJGX6Jo460.png-wh_50

    定义别名NAME,在命令行中定义的别名,仅对当前shell进程有效

        #alias NAME='VALUE'

wKioL1eZetXT_IykAAAPUmGsDmA040.png-wh_50

    如果想永久有效,要定义在配置文件中

        仅对当前用户:~/.bashrc

        对所有用户有效:/etc/bashrc

    编辑配置文件后不会立即生效,想要配置文件生效;

     1):断掉当前终端在重新登陆

        2):bash进程重新读取配置文件:

            a:source /path/to/config_file

    b:. /path/to/config_file

    撤消别名:unalias,仅对当前shell生效,重启后无效

        unalias [-a] name [name ...]

            -a 撤销所有别名

    如果别名同原命令同名,要执行原命令可使用

        "\COMMAND"

        'COMMAND'

        /PATH/COMMAND: 给全命令路径

wKiom1eZfE3TfKyJAAAUtzoz5AY381.png-wh_50


cp:复制文件和目录

    cp [OPTION]... [-T] SOURCE DEST

    cp [OPTION]... SOURCE... DIRECTORY

    cp [OPTION]... -t DIRECTORY SOURCE...

    cp SRC DEST

    单源复制:cp [OPTION]... [-T] SOURCE DEST

        如果目标不存在:新建DEST,并将SRC中内容填充至DEST中

        如果目标存在:

            如果DEST是文件:将SRC中的内容覆盖至DEST中

    如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填充至新文件中

    多源复制:cp [OPTION]... SOURCE... DIRECTORY

              cp [OPTION]... -t DIRECTORY SOURCE...

        如果目标不存在:报错

        如果目标存在:

    如果DEST非目录:报错

    如果DEST是目录:分别复制每个文件至目标文件中,并保持原名

    源为目录:(必须使用-r选项)

    如果目标不存在:新建DEST目录,并将SRC中内容填充至DEST中,保持原名

    如果目标存在:

                如果DEST非目录:报错

                如果DEST是目录:在DEST下新建与原目录同名的目录,并把数据复制到新的同名目录下

wKiom1eZjVfDdIs8AAAuOy3gUtg684.png-wh_50

    cp 常用选项

        -i:交互式

        -r, -R: 递归复制目录及内部的所有内容;

        -a: 归档(相当于备份),相当于-dR --preserv=all

        -d:--no-dereference --preserv=links 不复制链接指向的文件内容,只复制链接

        --preserv[=ATTR_LIST]

            ATTR_LIST(属性):

            mode: 权限

            ownership: 属主属组

            timestamp: 时间戳

            links:链接

            xattr:扩展属性

            context:安全标签

            all:上述所以属性

        -p: 等同--preserv=mode,ownership,timestamp

        -v: --verbose 

        -f: --force 强制覆盖

练习:

1 、使用别名命令,每日将/etc/ 目录下所有文件,备份到/testdir/ 下独立的新目录下,并要求新目录为 格式为 backupYYYY-mm-dd  ,备份过程可见

[root@CentOS6 ~]# alias cpetc='cp -rv /etc/ /testdir/backup$(date +%F)'

[root@CentOS6 ~]# cpetc

wKioL1eZkonhZzGAAAA6xZJwfms185.png-wh_50

2 、先创建/testdir/rootdir 目录,再复制/root 所有下文件到该目录内,并要求保留原有权限

[root@CentOS6 ~]# cp -r /root/ /testdir/rootdir

wKioL1eZkl7RfmyVAABIo49MhQ4096.png-wh_50

mv:移动和重命名文件

    mv [OPTION]... [-T] SOURCE DEST

    mv [OPTION]... SOURCE... DIRECTORY

    mv [OPTION]... -t DIRECTORY SOURCE...

    常用选项:

        -i: 交互式

        -f: 强制覆盖

    用法同cp指令


rm:删除

rm [OPTION]... FILE...

        -i:  交互式

        -f:  强制删除

        -r:  递归

[root@CentOS6 ~]# rm -rf / 删除根和下所有文件,centos6,7默认不允许执行该命令

[root@CentOS6 ~]# rm -rf /* 删除根下所有文件,该命令可以执行,请勿轻易尝试


dd if=/dev/zero of=/boot/f1 bs=1M count=40

    从/dev/zero 设备读取数据传送到/boot/f1文件中,一次读1M,共读40次

    在释放磁盘空间的时候如果有用户在打开f1文件,则有可能删除f1文件失败,磁盘不能释放磁盘空间

    释放磁盘空间的方法:

        #> /dir/file  先用重定向把文件清零

        #rm -rf /dir/file 在用rm指令删除命令


tree:显示目录树

    -d: 只显示目录

    -L level:指定显示的层级数目,1只显示1层,3只显示3层

    -P pattern: 只显示由指定pattern匹配到的路径

wKioL1eZkwXRywx_AAAtdW9vxnE143.png-wh_50


mkdir:创建目录

    -p: 若创建目录的路径上有不存的目录则不报错,且可自动创建所有不存在的目录;

    -v: 显示创建过程的详细信息

    -m MODE: 创建目录时直接指定权限;

(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}

wKiom1eZlF7SZ7McAABE-lyphHs234.png-wh_50

(2)  如何创建/testdir/dir2/x, /testdir/dir2/y,

            /testdir/dir2/x/a, /testdir/dir2/x/b

#mkdir -pv /testdir/dir2/{x/{a,b},y}

wKiom1eZlG6CO3muAAA6pRZQLAs573.png-wh_50

(3)  如何创建/testdir/dir3, /testdir/dir4, /testdir/dir5,

            /testdir/dir5/dir3, /testdir/dir5/dir4

#mkdir -pv /testdir/dir{3,4,5/dir{3,4}}

wKiom1eZlIGzJcHnAABLH2YcSc0221.png-wh_50


rmdir:删除空目录

    -p: 递归删除目录,删除当前目录后若父目录为空目录则一并删除,删除父目录后,父目录的父目录不是空目录,则不删除,否则一并删除

    -v: 显示详细信息