Linux文件管理命令详解及练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux文件管理命令详解及练习相关的知识,希望对你有一定的参考价值。

    ◆ Windows里对于文件的管理比较直观,但Linux呢?
    ◆ 如何在Linux系统里创建、复制、移动、删除文件与目录呢?
    ◆ 这其实是个问题,但随着学习的进行,这将不再是个问题;

一:文件管理类命令名称

    ◆ 命令归纳
            1、创建文件: touch
            2、查看文件属性:ls
            3、查看文件内容:cat、tac、more、less、head、tail
            4、复制文件、目录:cp、install
            5、移动、重命名文件:mv
            6、删除文件、目录:rm
            7、创建空目录:mkdir
            8、删除空目录:rmdir
            9、路径切换:cd
            10、确定文件类型:file
            11、查文件的元数据:stat

    ◆ 命令详解

    ◆ 命令名称:
            ● ls
    ◆ 语法格式:
            ● ls [OPTION] [FILES]...
    ◆ 命令说明:
            ● 列出文件和目录
    ◆ 常用参数:
            ● -a:显示所有文件,包括隐藏文件
            ● -A:显示除.和..之外的所有文件
            ● -l: = - -long;显示详细属性信息
            ● -s:在每个文件名的左侧输入该文件的大小,以1024字节的块为单位;
            ● -h:对文件大小进行单位换算,但换算后的值可能会丢失精度;
            ● -r:逆序显示
            ● -d:查看目录自身而非内部的文件列表(一般与-l同时使用)
            ● -R:递归显示,(连同子目录一同显示)
            ● -i:列出文件的inode位置,而非列出文件属性;
    ◆ 实例之一:
            ● [[email protected] ~]# ls -a
            ● anaconda-ks.cfg .bash_logout .bashrc .config .dbus fstab fstab.patch .gtkrc-2.0-kde4 .kde .tcshrc .viminfo 公共 (...后面省略)
            ● [[email protected] ~]# ls -A
            ● anaconda-ks.cfg .bash_logout .bashrc .config .dbus fstab fstab.patch .gtkrc-2.0-kde4 .kde .tcshrc .viminfo 公共 (...后面省略)
            ● [[email protected] ~]# ls -lsh
            ● 总用量 20K
            ● 0 drwxr-xr-x. 2 root root 6 2月 16 18:34 公共
            ● ...
    ◆ 实例之二:
            ● [[email protected] /]# ls -ld
            ● dr-xr-xr-x. 17 root root 224 2月 16 18:24 .
            ● [[email protected] /]# ls -ld /home
            ● drwxr-xr-x. 6 root root 162 3月 2 14:16 /home
    ◆ 实例之三:
            ● [[email protected] /]# ls
            ● bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
            ● [[email protected] /]# ls -r
            ● var usr tmp sys srv sbin run root proc opt mnt media lib64 lib home etc dev boot bin
    ◆ 实例之四:
            ● [[email protected] home]# ls -R
            ● .:
            ● ab bin cfox _exit.2 file1.txt file2.txt fstab_bak m mcafee passwd
            ● ./bin:
            ● grep.sh
            ● ./cfox:
            ● ./m:
            ● fstab passwd
            ● ./mcafee:
            ● inittab
    ◆ 实例之五:
            ● [[email protected] home]# ls -i
            ● 76 ab 79 bin 67 cfox 69 _exit.2 75 file1.txt 78 file2.txt 239 fstab_bak 70 m 201326667 mcafee 238 passwd

    ◆ 命令名称:
            ● cd
    ◆ 语法格式:
            ● cd [/PATH/TO/SOMEDIR]
    ◆ 命令说明:
            ● 路径切换命令,表示可以在不同目录(dirName)之间来回切换;
            ● 可以是绝对路径,也可以是相对路径;
            ● 若省略目录名称,则表示切换至用户的家目录(root目录,即login时所在的目录。)
            ● 另:~也表示home directory的意思;.表示当前目录,..表示当前目录的上一级目录;
    ◆ 常用参数:
            ● ~(和无选项):表示切换至自己家目录;
            ● -:当仅使用"-"一个选项,当前工作目录被切换到环境变量"OLDPWD"所表示的目录。
            ● ~USERNAME:切换至指定用户的家目录;
            ● -p:如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录;
            ● -L:如果要切换的目标目录是一个符号的链接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录;
    ◆ 实例演示:
            ● [[email protected] /]# cd etc/sysconfig/network-scripts/
            ● [[email protected] network-scripts]# cd ~
            ● [[email protected] ~]# cd -
            ● /etc/sysconfig/network-scripts
            ● [[email protected] network-scripts]# cd -
            ● /root
            ● [[email protected] ~]# cd -
            ● /etc/sysconfig/network-scripts
            ● [[email protected] network-scripts]# cd
            ● [[email protected] ~]# cd ~mcafee/
            ● [[email protected] mcafee]# pwd
            ● /home/mcafee

    ◆ 命令名称:
            ● cp
    ◆ 语法格式:
            ● cp 源文件(SOURCE) 目标路径/文件(DEST)
    ◆ 命令说明:
            ● 复制文件、目录及目录中的文件
            ● 单源复制:
            ● Ⅰ:文件到文件
            ● cp /etc/fstab /home(将etc目录下的fstab文件复制到home目录下;)
            ● cp /etc/passwd /home/passwd_bak(将etc目录下passwd文件复制到home目录下并起名叫passwd_bak)
            ● Ⅱ:目录到目录
            ● cp -r /var/log /tmp(将var目录下的log目录复制到tmp目录下)
            ● cp -r /var/log /tmp/logs(将var目录下的log目录复制到tmp目录下并重命名为logs)
            ● 多源复制:cp -t 目标目录 源文件/目录
            ● Ⅰ:文件到目录 cp /etc/{fstab,passwd} /tmp(将etc下的fstab,passwd文件复制到tmp目录下)
            ● Ⅱ:目录到目录 cp -r /var/{lib,log} /tmp(将var目录下的lib,log目录复制到tmp目录下)
            ● 注意:DEST存在的情况下,会覆盖目录下的原文件
[[email protected] /]# cp -i /etc/hosts /home/
cp:是否覆盖"/home/hosts"?
    ◆ 常用参数:
            ● -f:强制覆盖目标文件;
            ● -d:复制符号链接文件本身,而非指向的源文件
            ● -a:复制时,尽可能的保持文件的结构和属性(目录除外)
            ● -r:递归复制目录;
            ● -i:交换式复制,即覆盖之前提醒用户确认;
    ◆ 实例之一:
            ● [[email protected] /]# ls -lh /home/hosts
            ●  -rw-r--r--. 1 root root 184 3月 6 18:54 /home/hosts
            ● [[email protected] /]# \cp -f /etc/hosts /home/
            ● (注:此处CP前的"\",因cp命令是"cp -i"的别名,所以用\表示不使用别名,使用命令本身)

    ◆ 实例之二:
            ● [[email protected] /]# ls -ld /var/log
            ● drwxr-xr-x. 18 root root 4096 3月 6 18:44 /var/log
            ● [[email protected] /]# cp -r /var/log /tmp
            ● [[email protected] /]# ls -ld /tmp/log
            ● drwxr-xr-x. 18 root root 4096 3月 6 19:01 /tmp/log
    ◆ 实例之三:
            ● [[email protected] etc]# ls -lh system-release
            ● lrwxrwxrwx. 1 root root 14 2月 16 18:01 system-release -> centos-release
            ● [[email protected] etc]# cp -d system-release /home/
            ● [[email protected] etc]# cd /home/
            ● [[email protected] home]# ls -lh system-release
            ● lrwxrwxrwx. 1 root root 14 3月 6 19:03 system-release -> centos-release
            ● 如不使用-d选项:
            ● [[email protected] etc]# cp system-release /root
            ● [[email protected] etc]# cd ~
            ● [[email protected] ~]# ls -lh system-release
            ● -rw-r--r--. 1 root root 38 3月 6 19:05 system-release
    ◆ 实例之四:
            ● [[email protected] home]# ls -lh /etc/fstab
            ●  -rw-r--r--. 1 root root 562 2月 16 18:01 /etc/fstab
            ● [[email protected] home]# cp /etc/fstab ./
            ● [[email protected] home]# ls -lh fstab
            ●  -rw-r--r--. 1 root root 562 3月 6 19:13 fstab
            ● [[email protected] home]# mv fstab fstab1
            ● [[email protected] home]# cp -a fstab
            ● [[email protected] home]# cp -a /etc/fstab ./
            ● [[email protected] home]# ls -lh fstab
            ● -rw-r--r--. 1 root root 562 2月 16 18:01 fstab
            ● (注:使用了-a选项后,连时间戳都没有改变)
            ● --preserv:保持原始文件的所有者,组,时间戳等属性
            ● (注:mode:权限
                 ownership:属主和属组
                 timestamps:时间戳
                 context:安全标签
                 xattr:扩展属性
                 links:符号链接
                 all:上述所有属性)

    ◆ 命令名称:
            ● install
    ◆ 语法格式:
            ● install [选项] 源文件 目标目录/文件
    ◆ 命令说明:
            ● 复制文件并设置属性
            ● 单源复制:
install [OPTION]... [-T] SOURCE DEST
            ● 多源复制:
            ● Ⅰ :install [OPTION]... SOURCE DIRECTORY
            ● Ⅱ:install [OPTION]... -t DIRECTORY SOURCE...
            ● Ⅲ:创建目录:install [OPTION]... -t DIRECTORY...
            ● 注意:此处单源、多源复制的方式类似于CP命令。
            ● [[email protected] /]# cp -i /etc/hosts /home/
            ● cp:是否覆盖"/home/hosts"?
    ◆ 常用参数:
            ● -m, --mode=MODE:设定目标文件权限,默认为755;
            ● -o,--owner=OWNER:设定目标文件属主
            ● -g,--group=GROUP:设定目标文件属组;
    ◆ 实例演示:
            ● [[email protected] etc]# install -o mcafee -g mcafee my.cnf /home/
            ● [[email protected] etc]# ll /home/my.cnf
            ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15 /home/my.cnf
            ● [[email protected] etc]# ll my.cnf
            ● -rw-r--r--. 1 root root 570 6月 8 2017 my.cnf
            ● 备注:/etc/my.cnf权限644
用install复制到/home/my.cnf权限变成了755
这里默认的意思是无需添加-m选项
-m选项表示具体需要设置成某种权限!

    ◆ 命令名称:
            ● mv:
    ◆ 语法格式:
            ● mv [OPTION]... [-T] SOURCE DEST
            ● mv [OPTION]... SOURCE... DIRECTORY
            ● mv [OPTION]... -t DIRECTORY SOURCE..
    ◆ 命令说明:
            ● 移动、重命名文件、目录
    ◆ 常用参数:
            ● -i:覆盖前提示
            ● -f:强制覆盖
            ● -b:当文件存在时,覆盖前,为其创建一个备份;
    ◆ 实例演示:
            ● [[email protected] home]# ll my.cnf
            ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15 my.cnf
            ● [[email protected] home]# mv my.cnf mcafee/
            ● [[email protected] home]# ll mcafee/my.cnf
            ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15
            ● mcafee/my.cnf
            ● [[email protected] home]# cp -a /etc/my.cnf ./
            ● [[email protected] home]# mv -i my.cnf mcafee/
            ● mv:是否覆盖"mcafee/my.cnf"?
            ● [[email protected] home]# \mv -f my.cnf mcafee/
            ● (注:此处mv前的"\",同CP前的"\",详见cp命令里的注释)

    ◆ 命令名称:
            ● rm
    ◆ 语法格式:
            ● rm [OPTION]... FILE...
    ◆ 命令说明:
            ● 删除文件或目录
    ◆ 常用参数:
            ● -i:删除前提示
            ● -v:显示删除过程
            ● -f:强制删除
            ● -r:递归删除
    ◆ 实例演示:
            ● [[email protected] cfox]# ll a/b/c/fstab
            ● -rw-r--r--. 1 root root 562 3月 6 21:40 a/b/c/fstab
            ● [[email protected] cfox]# rm -i a/b/c/fstab
            ● rm:是否删除普通文件 "a/b/c/fstab"?^C
            ● [[email protected] cfox]# rm -f a/b/c/fstab
            ● [[email protected] cfox]# rm -rvf a
            ● 已删除目录:"a/b/c"
            ● 已删除目录:"a/b"
            ● 已删除目录:"a"
            ● 删除目录:rm -rf /PATH/TO/DIR
            ● 提醒,危险操作:rm -rf /(*)
            ● 注意:可模拟Windows上的回收站,建立一个目录,把要删除的文件,移动到此。

    ◆ 命令名称:
            ● mkdir
    ◆ 语法格式:
            ● mkdir [OPTION]... DIRECTORY...
    ◆ 命令说明:
            ● 创建空目录
    ◆ 常用参数:
            ● -p:自动按需创建父目录
            ● -v:verbose,显示详细过程;
    ◆ 实例演示:
            ● [[email protected] cfox]# mkdir -pv one/two/three
            ● mkdir: 已创建目录 "one"
            ● mkdir: 已创建目录 "one/two"
            ● mkdir: 已创建目录 "one/two/three"

    ◆ 命令名称:
            ● rmdir
    ◆ 语法格式:
            ● rmdir [OPTION]... DIRECTORY...
    ◆ 命令说明:
            ● 删除空目录
    ◆ 常用参数:
            ● -P: 删除某目录后,如果其父目录为空,则一并删除之;
            ● -v:verbose,显示详细过程;
    ◆ 实例演示:
            ● [[email protected] cfox]# rmdir -pv one/two/three
            ● rmdir: 正在删除目录 "one/two/three"
            ● rmdir: 正在删除目录 "one/two"
            ● rmdir: 正在删除目录 "one"

    ◆ 命令名称:
            ● touch
    ◆ 语法格式:
            ● touch [OPTION]... FILE...
    ◆ 命令说明:
            ● 修改文件的时间戳
    ◆ 命令说明:
            ● (注:可创建空文件)
    ◆ 常用参数:
            ● -c: 指定的文件路径不存在时不予创建;
            ● -a: 仅修改access time;
            ● -m: 仅修改modify time;
            ● -t STAMP [[CC]YY]MMDDhhmm[.ss]
    ◆ 实例之一:
            ● [[email protected] cfox]# touch my.txt
            ● [[email protected] cfox]# ll my.txt
            ● -rw-r--r--. 1 root root 0 3月 6 22:13 my.txt
    ◆ 实例之二:
            ● [[email protected] cfox]# touch -c one/my.txt
            ● [[email protected] cfox]# ls
            ● fstab
    ◆ 实例之三:
            ● [[email protected] cfox]# stat passwd
            ● 文件:"passwd"
            ● 大小:1859 块:8 IO 块:4096 普通文件
            ● 设备:fd02h/64770d Inode:93 硬链接:1
            ● 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
            ● 环境:system_u:object_r:passwd_file_t:s0
            ● 最近访问:2018-03-06 18:44:12.162999767 +0800
            ● 最近更改:2018-02-26 20:31:02.394595152 +0800
            ● 最近改动:2018-03-06 22:09:11.423495399 +0800
            ● 创建时间:-
            ● [[email protected] cfox]# touch -a passwd
            ● [[email protected] cfox]# touch -m passwd
            ● [[email protected] cfox]# stat passwd
            ● 文件:"passwd"
            ● 大小:1859 块:8 IO 块:4096 普通文件
            ● 设备:fd02h/64770d Inode:93 硬链接:1
            ● 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
            ● 环境:system_u:object_r:passwd_file_t:s0
            ● 最近访问:2018-03-06 22:09:33.559494491 +0800
            ● 最近更改:2018-03-06 22:09:37.792494318 +0800
            ● 最近改动:2018-03-06 22:09:37.792494318 +0800
            ● 创建时间:-
    ◆ 实例之四:
            ● [[email protected] cfox]# touch -t 201708211314.43 my.txt
            ● [[email protected] cfox]# stat my.txt
            ● 文件:"my.txt"
            ● 大小:0 块:0 IO 块:4096 普通空文件
            ● 设备:fd02h/64770d Inode:88 硬链接:1
            ● 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
            ● 环境:unconfined_u:object_r:home_root_t:s0
            ● 最近访问:2017-08-21 13:14:43.000000000 +0800
            ● 最近更改:2017-08-21 13:14:43.000000000 +0800
            ● 最近改动:2018-03-06 22:18:09.858473319 +0800
            ● 创建时间:-
            ● 备注:文件的元数据信息包含了:
            ● 文件大小
            ● 所占用块大小
            ● IO块大小
            ● 文件类型
            ● Inode值
            ● 权限信息
            ● UID
            ● GID
            ● 最近访问时间(atime)
            ● 最近更改时间(mtime)
            ● 最近改动时间(ctime)
            ● 创建时间

    ◆ 命令名称:
            ● stat
    ◆ 语法格式:
            ● stat filename [filenames ... ]
    ◆ 命令说明:
            ● 查看文件元数据信息
    ◆ 实例演示:
            ● 可参考上面touch命令的举例里;

    ◆ 命令名称:
            ● file
    ◆ 语法格式:
            ● file [OPTION]... FILE...
    ◆ 命令说明:
            ● 确定文件类型
    ◆ 常用参数:
            ● -b 不输出文件名
            ● -m:指定魔法数字文件
            ● -v:打印版本信息
    ◆ 实例之一:
            ● [[email protected] cfox]# file my.txt
            ● my.txt: empty
            ● [[email protected] cfox]# file my.txt -b
            ● empty
    ◆ 实例之二:
            ● [[email protected] cfox]# file -m fstab
            ● fstab, 9: Warning: offset /dev/mapper/centos_magedu-root / xfs defaults 0 0‘ invalid
            ● fstab, 9: Warning: type/dev/mapper/centos_magedu-root / xfs defaults 0 0‘ invalid
            ● ...后面省略
            ● file: could not find any magic files!
    ◆ 实例之三:
            ● [[email protected] cfox]# file -v fstab
            ● file-5.11
            ● magic file from /etc/magic:/usr/share/misc/magic

    ◆ 命令名称:
            ● cat
    ◆ 语法格式:
            ● cat [OPTION]... [FILES]...

    ◆ 命令说明:
            ● 连接文件,并在标准输出上输出
    ◆ 常用参数:
            ● -E:打印行结束符
            ● -b:给非空白行输出行号
            ● -A:显示所有信息
    ◆ 实例之一:
            ● [[email protected] cfox]# cat my.txt
            ● hello~world!
            ● [[email protected] cfox]# cat my_1.txt
            ● I love linux
            ● [[email protected] cfox]# cat my.txt my_1.txt
            ● hello~world!
            ● I love linux
    ◆ 实例之二:
            ● [[email protected] cfox]# cat -E my.txt my_1.txt
            ● hello~world!$
            ● I love linux$
            ● 备注:行结束符为$
    ◆ 实例之三:
            ● [[email protected] cfox]# cat -b -A my.txt
            ● 1 hello~world!$
            ● $
            ● 2 I love linux;$
            ● 3 I like kaiyuan;$
    ◆ 技巧之一:
            ● [[email protected] cfox]# cat << EOF
            ● > O my God
            ● > EOF
            ● O my God
    ◆ 技巧之二:
            ● [[email protected] cfox]# cat << END >> my.txt
            ● > One love, One life;
            ● > END
            ● [[email protected] cfox]# cat my.txt
            ● hello~world!
            ● I love linux;
            ● I like kaiyuan;
            ● One love, One life;
    ◆ 详细说明:
            ● 输入信息,当输入EOF时,结束输入,并将输入内容打印在屏幕上;
            ● 输入信息,当输入END时,结束输入,并将输入内容追加输入到my.txt文件中;
            ● 备注:这里的输入结束符EOF/END,可以自己定义,也可定义其它的结束提示符。

    ◆ 命令名称:
            ● tac
    ◆ 语法格式:
            ● ../src/tac [OPTION]... [FILE]...
    ◆ 命令说明:
            ● 输出结果与cat相反
    ◆ 常用参数:
            ● -b:把分隔单元移到前面,而不是后面
            ● -s, --separator=STRING, 用 STRING 取代 换行符(newline) 作为 分隔单元
    ◆ 实例演示:
            ● [[email protected] cfox]# tac my.txt
            ● One love, One life;
            ● hello~world!
            ● I like kaiyuan;
            ● [[email protected] cfox]# cat my.txt
            ● I like kaiyuan;
            ● hello~world!
            ● One love, One life;

    ◆ 命令名称:
            ● more
    ◆ 语法格式:
            ● more FILE
    ◆ 命令说明:
            ● 在显示器上阅读文件的过滤器,分屏查看文件
    ◆ 命令特点:
            ● 翻屏至文件尾部后自动退出;如中途想退出,可按Ctrl+c键

    ◆ 命令名称:
            ● less
    ◆ 语法格式:
            ● less FILE
    ◆ 命令说明:
            ● opposite of more
    ◆ 命令特点:
            ● 翻屏至文件尾部后不退出,退出时需要按q键;
    ◆ 快捷键:
            ● 翻屏:
            ● 空格键: 向文件尾部翻一屏;
            ● b:向文件首部翻一屏;
            ● Ctrl+d:向文件尾部翻半屏;
            ● Ctrl+u:向文件首部翻半屏;
            ● 回车键:向文件尾部翻一行;
            ● k:向文件首部翻一行;
            ● G:跳转至最后一行;
            ● #G:跳转至指定行;
            ● 1G:跳转至文件首部;
            ● 备注:在翻屏上,命令man、more、less的快捷键相同;

    ◆ 命令名称:
            ● head
    ◆ 语法格式:
            ● head [options] FILE
    ◆ 命令说明:
            ● 输出文件开始部分(默认输出头10行)
    ◆ 常用参数:
            ● -n #:可简写为-#,此处#表示显示的行数;
    ◆ 实例演示:
            ● [[email protected] cfox]# head -3 my.txt
            ● hello~world!
            ● I love linux;

    ◆ 命令名称:
            ● tail
    ◆ 语法格式:
            ● tail [options] FILE
    ◆ 命令说明:
            ● 输出文件末尾部分(默认输出末10行)
    ◆ 常用参数:
            ● -n #:可简写为-#,此处#表示显示的行数;
            ● -f:当文件增加时,输出后续添加的内容
    ◆ 实例之一:
            ● [[email protected] cfox]# more my.txt
            ● hello~world!
            ● 
            ● I love linux;
            ● I like kaiyuan;
            ● One love, One life;
            ● [[email protected] cfox]# ail -2 my.txt
            ● I like kaiyuan;
            ● One love, One life;
    ◆ 实例之二:
            ● (终端一)ⅰ:[[email protected] cfox]# more my.txt
            ● hello~world!
            ● 
            ● I love linux;
            ● I like kaiyuan;
            ● One love, One life;
            ● (终端二)ⅱ:[[email protected] cfox]# echo "Command learning" >> my.txt
            ● (终端一)ⅲ:[[email protected] cfox]# tail -f my.txt
            ● hello~world!
            ● 
            ● I love linux;
            ● I like kaiyuan;
            ● One love, One life;
            ● Command learning

    ◆ 命令名称:
            ● whereis
    ◆ 语法格式:
            ● whereis [OPTION] name
    ◆ 命令说明:
            ● 搜索命令所在路径及帮助文档所在位置
    ◆ 常用参数:
            ● -b:只查找可执行文件位置;
            ● -m:只查找帮助文件;
    ◆ 实例之一:
            ● [[email protected] ~]# whereis cd
            ● cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
    ◆ 实例之二:
            ● [[email protected] ~]# whereis -b cd
            ● cd: /usr/bin/cd
    ◆ 实例之三:
            ● [[email protected] ~]# whereis -m cd
            ● cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

    ◆ 命令名称:
            ● whatis
    ◆ 语法格式:
            ● whatis keyword ...
    ◆ 命令说明:
            ● 查询命令的执行功能,并将结果打印至终端
    ◆ 实例演示:
            ● [[email protected] ~]# whatis ls
            ● ls (1) - 列目录内容
            ● ls (1p) - list directory contents

    ◆ 命令名称:
            ● who
    ◆ 语法格式:
            ● who [OPTION]... [ FILE | ARG1 ARG2 ]
    ◆ 命令说明:
            ● 显示已登录用户
    ◆ 常用参数:
            ● -H 显示栏目行
            ● -m:仅显示和stdin关联的主机名和用户
            ● -q:显示全部的登录名和登录数
            ● -T:用户+,-或?表示用户的消息(message状态)
            ● --message:同-T
    ◆ 实例之一:
            ● [[email protected] ~]# who -H
            ● 名称 线路 时间 备注
            ● root pts/0 2018-03-10 16:33 (10.10.10.1)
            ● root pts/1 2018-03-10 16:54 (10.10.10.1)
    ◆ 实例之二:
            ● [[email protected] ~]# who
            ● root pts/0 2018-03-10 16:33 (10.10.10.1)
            ● root pts/1 2018-03-10 16:54 (10.10.10.1)
    ◆ 实例之三:
            ● [[email protected] ~]# who -m
            ● root pts/0 2018-03-10 16:33 (10.10.10.1)
    ◆ 实例之四:
            ● [[email protected] ~]# who -q
            ● root root
            ● # 用户数=2
    ◆ 实例之五:
            ● [[email protected] ~]# who -s
            ● root pts/0 2018-03-10 16:33 (10.10.10.1)
            ● root pts/1 2018-03-10 16:54 (10.10.10.1)
    ◆ 实例之六:
            ● [[email protected] ~]# who -T
            ● root + pts/0 2018-03-10 16:33 (10.10.10.1)
            ● root + pts/1 2018-03-10 16:54 (10.10.10.1)

    ◆ 命令名称:
            ● w
    ◆ 语法格式:
            ● w - [husfV] [user] ARG2 ]
    ◆ 命令说明:
            ● 显示已经登录的用户以及他们在做什么
    ◆ 常用参数:
            ● -h:不显示首行
            ● -u:确定 当前进程 和 CPU 时间 的 时候 忽略 用户名. 要 展示 这个 效果, 执行 "su", 然后 执行 "w" 和 "w -u";
            ● -s:使用 简短格式. 不显示 登录时间, JCPU 或 PCPU 时间;
    ◆ 实例之一:
            ● [[email protected] ~]# w
            ● 17:52:19 up 1:21, 2 users, load average: 0.00, 0.01, 0.05
            ● USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
            ● root pts/0 10.10.10.1 16:33 3.00s 0.17s 0.00s w
            ● root pts/1 10.10.10.1 16:54 27.00s 0.08s 0.00s less -s
    ◆ 实例之二:
            ● [[email protected] ~]# w -h
            ● root pts/0 10.10.10.1 16:33 6.00s 0.17s 0.00s w -h
            ● root pts/1 10.10.10.1 16:54 3:26 0.08s 0.00s less -s
    ◆ 实例之三:
            ● [[email protected] ~]# w -u
            ● 17:55:22 up 1:24, 2 users, load average: 0.00, 0.01, 0.05
            ● USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
            ● root pts/0 10.10.10.1 16:33 2.00s 0.17s 0.00s w -u
            ● root pts/1 10.10.10.1 16:54 3:30 0.08s 0.00s less -s
    ◆ 实例之四:
            ● [[email protected] ~]# w -s
            ● 17:56:28 up 1:25, 2 users, load average: 0.05, 0.03, 0.05
            ● USER TTY FROM IDLE WHAT
            ● root pts/0 10.10.10.1 4.00s w -s
            ● root pts/1 10.10.10.1 4:36 less -s

    ◆ 命令名称:
            ● whoami
    ◆ 命令说明:
            ● 打印当前有效的用户名称,等同于id -un
    ◆ 实例演示:
            ● [[email protected] ~]# whoami
            ● root
            ● [[email protected] ~]# id -un
            ● root
    ◆ 注明:whatis、who、w、whoami非文件管理类命令,但用的少,特写在博客里,方便查询。

二、BASH特性之状态返回值

    ◆ 这里介绍一个特殊的变量,$?,这个变量就是被用来保存上一次命令执行结果是否成功的;
            ● 查询结果:0表示成功
                   1-255表示不成功
    ◆ 举例说明:
            ● [[email protected] home]# cd ~
            ● [[email protected] ~]# echo $?
            ● 0
            ● [[email protected] ~]# cd /home/etc
            ● -bash: cd: /home/etc: 没有那个文件或目录
            ● [[email protected] ~]# !ec
            ● [[email protected] ~]# echo $?
            ● 1

三、BASH特性之命令行展开

    ◆ ~:自动展开为用户的家目录,或指定用户的家目录;cd ~
    ◆ {}:可以承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;
    ◆ 举例说明:
            ● [[email protected] home]# mv {file1.txt,fstab1} bin
    ◆ 习题演示:
            ● 请使用命令行展开功能完成以下练习:
    ◆ 练习题①:
            ● 创建/tmp目录下的:a_c,a_d,b_c,bd
    ◆ 习题解答:
            ● [[email protected] home]# mkdir -pv /tmp/{a,b}{c,d}
            ● mkdir: 已创建目录 "/tmp/a_c"
            ● mkdir: 已创建目录 "/tmp/a_d"
            ● mkdir: 已创建目录 "/tmp/b_c"
            ● mkdir: 已创建目录 "/tmp/b_d"
    ◆ 练习题②:
            ● 创建/tmp/mylinux目录下的:
            ● mylinux/
            ● ├── bin
            ● ├── boot
            ● │?? └── grub
            ● ├── dev
            ● ├── etc
            ● │?? ├── rc.d
            ● │?? │?? └── init.d
            ● │?? └── sysconfig
            ● │?? └── network-scripts
            ● ├── lib
            ● │?? └── modules
            ● ├── lib64
            ● ├── proc
            ● ├── sbin
            ● ├── sys
            ● ├── tmp
            ● ├── usr
            ● │?? └── local
            ● │?? ├── bin
            ● │?? └── sbin
            ● └── var
            ● ├── lock
            ● ├── log
            ● └── run
    ◆ 习题解答:
            ● [[email protected] /]#
            ● mkdir -pv
            ● /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,sysconfig/network- scripts},lib/modules,lib64,proc,sbin,sys,tmp,usr/local/{bin,sbin},var/{lock,log,run}}
            ● mkdir: 已创建目录 "/tmp/mylinux"
            ● mkdir: 已创建目录 "/tmp/mylinux/bin"
            ● mkdir: 已创建目录 "/tmp/mylinux/boot"
            ● mkdir: 已创建目录 "/tmp/mylinux/boot/grub"
            ● mkdir: 已创建目录 "/tmp/mylinux/dev"
            ● mkdir: 已创建目录 "/tmp/mylinux/etc"
            ● mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d"
            ● mkdir: 已创建目录 "/tmp/mylinux/etc/rc.d/init.d"
            ● mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig"
            ● mkdir: 已创建目录 "/tmp/mylinux/etc/sysconfig/network-scripts"
            ● mkdir: 已创建目录 "/tmp/mylinux/lib"
            ● mkdir: 已创建目录 "/tmp/mylinux/lib/modules"
            ● mkdir: 已创建目录 "/tmp/mylinux/lib64"
            ● mkdir: 已创建目录 "/tmp/mylinux/proc"
            ● mkdir: 已创建目录 "/tmp/mylinux/sbin"
            ● mkdir: 已创建目录 "/tmp/mylinux/sys"
            ● mkdir: 已创建目录 "/tmp/mylinux/tmp"
            ● mkdir: 已创建目录 "/tmp/mylinux/usr"
            ● mkdir: 已创建目录 "/tmp/mylinux/usr/local"
            ● mkdir: 已创建目录 "/tmp/mylinux/usr/local/bin"
            ● mkdir: 已创建目录 "/tmp/mylinux/usr/local/sbin"
            ● mkdir: 已创建目录 "/tmp/mylinux/var"
            ● mkdir: 已创建目录 "/tmp/mylinux/var/lock"
            ● mkdir: 已创建目录 "/tmp/mylinux/var/log"
            ● mkdir: 已创建目录 "/tmp/mylinux/var/run"
    ◆ 练习题③:
            ● 文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    ◆ 习题解答:
            ● (参考上面touch、stat命令详解)
    ◆ 练习题④:
            ● 如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    ◆ 习题解答:
            ● 命令别名的定义:
            ● alias
    ◆ 使用方法:
            ● alias NAME=‘COMMAND’
    ◆ 举例说明:
            ● [[email protected] bin]# alias ifconfig=‘ifconfig | grep inet | head -1‘
            ● [[email protected] bin]# ifconfig
            ● inet 10.10.10.152 netmask 255.255.255.0 broadcast 10.10.10.255
            ● 命令引用:使用反引号` `
    ◆ 举例说明:
            ● [[email protected] home]# tar -jcvf bin_date +%F.tar.bz2 bin
            ● [email protected] home]# ls -ldh bin*
            ● drwxr-xr-x. 2 root root 101 3月 20 14:03 bin
            ● -rw-r--r--. 1 root root 3.2K 3月 20 14:48 bin_2018-03-20.tar.bz2
            ● 说明:此例表示把date +%F的执行结果引用至生成带时间戳的压缩文件;
    ◆ 练习题⑤:
            ● 显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
    ◆ 习题解答:
            ● [[email protected] var]# ls -d /var/1[0-9]?*[[:lower:]]
            ● /var/12a.txt /var/15Fl /var/15xb
    ◆ 练习题⑥:
            ● 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    ◆ 习题解答:
            ● [[email protected] etc]#ls -d /etc/[0-9]*[^0-9]
            ● /etc/5abc
OR:
            ● [[email protected] etc]# ls -d /etc/[0-9]*[^[:digit:]]
            ● /etc/5abc
    ◆ 练习题⑦:
            ● 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。
    ◆ 习题解答:
            ● [[email protected] etc]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
            ● /etc/5a6c
/etc/5abc
    ◆ 练习题⑧:
            ● 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
    ◆ 习题解答:
            ● [[email protected] /]# mkdir /tmp/tfile-date +"%F-%H-%M-%S"`
            ● [[email protected] /]# ls -ld /tmp/t*
            ● drwxr-xr-x. 2 root root 6 3月 20 15:29 /tmp/tfile-2018-03-20-15-29-42
    ◆ 练习题⑨:
            ● 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    ◆ 习题解答:
            ● [[email protected] tmp]# mkdir mytest1
            ● [[email protected] tmp]# cd /
            ● [[email protected] /]# cp -r /etc/p[^0-9] /tmp/mytest1
            ● [[email protected] /]# ls -lh /tmp/mytest1/
            ● 总用量 48K
            ● drwxr-xr-x. 2 root root 4.0K 3月 20 15:33 pam.d
            ● -rw-r--r--. 1 root root 1.9K 3月 20 15:33 passwd
            ● -rw-r--r--. 1 root root 1.9K 3月 20 15:33 passwd-
            ● -rw-r--r--. 1 root root 1.4K 3月 20 15:33 pbm2ppa.conf
            ● -rw-r--r--. 1 root root 2.9K 3月 20 15:33 pinforc
            ● drwxr-xr-x. 10 root root 116 3月 20 15:33 pki
            ● drwxr-xr-x. 2 root root 28 3月 20 15:33 plymouth
            ● .....中间省略
            ● drwxr-xr-x. 5 root root 52 3月 20 15:33 pm
    ◆ 练习题⑩:
            ● 复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
    ◆ 习题解答:
            ● [[email protected] /]# mkdir -pv /tmp/mytest2
            ● mkdir: 已创建目录 "/tmp/mytest2"
            ● [[email protected] /]# cp -r /etc/*.d /tmp/mytest2
            ● [[email protected] /]# ls -lh /tmp/mytest2
            ● 总用量 16K
            ● drwxr-xr-x. 2 root root 6 3月 20 15:38 auto.master.d
            ● drwxr-xr-x. 2 root root 4.0K 3月 20 15:38 bash_completion.d
            ● drwxr-xr-x. 2 root root 6 3月 20 15:38 binfmt.d
            ● drwxr-xr-x. 2 root root 6 3月 20 15:38 cgconfig.d
            ● .....中间省略
            ● drwxr-xr-x. 2 root root 6 3月 20 15:38 chkconfig.d
    ◆ 练习题?:
            ● 复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
    ◆ 习题解答:
            ● [[email protected] /]# mkdir -pv /tmp/mytest3
            ● mkdir: 已创建目录 "/tmp/mytest3"
            ● [[email protected] /]# cp -r /etc/[1mn]*.conf /tmp/mytest3
            ● [[email protected] /]# ls -lh /tmp/mytest3
            ● 总用量 28K
            ● -rw-r--r--. 1 root root 5.1K 3月 20 15:42 man_db.conf
            ● -rw-r--r--. 1 root root 936 3月 20 15:42 mke2fs.conf
            ● -rw-r--r--. 1 root root 955 3月 20 15:42 nfs.conf
            ● -rw-r--r--. 1 root root 3.4K 3月 20 15:42 nfsmount.conf
            ● -rw-r--r--. 1 root root 1.8K 3月 20 15:42 nsswitch.conf
            ● -rw-r--r--. 1 root root 2.0K 3月 20 15:42 ntp.conf

    ◆ 后续:
            ● 学习过程虽然循序渐进,但总结及练习不可或缺;
            ● 不能只相信记忆,好记性不如多练习;
            ● 这样在真正使用的时候方可驾轻就熟。

以上是关于Linux文件管理命令详解及练习的主要内容,如果未能解决你的问题,请参考以下文章

Linux基本命令详解《二》(Linux中对目录和文件管理所使用的命令)

Linux文件管理类命令详解

[鸟哥linux视频教程整理]03_02_Linux文件管理类命令及bash特性详解

linux练习:用户组管理及权限管理

CentOS Linux 6版本系统命令及其使用详解

linux文件管理及用户管理练习