◆ 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位置,而非列出文件属性;     ◆ 实例之一:             ● [root@magedu ~]# ls -a             ● anaconda-ks.cfg .bash_logout .bashrc .config .dbus fstab fstab.patch .gtkrc-2.0-kde4 .kde .tcshrc .viminfo 公共 (...后面省略)             ● [root@magedu ~]# ls -A             ● anaconda-ks.cfg .bash_logout .bashrc .config .dbus fstab fstab.patch .gtkrc-2.0-kde4 .kde .tcshrc .viminfo 公共 (...后面省略)             ● [root@magedu ~]# ls -lsh             ● 总用量 20K             ● 0 drwxr-xr-x. 2 root root 6 2月 16 18:34 公共             ● ...     ◆ 实例之二:             ● [root@magedu /]# ls -ld             ● dr-xr-xr-x. 17 root root 224 2月 16 18:24 .             ● [root@magedu /]# ls -ld /home             ● drwxr-xr-x. 6 root root 162 3月 2 14:16 /home     ◆ 实例之三:             ● [root@magedu /]# ls             ● bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var             ● [root@magedu /]# ls -r             ● var usr tmp sys srv sbin run root proc opt mnt media lib64 lib home etc dev boot bin     ◆ 实例之四:             ● [root@magedu 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     ◆ 实例之五:             ● [root@magedu 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:如果要切换的目标目录是一个符号的链接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录;     ◆ 实例演示:             ● [root@magedu /]# cd etc/sysconfig/network-scripts/             ● [root@magedu network-scripts]# cd ~             ● [root@magedu ~]# cd -             ● /etc/sysconfig/network-scripts             ● [root@magedu network-scripts]# cd -             ● /root             ● [root@magedu ~]# cd -             ● /etc/sysconfig/network-scripts             ● [root@magedu network-scripts]# cd             ● [root@magedu ~]# cd ~mcafee/             ● [root@magedu 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存在的情况下,会覆盖目录下的原文件 [root@magedu /]# cp -i /etc/hosts /home/ cp:是否覆盖"/home/hosts"?     ◆ 常用参数:             ● -f:强制覆盖目标文件;             ● -d:复制符号链接文件本身,而非指向的源文件             ● -a:复制时,尽可能的保持文件的结构和属性(目录除外)             ● -r:递归复制目录;             ● -i:交换式复制,即覆盖之前提醒用户确认;     ◆ 实例之一:             ● [root@magedu /]# ls -lh /home/hosts             ●  -rw-r--r--. 1 root root 184 3月 6 18:54 /home/hosts             ● [root@magedu /]# \cp -f /etc/hosts /home/             ● (注:此处CP前的"",因cp命令是"cp -i"的别名,所以用\表示不使用别名,使用命令本身)

    ◆ 实例之二:             ● [root@magedu /]# ls -ld /var/log             ● drwxr-xr-x. 18 root root 4096 3月 6 18:44 /var/log             ● [root@magedu /]# cp -r /var/log /tmp             ● [root@magedu /]# ls -ld /tmp/log             ● drwxr-xr-x. 18 root root 4096 3月 6 19:01 /tmp/log     ◆ 实例之三:             ● [root@magedu etc]# ls -lh system-release             ● lrwxrwxrwx. 1 root root 14 2月 16 18:01 system-release -> centos-release             ● [root@magedu etc]# cp -d system-release /home/             ● [root@magedu etc]# cd /home/             ● [root@magedu home]# ls -lh system-release             ● lrwxrwxrwx. 1 root root 14 3月 6 19:03 system-release -> centos-release             ● 如不使用-d选项:             ● [root@magedu etc]# cp system-release /root             ● [root@magedu etc]# cd ~             ● [root@magedu ~]# ls -lh system-release             ● -rw-r--r--. 1 root root 38 3月 6 19:05 system-release     ◆ 实例之四:             ● [root@magedu home]# ls -lh /etc/fstab             ●  -rw-r--r--. 1 root root 562 2月 16 18:01 /etc/fstab             ● [root@magedu home]# cp /etc/fstab ./             ● [root@magedu home]# ls -lh fstab             ●  -rw-r--r--. 1 root root 562 3月 6 19:13 fstab             ● [root@magedu home]# mv fstab fstab1             ● [root@magedu home]# cp -a fstab             ● [root@magedu home]# cp -a /etc/fstab ./             ● [root@magedu 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命令。             ● [root@magedu /]# cp -i /etc/hosts /home/             ● cp:是否覆盖"/home/hosts"?     ◆ 常用参数:             ● -m, --mode=MODE:设定目标文件权限,默认为755;             ● -o,--owner=OWNER:设定目标文件属主             ● -g,--group=GROUP:设定目标文件属组;     ◆ 实例演示:             ● [root@magedu etc]# install -o mcafee -g mcafee my.cnf /home/             ● [root@magedu etc]# ll /home/my.cnf             ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15 /home/my.cnf             ● [root@magedu 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:当文件存在时,覆盖前,为其创建一个备份;     ◆ 实例演示:             ● [root@magedu home]# ll my.cnf             ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15 my.cnf             ● [root@magedu home]# mv my.cnf mcafee/             ● [root@magedu home]# ll mcafee/my.cnf             ● -rwxr-xr-x. 1 mcafee mcafee 570 3月 6 21:15             ● mcafee/my.cnf             ● [root@magedu home]# cp -a /etc/my.cnf ./             ● [root@magedu home]# mv -i my.cnf mcafee/             ● mv:是否覆盖"mcafee/my.cnf"?             ● [root@magedu home]# \mv -f my.cnf mcafee/             ● (注:此处mv前的"",同CP前的"",详见cp命令里的注释)

    ◆ 命令名称:             ● rm     ◆ 语法格式:             ● rm [OPTION]... FILE...     ◆ 命令说明:             ● 删除文件或目录     ◆ 常用参数:             ● -i:删除前提示             ● -v:显示删除过程             ● -f:强制删除             ● -r:递归删除     ◆ 实例演示:             ● [root@magedu cfox]# ll a/b/c/fstab             ● -rw-r--r--. 1 root root 562 3月 6 21:40 a/b/c/fstab             ● [root@magedu cfox]# rm -i a/b/c/fstab             ● rm:是否删除普通文件 "a/b/c/fstab"?^C             ● [root@magedu cfox]# rm -f a/b/c/fstab             ● [root@magedu 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,显示详细过程;     ◆ 实例演示:             ● [root@magedu cfox]# mkdir -pv one/two/three             ● mkdir: 已创建目录 "one"             ● mkdir: 已创建目录 "one/two"             ● mkdir: 已创建目录 "one/two/three"

    ◆ 命令名称:             ● rmdir     ◆ 语法格式:             ● rmdir [OPTION]... DIRECTORY...     ◆ 命令说明:             ● 删除空目录     ◆ 常用参数:             ● -P: 删除某目录后,如果其父目录为空,则一并删除之;             ● -v:verbose,显示详细过程;     ◆ 实例演示:             ● [root@magedu 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]     ◆ 实例之一:             ● [root@magedu cfox]# touch my.txt             ● [root@magedu cfox]# ll my.txt             ● -rw-r--r--. 1 root root 0 3月 6 22:13 my.txt     ◆ 实例之二:             ● [root@magedu cfox]# touch -c one/my.txt             ● [root@magedu cfox]# ls             ● fstab     ◆ 实例之三:             ● [root@magedu 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             ● 创建时间:-             ● [root@magedu cfox]# touch -a passwd             ● [root@magedu cfox]# touch -m passwd             ● [root@magedu 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             ● 创建时间:-     ◆ 实例之四:             ● [root@magedu cfox]# touch -t 201708211314.43 my.txt             ● [root@magedu 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:打印版本信息     ◆ 实例之一:             ● [root@magedu cfox]# file my.txt             ● my.txt: empty             ● [root@magedu cfox]# file my.txt -b             ● empty     ◆ 实例之二:             ● [root@magedu 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!     ◆ 实例之三:             ● [root@magedu cfox]# file -v fstab             ● file-5.11             ● magic file from /etc/magic:/usr/share/misc/magic

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

    ◆ 命令说明:             ● 连接文件,并在标准输出上输出     ◆ 常用参数:             ● -E:打印行结束符             ● -b:给非空白行输出行号             ● -A:显示所有信息     ◆ 实例之一:             ● [root@magedu cfox]# cat my.txt             ● hello~world!             ● [root@magedu cfox]# cat my_1.txt             ● I love linux             ● [root@magedu cfox]# cat my.txt my_1.txt             ● hello~world!             ● I love linux     ◆ 实例之二:             ● [root@magedu cfox]# cat -E my.txt my_1.txt             ● hello~world!$             ● I love linux$             ● 备注:行结束符为$     ◆ 实例之三:             ● [root@magedu cfox]# cat -b -A my.txt             ● 1 hello~world!$             ● $             ● 2 I love linux;$             ● 3 I like kaiyuan;$     ◆ 技巧之一:             ● [root@magedu cfox]# cat << EOF             ● > O my God             ● > EOF             ● O my God     ◆ 技巧之二:             ● [root@magedu cfox]# cat << END >> my.txt             ● > One love, One life;             ● > END             ● [root@magedu 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) 作为 分隔单元     ◆ 实例演示:             ● [root@magedu cfox]# tac my.txt             ● One love, One life;             ● hello~world!             ● I like kaiyuan;             ● [root@magedu 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 #:可简写为-#,此处#表示显示的行数;     ◆ 实例演示:             ● [root@magedu cfox]# head -3 my.txt             ● hello~world!             ● I love linux;

    ◆ 命令名称:             ● tail     ◆ 语法格式:             ● tail [options] FILE     ◆ 命令说明:             ● 输出文件末尾部分(默认输出末10行)     ◆ 常用参数:             ● -n #:可简写为-#,此处#表示显示的行数;             ● -f:当文件增加时,输出后续添加的内容     ◆ 实例之一:             ● [root@magedu cfox]# more my.txt             ● hello~world!             ●              ● I love linux;             ● I like kaiyuan;             ● One love, One life;             ● [root@magedu cfox]# ail -2 my.txt             ● I like kaiyuan;             ● One love, One life;     ◆ 实例之二:             ● (终端一)ⅰ:[root@magedu cfox]# more my.txt             ● hello~world!             ●              ● I love linux;             ● I like kaiyuan;             ● One love, One life;             ● (终端二)ⅱ:[root@magedu cfox]# echo "Command learning" >> my.txt             ● (终端一)ⅲ:[root@magedu 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:只查找帮助文件;     ◆ 实例之一:             ● [root@magedu ~]# whereis cd             ● cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz     ◆ 实例之二:             ● [root@magedu ~]# whereis -b cd             ● cd: /usr/bin/cd     ◆ 实例之三:             ● [root@magedu ~]# whereis -m cd             ● cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz

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

    ◆ 命令名称:             ● who     ◆ 语法格式:             ● who [OPTION]... [ FILE | ARG1 ARG2 ]     ◆ 命令说明:             ● 显示已登录用户     ◆ 常用参数:             ● -H 显示栏目行             ● -m:仅显示和stdin关联的主机名和用户             ● -q:显示全部的登录名和登录数             ● -T:用户+,-或?表示用户的消息(message状态)             ● --message:同-T     ◆ 实例之一:             ● [root@magedu ~]# 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)     ◆ 实例之二:             ● [root@magedu ~]# 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)     ◆ 实例之三:             ● [root@magedu ~]# who -m             ● root pts/0 2018-03-10 16:33 (10.10.10.1)     ◆ 实例之四:             ● [root@magedu ~]# who -q             ● root root             ● # 用户数=2     ◆ 实例之五:             ● [root@magedu ~]# 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)     ◆ 实例之六:             ● [root@magedu ~]# 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 时间;     ◆ 实例之一:             ● [root@magedu ~]# w             ● 17:52:19 up 1:21, 2 users, load average: 0.00, 0.01, 0.05             ● USER TTY FROM LOGIN@ 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     ◆ 实例之二:             ● [root@magedu ~]# 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     ◆ 实例之三:             ● [root@magedu ~]# w -u             ● 17:55:22 up 1:24, 2 users, load average: 0.00, 0.01, 0.05             ● USER TTY FROM LOGIN@ 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     ◆ 实例之四:             ● [root@magedu ~]# 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     ◆ 实例演示:             ● [root@magedu ~]# whoami             ● root             ● [root@magedu ~]# id -un             ● root     ◆ 注明:whatis、who、w、whoami非文件管理类命令,但用的少,特写在博客里,方便查询。

二、BASH特性之状态返回值

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

三、BASH特性之命令行展开

    ◆ ~:自动展开为用户的家目录,或指定用户的家目录;cd ~     ◆ {}:可以承载一个以逗号分隔的路径列表,并能够将其展开为多个路径;     ◆ 举例说明:             ● [root@magedu home]# mv {file1.txt,fstab1} bin     ◆ 习题演示:             ● 请使用命令行展开功能完成以下练习:     ◆ 练习题①:             ● 创建/tmp目录下的:a_c,a_d,b_c,bd     ◆ 习题解答:             ● [root@magedu 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     ◆ 习题解答:             ● [root@magedu /]#             ● 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’     ◆ 举例说明:             ● [root@magedu bin]# alias ifconfig='ifconfig | grep inet | head -1'             ● [root@magedu bin]# ifconfig             ● inet 10.10.10.152 netmask 255.255.255.0 broadcast 10.10.10.255             ● 命令引用:使用反引号` `     ◆ 举例说明:             ● [root@magedu home]# tar -jcvf bin_date +%F.tar.bz2 bin             ● root@magedu 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开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。     ◆ 习题解答:             ● [root@magedu var]# ls -d /var/1[0-9]?*[[:lower:]]             ● /var/12a.txt /var/15Fl /var/15xb     ◆ 练习题⑥:             ● 显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。     ◆ 习题解答:             ● [root@magedu etc]#ls -d /etc/[0-9]*[^0-9]             ● /etc/5abc OR:             ● [root@magedu etc]# ls -d /etc/[0-9]*[^[:digit:]]             ● /etc/5abc     ◆ 练习题⑦:             ● 显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。     ◆ 习题解答:             ● [root@magedu etc]# ls -d /etc/[^[:alpha:]][[:alpha:]]*             ● /etc/5a6c /etc/5abc     ◆ 练习题⑧:             ● 在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。     ◆ 习题解答:             ● [root@magedu /]# mkdir /tmp/tfile-date +"%F-%H-%M-%S"`             ● [root@magedu /]# 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目录中。     ◆ 习题解答:             ● [root@magedu tmp]# mkdir mytest1             ● [root@magedu tmp]# cd /             ● [root@magedu /]# cp -r /etc/p[^0-9] /tmp/mytest1             ● [root@magedu /]# 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目录中。     ◆ 习题解答:             ● [root@magedu /]# mkdir -pv /tmp/mytest2             ● mkdir: 已创建目录 "/tmp/mytest2"             ● [root@magedu /]# cp -r /etc/*.d /tmp/mytest2             ● [root@magedu /]# 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目录中。     ◆ 习题解答:             ● [root@magedu /]# mkdir -pv /tmp/mytest3             ● mkdir: 已创建目录 "/tmp/mytest3"             ● [root@magedu /]# cp -r /etc/[1mn]*.conf /tmp/mytest3             ● [root@magedu /]# 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

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