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中对目录和文件管理所使用的命令)