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