文件通配符
绝对路径与相对路径
发邮件
file
tree
文件通配符
用途说明
文件通配符是一种简洁高效的语句,主要用来精确搜索或模糊搜索文件。其用一个或多个特殊的字符来实现对真正字符的替换,从而完成相关的任务。
在Linux中,主要有以下文件通配符:
* 匹配零个或多个字符 ? 匹配任意单个字符 ~ 当前用户家目录 ~username 用户家目录 [0-9] 匹配一个数字范围 [a-z] 大写与小写字母 [A-Z] 大写字母 [ ] 匹配列表中的任意一个字符 [^ ] 对列表中的字符取反 预定义字符类: [:digit:] 任意数字,相当于 0-9 [:lower:] 任意小写字母 [:upper:] 任意大写字母 [:alpha:] 任意大小写字母 [:alnum:] 任意数字或字母 [:space:] 空格 [:punct:] 标点符号
使用示例
练习环境为CentOS 6.8
1、显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录 2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录 3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录 4、显示/etc目录下所有以m开头以非数字结尾的文件或目录 5、显示/etc目录下,所有以.d结尾的文件或目录 6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
[root@centos6 var]# ls -d l*[0-9]*[[:lower:]] l4e [root@centos6 var]# [root@centos6 etc]# ls -d [^[:alpha:]]*[^0-9] 33a [root@centos6 etc]# [root@centos6 etc]# ls -d [[:digit:]]*[0-9] 5ea23 [root@centos6 etc]# [root@centos6 etc]# ls -d m*[^0-9] magic mail.rc man.config mime.types modprobe.d mtab my.cnfmailcap makedev.d maven mke2fs.conf motd mtools.conf[root@centos6 etc]# # 注:这个方法无法显示出文件名为 m 的情况 [root@centos6 etc]# ls -d [mnrp]*.conf mke2fs.conf ntp.conf prelink.conf resolv.confmtools.conf pbm2ppa.conf readahead.conf rsyslog.confnfsmount.conf pm-utils-hd-apm-restore.conf reader.confnsswitch.conf pnm2ppa.conf request-key.conf[root@centos6 etc]#
绝对路径与相对路径
在Linux中,绝对路径是以 / (根目录) 开始的,换言之,如果一个路径是以 / 开始的,那么它一定就是绝对路径;其有如下特点:
- 以正斜杠开始- 完整的文件路径- 可用于任何可指定一个文件名的时候
相对路径是以 . 或 .. 开始的,其中,. 表示用户当前操作所处的位置, 而 .. 表示上级目录;其有如下特点:
- 不以斜线开始- 指定相对于当前工作目录或某目录的位置- 可以作为一个简短的形式指定一个文件名
使用示例
[root@centos6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 HWADDR=00:0C:29:89:BC:21 TYPE=Ethernet UUID=76d50032-414a-4512-9f19-7d93af6bc0c4 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=dhcp [root@centos6 ~]# [root@centos6 ~]# cd /usr/local [root@centos6 local]# cd .. [root@centos6 usr]# cd local/ [root@centos6 local]# cd ../.. [root@centos6 /]#
发个简单邮件
用途说明
mail命令是电子邮件的发送与接收工具,本次发送邮件我们仅使用 -s 这一个参数,[-s subject] ,即主题。场景:在CentOS 6.8上面用 root 用户给普通用户 liansir 发个简单邮件。
直接发送
[root@centos6 ~]# mail -s "Hello lian sir" liansir # 给liansir发送邮件 Hi,I‘m root I want you . EOT [root@centos6 ~]# 输入第一行命令后回车,即可编写邮件正文,输入 . 表示结束,再次回车便退出编辑; 或者直接按 Ctrl+d 结束编辑,完成邮件的发送。 [liansir@centos6 ~]$ mail # liansir接收邮件 Heirloom Mail version 12.4 7/29/08. Type ? for help."/var/spool/mail/liansir": 1 message 1 new >N 1 root Thu Jul 28 20:47 19/598 "Hello lian sir"& Message 1: From root@centos6.liansir Thu Jul 28 20:47:35 2016Return-Path: <root@centos6.liansir> X-Original-To: liansir Delivered-To: liansir@centos6.liansir Date: Thu, 28 Jul 2016 20:47:35 +0800 To: liansir@centos6.liansir Subject: Hello lian sir User-Agent: Heirloom mailx 12.4 7/29/08 Content-Type: text/plain; charset=us-ascii From: root@centos6.liansir (root) Status: RHi,I‘m root I want you & qHeld 1 message in /var/spool/mail/liansir You have mail in /var/spool/mail/liansir [liansir@centos6 ~]$
使用管道进行邮件发送
[root@centos6 ~]# echo "Hi,I‘m root,I want you" |mail -s "haha" liansir [root@centos6 ~]#
echo 的是邮件的正文,管道后面输入 mail 命令即可完成邮件的发送,另外,在echo 正文结束时,不要使用! 结尾,否则会报错。另外,单引号也不太好使。
[root@centos6 ~]# echo "Hi,I‘m root,I want you!" |mail -s "haha" liansir -bash: !": event not found [root@centos6 ~]# 可如此解决: [root@centos6 ~]# echo "Hi,I‘m $(whoami),I want you"‘!‘ | mail -s "haha" liansir [root@centos6 ~]#
使用输入重定向发送邮件
此种方式可提前写好邮件正文,然后直接使用输入重定向的方式发送文件。
[root@centos6 ~]# mail -s "laiba" liansir < sir.mail [root@centos6 ~]# [liansir@centos6 ~]$ mail Message 16: From root@centos6.liansir Thu Jul 28 22:26:52 2016Return-Path: <root@centos6.liansir> X-Original-To: liansir Delivered-To: liansir@centos6.liansir Date: Thu, 28 Jul 2016 22:26:52 +0800To: liansir@centos6.liansir Subject: laiba User-Agent: Heirloom mailx 12.4 7/29/08Content-Type: text/plain; charset=us-ascii From: root@centos6.liansir (root) Status: R xixi, we will be friends! & At EOF & q Held 16 messages in /var/spool/mail/liansir [liansir@centos6 ~]$
file
用途说明
判断文件类型
file - determine file type, file命令用来检查文件的类型。
常用参数
-b: 列出辨识结果时,不显示文件名称
-c: 详细显示指令执行过程
-f: 列出文件中文件名的文件类型
-F: 使用指定分隔符号替换输出文件名后默认的":"分隔符
-i: 输出mime类型的字符串
-L: 查看对应软链接对应文件的文件类型
-z: 尝试去解读压缩文件的内容
--help: 显示命令在线帮助
-v: 显示版本信息
使用示例
1、显示文件类型
[root@centos6 ~]# file /etc/issue /etc/issue: ASCII text [root@centos6 ~]# file -b /etc/issue # 不显示文件名称 ASCII text [root@centos6 ~]# file install.loginstall.log: ASCII text [root@centos6 ~]# file -i install.log install.log: text/plain; charset=us-ascii # 显示MIME类别 [root@centos6 ~]#
2、显示符号链接的文件类型
[root@centos6 ~]# ls -l /usr/tmp lrwxrwxrwx. 1 root root 10 Jul 20 16:56 /usr/tmp -> ../var/tmp [root@centos6 ~]# ls -l /var/mail lrwxrwxrwx. 1 root root 10 Jul 20 16:56 /var/mail -> spool/mail [root@centos6 ~]# [root@centos6 ~]# file /usr/tmp /usr/tmp: symbolic link to `../var/tmp‘ [root@centos6 ~]# file /var/mail /var/mail: symbolic link to `spool/mail‘ [root@centos6 ~]# [root@centos6 ~]# file -Lb /usr/tmp sticky directory # 显示出/var/tmp的文件类型 [root@centos6 ~]# file -Lb /var/mail directory # 显示出/var/spool/mail的文件类型 [root@centos6 ~]# [root@centos6 ~]# file /etc/passwd /etc/passwd: ASCII text [root@centos6 ~]# file -F"#" /etc/passwd /etc/passwd# ASCII text # 所显示文件名后的字符串:变成了# [root@centos6 ~]# file -v file-5.04magic file from /etc/magic:/usr/share/misc/magic [root@centos6 ~]#
3、批量判断文件类型
[root@centos6 ~]# file -f filetype/etc/issue: ASCII text /dev/null: character special /dev/zero: character special /testdir: directory [root@centos6 ~]# cat filetype/etc/issue /dev/null/dev/zero /testdir [root@centos6 ~]#
tree
用途说明
以树状图列出目录的结构
tree - list contents of directories in a tree-like format.
常用参数
-d: 只显示目录
-L level: 指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
-l: 如遇到符号链接目录则列出其指向的原始目录
-p: 列出权限标识
-s: 列出文件和目录大小
-t: 用文件和目录的更改时间排序
-u: 列出文件和目录的属主,无对应名称时则显示用户识别码
由于涉及到了目录操作,此处再介绍几个常见的目录操作命令:
mkdir: 创建目录 -p: 自动创建所需的各目录,且如果有目录存在也不报错 -v: 显示详细信息 -m MODE: 创建目录时直接指定权限 rmdir:删除空目录 -p: 递归删除父空目录 -v: 显示详细信息 rm -r:递归删除目录树
注意:在创建文件时,一般情况下要确保新建的目录与其所在目录下的文件没有重名;另外,在创建文件时,可通过创建子目录的方式更加高效地组织文件,采取统一的命名规则,如目录名可大写字母开头,如此,在目录列出中目录名就出现在最前面。
使用示例
1、在/usr/games/目录下创建LOL子目录,且只有root用户才能读写执行,其他用户无权访问
[root@centos6 ~]# mkdir -m 700 /usr/games/LOL [root@centos6 ~]# tree /usr/games//usr/games/ └── LOL1 directory, 0 files [root@centos6 ~]# [root@centos6 ~]# cd /usr/games/ [root@centos6 games]# ls -ltotal 4drwx------. 2 root root 4096 Jul 29 09:53 LOL [root@centos6 games]#
创建如下目录结构
/tmp/newroot ├── bin ├── etc │ └── sysconfig │ └── network-scripts ├── sbin ├── usr │ ├── bin │ ├── lib │ ├── lib64 │ ├── local │ │ ├── bin │ │ ├── etc │ │ ├── lib │ │ └── sbin │ └── sbin └── var ├── cache ├── log └── run
[root@centos6 ~]# mkdir -p /tmp/newroot/{bin,etc/sysconfig/network-scripts,sbin, usr/{bin,sbin,lib64,local/{bin,etc,lib,sbin},sbin},var/{log,bin,run}} [root@centos6 ~]# tree /tmp/newroot/ /tmp/newroot/ ├── bin ├── etc │ └── sysconfig │ └── network-scripts ├── sbin ├── usr │ ├── bin │ ├── lib64 │ ├── local │ │ ├── bin │ │ ├── etc │ │ ├── lib │ │ └── sbin │ └── sbin └── var ├── bin ├── log └── run 18 directories, 0 files [root@centos6 ~]#
3、显示/usr/local下的一级目录的大小、权限,并以更改时间排序
[root@centos6 ~]# tree -L 1 -stp /usr/local/usr/local ├── [drwxr-xr-x 4096] bin ├── [drwxr-xr-x 4096] sbin ├── [drwxr-xr-x 4096] share ├── [drwxr-xr-x 4096] etc ├── [drwxr-xr-x 4096] games ├── [drwxr-xr-x 4096] include ├── [drwxr-xr-x 4096] lib ├── [drwxr-xr-x 4096] lib64 ├── [drwxr-xr-x 4096] libexec └── [drwxr-xr-x 4096] src10 directories, 0 files [root@centos6 ~]#
2016.7.29
本文出自 “止战” 博客,请务必保留此出处http://liansir.blog.51cto.com/9372908/1831617
原文地址:http://liansir.blog.51cto.com/9372908/1831617