歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux初體驗(五)

Linux初體驗(五)

日期:2017/3/3 11:05:10   编辑:Linux技術

Linux初體驗(五)

文件通配符絕對路徑與相對路徑

發郵件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 [email protected]  Thu Jul 28 20:47:35 2016Return-Path: <[email protected]>
X-Original-To: liansir
Delivered-To: [email protected]
Date: Thu, 28 Jul 2016 20:47:35 +0800
To: [email protected]
Subject: Hello lian sir
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: [email protected] (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 [email protected]  Thu Jul 28 22:26:52 2016Return-Path: <[email protected]>
X-Original-To: liansir
Delivered-To: [email protected]
Date: Thu, 28 Jul 2016 22:26:52 +0800To: [email protected]
Subject: laiba
User-Agent: Heirloom mailx 12.4 7/29/08Content-Type: text/plain; charset=us-ascii
From: [email protected] (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

本文出自 “止戰-連Sir” 博客,請務必保留此出處http://liansir.blog.51cto.com/9372908/1831617

Copyright © Linux教程網 All Rights Reserved