馬哥教育網絡班22期+第02周課程練習

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

cp:復制命令,copy的簡稱

02_01_cp01.png

復制選項詳解:

1、交互式復制:root用戶默認添加-i參數,普通用戶默認使用命令本身,root用戶也想使用命令本身需在命令前增加"\"

[root@bogon ~]# ls /tmp/
newfile
[root@bogon ~]# cp -i /etc/fstab /tmp/newfile 
cp: overwrite ‘/tmp/newfile’? y
[root@bogon ~]# cp /etc/fstab /tmp/newfile 
cp: overwrite ‘/tmp/newfile’? y
[root@bogon ~]# \cp /etc/fstab /tmp/newfile

2、強制覆蓋:普通用戶默認存在此屬性,root增加此選項也無法強制,只能使用\cp方式強制

3、復制目錄

[root@bogon ~]# cp /boot/ /tmp/
cp: omitting directory ‘/boot/’
[root@bogon ~]# cp -r /boot/ /tmp/

4、復制鏈接文件而非指向的源文件

[root@bogon ~]# ls -l /tmp/
[root@bogon ~]# ln -s /etc/fstab /tmp/fstab
[root@bogon ~]# ls -l /tmp/
total 0
lrwxrwxrwx. 1 root root 10 Sep  1 13:29 fstab -> /etc/fstab
[root@bogon ~]# cp /tmp/fstab /tmp/fstab2
[root@bogon ~]# ls -l /tmp/
total 4
lrwxrwxrwx. 1 root root  10 Sep  1 13:29 fstab -> /etc/fstab
-rw-r--r--. 1 root root 501 Sep  1 13:29 fstab2
[root@bogon ~]# cp -d /tmp/fstab /tmp/fstab3
[root@bogon ~]# ls -l /tmp/
total 4
lrwxrwxrwx. 1 root root  10 Sep  1 13:29 fstab -> /etc/fstab
-rw-r--r--. 1 root root 501 Sep  1 13:29 fstab2
lrwxrwxrwx. 1 root root  10 Sep  1 13:30 fstab3 -> /etc/fstab

5、歸檔,復制的文件權限保持不變

-a:-dR --preserve=all, archive

復制目標詳解:

1、單源復制:DEST不存在

[root@bogon ~]# ls /tmp/
[root@bogon ~]# cp /etc/fstab /tmp/noDEST
[root@bogon ~]# ls /tmp/
noDEST

2、單源復制:DEST存在為目錄

[root@bogon ~]# ls /tmp/new/
[root@bogon ~]# cp /etc/fstab /tmp/new/
[root@bogon ~]# ls /tmp/new/
fstab

3、單源復制:DEST存在為文件

[root@bogon ~]# touch /tmp/newfile
[root@bogon ~]# ls /tmp/
newfile
[root@bogon ~]# cp /etc/fstab /tmp/newfile 
cp: overwrite ‘/tmp/newfile’? y

4、多源復制:DIRECTORY存在

[root@bogon ~]# mkdir /tmp/new
[root@bogon ~]# ls /tmp/new/
[root@bogon ~]# cp /etc/fstab /etc/passwd /tmp/new/
[root@bogon ~]# ls /tmp/new/
fstab  passwd

5、多源復制:DIRECTORY不存在

[root@bogon ~]# ls /tmp/
[root@bogon ~]# cp /etc/passwd /etc/fstab /tmp/new
cp: target ‘/tmp/new’ is not a directory

mv命令:move

mv命令:move
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE..            

常用選項:
-i:交互式;
-f:force

rm:刪除命令 remove

常用選項:
 -i:interactive
 -f:force
 -r: recursive
刪除目錄:rm -rf /PATH/
危險操作:rm -rf /* 【kernel 2.6 之后對rm -rf /命令進行保護操作,但對添加*號的命令無能為力】

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

1、命令執行狀態返回值的介紹:

命令執行完成之后,其狀態返回值可以確認該命令是否正確執行,其結果保存于bash的特殊變量$?中;
[root@bogon ~]# ls /etc/ > /dev/null 2>&1
[root@bogon ~]# echo $?
0
[root@bogon ~]# ls /etc/aaaa > /dev/null 2>&1
[root@bogon ~]# echo $?
2

2、命令執行狀態返回值的輸出結果:

命令執行正常:其返回值為 0 ;
命令非正常執行:其返回值范圍為1-255之間,具體值根據命令及其功能不同,結果各不相同;

3、命令行展開涉及的內容:

~:自動展開為用戶的家目錄,或指定的用戶的家目錄;
[root@bogon etc]# ls /root/
anaconda-ks.cfg.zip
[root@bogon etc]# cp ~/anaconda-ks.cfg.zip /tmp/
[root@bogon etc]# ls /tmp/
anaconda-ks.cfg.zip
			
{}:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑;
[root@bogon ~]# ls /tmp/
[root@bogon ~]# touch /tmp/{a,b,c}
[root@bogon ~]# ls /tmp/
a  b  c

三、請使用命令行展開功能來完成以下練習:
(1)、創建/tmp目錄下的:a_c, a_d, b_c, b_d

[root@bogon etc]# touch /tmp/{a,b}_{c,d}
[root@bogon etc]# ls /tmp/
a_c  a_d  b_c  b_d

(2)、創建/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

mkdir -p /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}}

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

1、文件的元數據信息及意義:

文件系統中的數據是由兩部分存在合二為一的,即“元數據”和“數據”兩部分。其中元數據是對數據本身特征的描述;其包括:所有者、訪問權限、時間信息(創建時間、修改時間、改變時間)、數據塊分布等內容。

2、查看文件的元數據:

~]# ls -li /tmp/a 
101637137 -rw-r--r--. 1 root root 0 Sep  1 18:03 /tmp/a

[root@bogon ~]# stat /tmp/a
  File: ‘/tmp/a’
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 100663426   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-09-01 16:33:49.033484339 -0400
Modify: 2016-09-01 16:34:05.499485435 -0400
Change: 2016-09-01 16:34:05.502485435 -0400
 Birth: -

3、修改文件的時間戳信息:
(1)修改Access time:

[root@bogon ~]# touch -a -t 01020304 /tmp/a 
[root@bogon ~]# stat /tmp/a 
  File: ‘/tmp/a’
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 100663426   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-01-02 03:04:00.000000000 -0500
Modify: 2016-09-01 16:34:05.499485435 -0400
Change: 2016-09-01 16:36:39.748495703 -0400
 Birth: -

(2)修改Modify time:

[root@bogon ~]# touch -m -t 06070809 /tmp/a 
[root@bogon ~]# stat /tmp/a 
  File: ‘/tmp/a’
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d	Inode: 100663426   Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:user_tmp_t:s0
Access: 2016-01-02 03:04:00.000000000 -0500
Modify: 2016-06-07 08:09:00.000000000 -0400
Change: 2016-09-01 16:38:13.679501956 -0400
 Birth: -

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

1、命令別名:

#查看命令別名:
~]# alias

#定義命令別名:使得輸入vi即可調用vim軟件進行文本編輯
~]# alias vi=vim

#解除別名定義:
~]# unalias vi

2、引用命令結果:

#一般被稱為命令替換  $(COMMAND)或`COMMAND`
樣例請見本練習第九題處;

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

~]# ls -d /var/l*[[:digit:]]*[a-z]
/var/lmn123opq

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

~]# ls -d /etc/[[:digit:]]*[^[:digit:]]
/etc/789abc456def
# 下面使用!代替^貌似也可以實現,不知道在語法上或使用上是否有分別。
~]# ls -d /etc/[[:digit:]]*[![:digit:]]
/etc/789abc456def

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

~]# ls -d /etc/[^[:alpha:]][[:alpha:]]*
/etc/1a2b3c4d  /etc/1a2b3c4d5e

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

~]# touch /tmp/tfile-$(date +%F-%H-%M-%S)
~]# ls /tmp/
tfile-2016-09-01-17-49-03

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

~]# mkdir -p /tmp/mytest1
~]# cp -r /etc/p*[^[:digit:]] /tmp/mytest1
~]# ls /tmp/mytest1/
pam.d  passwd  passwd-  pki  plymouth  pm  popt.d  postfix  ppp  prelink.conf.d  printcap  profile  profile.d  protocols  python

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

~]# ls -d /etc/*.d
~]# cp -r /etc/*.d /tmp/mytest2/
~]# ls /tmp/mytest2/
bash_completion.d  depmod.d       init.d        modules-load.d  prelink.conf.d  rc2.d  rc6.d      statetab.d  xinetd.d
binfmt.d           dnsmasq.d      ld.so.conf.d  my.cnf.d        profile.d       rc3.d  rc.d       sudoers.d   yum.repos.d
chkconfig.d        dracut.conf.d  logrotate.d   pam.d           rc0.d           rc4.d  rsyslog.d  sysctl.d
cron.d             grub.d         modprobe.d    popt.d          rc1.d           rc5.d  rwtab.d    tmpfiles.d

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

~]# mkdir /tmp/mytest3
~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3/
~]# ls /tmp/mytest3/
ld.so.conf  libaudit.conf  libuser.conf  locale.conf  logrotate.conf  man_db.conf  mke2fs.conf  nsswitch.conf

原創文章,作者:N22-北京-狂神小蝦,如若轉載,請注明出處:http://www.www58058.com/42674

(0)
N22-北京-狂神小蝦N22-北京-狂神小蝦
上一篇 2016-09-02
下一篇 2016-09-02

相關推薦

  • Linux下LVM

    LVM(Logic Volume Management,邏輯卷管理         由多個塊設備(pv,卷)組成一個邏輯卷組(vg),接著在邏輯組上創建邏輯卷(lv),實現在線縮減邏輯卷與邏輯卷組。 實驗:     1、VM虛擬機添加硬盤:…

    Linux干貨 2016-06-09
  • Linux發展史

    1、Linux是什么     Linux 是一套 Unix-like 的作業系統,是 Unix 的一種,它控制整個系統基本服務的核心程式 (kernel) 是由 Linus 帶頭開發出來的,「Linux」這個名稱便是以「Linus's Minix」來命名,Linus 選擇用「大眾公有版權」 (GPL)的方式來發行這份程…

    Linux干貨 2016-10-19
  • shell腳本編程基礎

    shell腳本編程基礎以及一些基本的邏輯運算知識和shell的配置用戶環境。

    2017-11-26
  • Linux運維之基礎拾遺

    博客具體內容請移步博客園: http://www.cnblogs.com/ITOps/p/6151766.html

    Linux干貨 2016-12-09
  • HipHop PHP實戰(詳解web運行模式)

    Note: These code examples assume the HipHop compiler is fully built. 1 . Setting Up Your Environment (構建環境) To get started, you need to configure two environment variables. cd…

    Linux干貨 2015-04-10
  • awk,systemctl,破解7root口令

    awk -F 指明輸入時用到的字段分隔符 默認空格為分隔符 -v 自定義變量 基本格式:awk [options] 'program' file $1,$2..$n稱為域標識,$0為所有域。 文件的每一行稱為記錄 awk '{print}' /etc/passwd 默認 print $0 顯示全段   awk…

    Linux干貨 2016-10-05

評論列表(2條)

  • 馬哥教育
    馬哥教育 2016-09-13 21:04

    提兩個點:
    1.多源復制那道題,為何會報提示
    2.alias 用法 alias command=”command”

    • N22-北京-狂神小蝦
      N22-北京-狂神小蝦 2016-09-14 20:53

      @馬哥教育對于您的指點回復:1、多源復制在DIRECTORY不存在的情況下,就是應該報錯的,此結果在cp命令圖示處已經明確給出了。2、對于alias的確是應該添加引號的,但添加的一般都是單引號,您所給出的雙引號,個人認為某些時候可能略有不妥。本題未添加任何引號,測試是通過的。的確是大意了,以后會多加注意的!

欧美性久久久久