馬哥教育網絡班20期+第2周課程練習

1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。

touch:
	創建一個文件,修改一個文件時間
	- 格式:touch [OPTION]... FILE...
	- 常用選項
		-a 只更改文件最近的訪問時間
		-m 只更改文件最近的修改時間
		-t 指定時間 格式 [[CC]YY]MMDDhhmm[.ss]

	# touch abc
	# stat abc 
		Access: 2016-06-16 21:06:56.095545727 +0800
		Modify: 2016-06-16 21:06:56.095545727 +0800
		Change: 2016-06-16 21:06:56.095545727 +0800

	# touch -a -t 05152320 abc
	# stat abc
		Access: 2016-05-15 23:20:00.000000000 +0800
		Modify: 2016-06-16 21:06:56.095545727 +0800
		Change: 2016-06-16 21:07:34.871546823 +0800

	# touch -m -t 201405152320 abc
	# stat abc
		Access: 2016-05-15 23:20:00.000000000 +0800
		Modify: 2014-05-15 23:20:00.000000000 +0800
		Change: 2016-06-16 21:07:56.911547446 +0800

mkdir:
	創建文件夾
	- 格式:mkdir [OPTION]... DIRECTORY...
	- 常用選項
		-m 指定權限
		-p 多級創建
		-v 顯示過程

	[root@c7-1 command]# mkdir -pv a/b/c
	mkdir: created directory ‘a’
	mkdir: created directory ‘a/b’
	mkdir: created directory ‘a/b/c’

	創建多級目錄時 指定權限 會在最后一層目錄生效
	[root@c7-1 command]# mkdir -pv -m 0777 d/e/f
	mkdir: created directory ‘d’
	mkdir: created directory ‘d/e’
	mkdir: created directory ‘d/e/f’

unlink:
	刪除一個文件
	- 格式: unlink FILE
	# unlink /home/huazi/.bashrc

cp:
        復制文件或目錄
	cp [OPTION]... FILE...
	- 常用選項
		-a 相當于-dpR 保留鏈接,文件屬性,并遞歸地拷貝目錄。
		-d 保留文件的連接數
		-p 保留原文件的權限以及時間戳
		-r,-R 復制目錄。遞歸復制目錄及其子目錄內的所有內容
		-i 交互式,覆蓋文件前詢問用戶
		-f 強制移動,需要有-i詢問用戶時使用

	# cp -a /etc/  /tmp/test1  復制/etc目錄 到/tmp/test1下 保留/etc/下所有文件的屬性
		
mv:
	移動文件
	mv [OPTION]... FILE...
	常用選項
		-i 交互式,覆蓋文件前詢問用戶
		-f 強制移動,需要有-i詢問用戶時使用

	# root用戶默認 有cp mv rm 的命令別名帶 -i 選項 
	# mv a.log b.log     如果 b.log 存在直接覆蓋,不存在正常移動
	# mv -i a.log b.log  如果 b.log 存在 會詢問用戶是否覆蓋 n不覆蓋 y覆蓋 root默認mv別名帶-i參數
	# mv -if a.log b.log 如果 b.log 存在直接覆蓋,不存在正常移動

rm:
	刪除文件
        rm [OPTION]... FILE...
	- 常用選項
		-i: 交互式,刪除文件是詢問是否刪除
		-f: 強制刪除,需要有-i詢問用戶時使用
		-r: 遞歸刪除, 
	
	# root用戶默認 有cp mv rm 的命令別名帶 -i 選項 
	# rm -i a.log  刪除 a.log 詢問當前用戶是否刪除 n不刪除 y刪除  root默認mv別名帶-i參數
	# rm -if a.log 刪除 a.log -i詢問用戶,-f強制刪除 則直接刪除 。
	# rm -rf /tmp/* 刪除 /tmp 下的所有文件 文件夾
	
跟文件相關命令還有很多,chmod,chown,chgrp,file,stat,cat,uniq,wc,sort,tr,less,more,tail,grep,fgrep,egrep,find.....等

2、bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。

    命令的狀態返回值 通常可以叫我們來判斷該腳本是否執行成功。
    上一條腳本的的返回狀態值 保存在 $? 這個變量中。
    
    # ls /
    bin   boot_ucloud  dev  home  lib64       media  opt   root  selinux  swapfile  tmp  var
    boot  data         etc  lib   lost+found  mnt    proc  sbin  srv      sys       usr
    # echo $?
    0            執行成功
    # ls /abc
    ls: cannot access /abc: No such file or directory
    # echo $?  
    2            執行出錯
    
    通常來說 腳本返回狀態值為0時表示腳本執行成功,非0時表示執行過程中遇到問題
    返回值是程序員來定義的,你也可以寫成一下代碼
    shell腳本
    {
        #!/bin/bash

        ls /
        
        exit 1
    }
    當執行該腳本后 在看 $?變量里的值時 就是1,當然這是一個叫大家理解返回值的例子。
    在自己寫的腳本中設立返回值是個好習慣,成功大家一般都會返回0
    
    
 二 命令行展開
     可以為我工作提高更好的效率
     ~: 展開為用戶的主目錄
     ~USERNAME:展開為指定用戶的主目錄
     {}:可承載一個以逗號分隔的列表,并將其展開為多個路徑

     # vim ~/.bashrc   操作當前用戶 家目錄下的.bashrc文件
     # vim ~huazi/.bashrc  操作 huazi 用戶家目錄下的.bashrc文件
     # cd ~huazi  進入 huazi 的家目錄
     
     # mkdir -p test/{a,b,c} 創建 test 目錄已經該目錄下 a b c三個目錄
     # ls test/
     a  b  c
     
     # touch a{1..10}  連續創建文件
     # ls
     a1  a10  a2  a3  a4  a5  a6  a7  a8  a9
     
     # mkdir a{1..10}  連續創建目錄
     # ls
     a1  a10  a2  a3  a4  a5  a6  a7  a8  a9

3、請使用命令行展開功能來完成以下練習:

(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d
    [root@c7-1 /]# mkdir /tmp/{a_c,a_d,b_c,b_d}      
    [root@c7-1 /]# ls /tmp/
    a_c  a_d  b_c  b_d 
    
(2)、創建/tmp/mylinux目錄下的:
    [root@c7-1 /]# mkdir /tmp/mylinux 
    [root@c7-1 /]# cd /tmp/mylinux/
    [root@c7-1 mylinux]# mkdir -pv  bin boot/grub dev etc/{rc.d/init.d,sysconfig/network-script} lib/module lib64 proc sbin sys tmp usr/local/{bin,sbin} var/{lock,log,run} 
    mkdir: created directory ‘bin’
    mkdir: created directory ‘boot’
    mkdir: created directory ‘boot/grub’
    mkdir: created directory ‘dev’
    mkdir: created directory ‘etc’
    mkdir: created directory ‘etc/rc.d’
    mkdir: created directory ‘etc/rc.d/init.d’
    mkdir: created directory ‘etc/sysconfig’
    mkdir: created directory ‘etc/sysconfig/network-script’
    mkdir: created directory ‘lib’
    mkdir: created directory ‘lib/module’
    mkdir: created directory ‘lib64’
    mkdir: created directory ‘proc’
    mkdir: created directory ‘sbin’
    mkdir: created directory ‘sys’
    mkdir: created directory ‘tmp’
    mkdir: created directory ‘usr’
    mkdir: created directory ‘usr/local’
    mkdir: created directory ‘usr/local/bin’
    mkdir: created directory ‘usr/local/sbin’
    mkdir: created directory ‘var’
    mkdir: created directory ‘var/lock’
    mkdir: created directory ‘var/log’
    mkdir: created directory ‘var/run’
    [root@c7-1 mylinux]# 
    [root@c7-1 mylinux]# tree /tmp/mylinux/
    /tmp/mylinux/
        ├── bin
        ├── boot
        │   └── grub
        ├── dev
        ├── etc
        │   ├── rc.d
        │   │   └── init.d
        │   └── sysconfig
        │       └── network-script
        ├── lib
        │   └── module
        ├── lib64
        ├── proc
        ├── sbin
        ├── sys
        ├── tmp
        ├── usr
        │   └── local
        │       ├── bin
        │       └── sbin
        └── var
            ├── lock
            ├── log
            └── run
    24 directories, 0 files
    [root@c7-1 mylinux]#

4、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。

    - 文件元數據包括
        文件的用戶id
        文件的組id
        文件最近的訪問時間
        文件最近的修改時間
        文件最近的inode修改時間
        文件的大小
        文件的鏈接數
        文件的權限
        文件數據block的位置
    
    
    stat 命令可以查看
    
    列出文件的元數據的相關信息
    # stat /etc/fstab 
      File: `/etc/fstab'
      Size: 644             Blocks: 8          IO Block: 4096   regular file
    Device: fc01h/64513d    Inode: 393244      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2016-04-12 16:01:55.498000866 +0800
    Modify: 2016-04-12 16:01:55.498000866 +0800
    Change: 2016-04-12 16:01:55.498000866 +0800
    
    touch 命令可以修改文件的 最近訪問時間和最近修改時間 
    - 格式:touch [OPTION]... FILE...
	- 常用選項
	  -a 只更改文件最近的訪問時間
	  -m 只更改文件最近的修改時間
	  -t 指定時間 格式 [[CC]YY]MMDDhhmm[.ss]

5、如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?

如何定義一個命令別名。
    alias 命令可以定義命令別名
        用法:
            查看別名 
            # alias
            alias h='ls -lh'
            alias l.='ls -d .* --color=auto'
            alias ll='ls -l --color=auto'
            alias log_nginx='cd /data/logs/nginx'

            建立別名 
            # alias name=value
                
            刪除別名
            # unalias fgrep
                
    alias mycd='cd /etc/sysconfig/network-scripts/'
    alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-eno16777736'
    還可以寫到 ~/.bashrc 中 讓當前用戶永久生效
    
如何在命令中引用另外一個命令的結果。
    可以使用 $()   例 # a=$(pwd)
    可以使用 ``    例 # a=`pwd`  
    [root@c7-1 ~]# if [ $(wc -l /etc/passwd|cut -d' ' -f1) -gt 20 ]; then echo '> 20'; else echo '< 20'; fi 
    > 20
    [root@c7-1 ~]# if [ `wc -l /etc/fstab|cut -d' ' -f1` -gt 20 ]; then echo '> 20'; else echo '< 20'; fi
    < 20
    [root@c7-1 ~]# test $( wc -l /etc/passwd |cut -d' ' -f1 ) -gt 20 && echo '  > 20 ' || echo '< 20'  
    > 20 
    root@c7-1 ~]# test ` wc -l /etc/fstab |cut -d' ' -f1 ` -gt 20 && echo '  > 20 ' || echo '< 20'      
    < 20

6、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。

ls -ld /tmp/1*[0-9]*[[:lower:]]

7、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。

ls -ld /etc/[0-9]*[^0-9]

8、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。

ls -ld /etc/[^a-z][a-z]*

9、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。

touch /tmp/tfile-$(date +'%F-%H-%M-%S')

10、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。

cp -r /etc/p*[^0-9] /tmp/mytest1

11、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。

cp -r /etc/*.d /tmp/mytest2

12、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

cp /etc/[lmn]*.conf /tmp/mytest3

原創文章,作者:banbula,如若轉載,請注明出處:http://www.www58058.com/19508

(0)
banbulabanbula
上一篇 2016-06-26
下一篇 2016-06-26

相關推薦

  • 第四周博客分享

                    時間匆匆,轉眼來馬哥已經快一個月了,這一個月對我來說是收獲滿滿,每天都在學到新的東西。       &nbs…

    2017-08-06
  • N25-第二周做業

    一.Linux上的文件管理類命令都有哪些,其常用的使用方法和演示        1.目錄管理的命令    mkdir rmdir              1)…

    Linux干貨 2016-12-11
  • bash(awk遞歸)N階【斐波那契數列】多種實現(含遞歸解析圖)

    【版權所有】轉載請說明作者【Jev Tes】        【本文導航】        零、關于斐波那契數列        一、輸入參數合法性判斷       &nbsp…

    Linux干貨 2016-11-24
  • 第七周作業

    1、創建一個10G分區,并格式為ext4文件系統; (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl; ]#mke2fs -t ext4 -b 2048 -L MYDATA -m 2 O acl /dev/sda1 (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件…

    Linux干貨 2017-03-11
  • 學習學習,復習復習,linux基礎中的基礎

    計算機的組成及其功能          根據馮諾依曼體系結構構成的計算機,應該具備以下幾點功能: l  具有把程序、數據輸入到計算機的能力 l  具有長期記憶程序、數據、中間結果以及最終結果的能力 l  能夠完成各種算術運算、邏輯運算和數據傳輸的數據…

    Linux干貨 2016-09-25
  • DNS實驗

      建立DNS服務器(正向解析) linux沒有緩存 windows有dns緩存 權威結果,非權威結果 無論是正向解析數據庫還是反向解析數據中  寫管理員郵件地址或完整域名(FQDN)都要再后面加上點。否則系統會自動不上區域名稱。 實驗環境先清理防火墻規則,關閉防火墻. centos7 systemctl disabl…

    Linux干貨 2016-11-01

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-06-29 15:19

    寫的很好,排版也很漂亮,加油

欧美性久久久久