Linux第二周學習博客作業

對第二周學習的內容進行總結

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

目錄管理命令:cd, pwd, ls, mkdir, rmdir, tree

  1. cd命令:change directory切換工作目錄
  • cd path : 切換至指定目錄路徑
  • cd : 切換至當前用戶的家目錄
  • cd – : 切換至上一次工作目錄
  1. pwd命令:print working directory顯示當前工作目錄
  2. ls命令:顯示當前路徑下的文件
  • ls :顯示當前路徑下的文件,默認不顯示隱藏文件
  • ls -a :顯示當前路徑下的所有文件
  • ls -A : 與-a選項的唯一區別是不顯示 . (當前目錄) 和 .. (上一級目錄)
  • ls -l : 顯示當前路徑下的文件,同時展示出詳細信息
  • ls -lh : -h(human readable)選項通常與-l選項同時使用,可以使顯示結果更利于人類解讀
  • ls -d : 顯示目錄時只顯示其本身,而不顯示其下的文件列表(通常用于path/*這種用法,如ls-d /etc/* 執行結果為顯示etc目錄下的所有文件,但是現實etc下的目錄時不會顯示其下所包含的內容列表,如果不加 -d 選項,ls /etc/* 執行結果在線式etc目錄下的目錄時也會顯示出 這些目錄下的內容列表)
  • ls -i : 顯示文件的同時顯示其inode
  1. mkdir命令:創建目錄
  • mkdir [option] /path/to/dirname… : 創建目錄,可以同時創建多個,中間以空格分隔
  • -p : 如果目錄已存在,不返回錯誤信息,如果要創建的上級目錄不存在,則自動遞歸創建上級目錄
  • -m mode : 在創建目錄時為其設定權限
  • -v : verbose顯示過程信息
  1. rmdir命令:刪除目錄
  • rmdir [option] path/to/dirname… : 刪除時目標目錄可以是多個,中間以空格分隔,需要注意的是這個命令只能刪除空目錄,所以其不常用,常用的是rm這個功能更強的命令
  1. tree命令:顯示某目錄的詳細路徑結構信息(樹形結構)
  • tree [option] /path/to/dirname… : 可以指定多個目錄對象一同展開,中間以空格分隔
~]# tree /tmp/magedu.com/
/tmp/magedu.com/
├── machine-id
└── mtab
  • -d : 只顯示目錄
  • -L # :執行顯示的層級#
  • -P patten : 進行patten模式匹配執行結果,顯示匹配到的內容

文件管理命令:cat, more, less, head, tail, touch, cp, mv, rm

  1. cat命令:查看文本文件內容,一次性輸出所有信息
  • cat [option] file…
  1. more命令:查看文本文件內容,提供翻頁功能
  • more [option] file…
  1. less命令:查看文本文件內容,比more命令更強大,不僅提供翻頁功能,還可以在查看過程中進行匹配搜索等功能
  • less [option] file…
  1. head命令:顯示文本文件的開頭N行內容,一次性輸出
  • head [option] file… 不加選項默認顯示頭10行信息
  • head -n # [or -#] : 顯示頭#行信息
  • head -c # : 顯示頭#個字節的信息,例如head -c 10k 顯示頭10k Bytes的內容
  1. tail命令:顯示文本文件從結尾向上數N行內容,一次性輸出
  • tail [option] file… 不加選項默認顯示結尾10行信息
  • tail -n # [or -#] : 顯示尾#行信息
  • tail -c # : 顯示尾#個字節的信息,例如tail -c 10k 顯示結尾向前數10k Bytes的內容
  1. touch命令:更改文件的時間戳
  • touch [option] file… 如果文件存在,更改文件的時間戳。如果文件不存在,則新建此文件,因此touch命令也常用于新建空文件
  • -a : 更改文件的access time
  • -m : 更改文件的modify time
  • -t time : 將文件的時間戳修改為指定的時間
  1. cp命令:復制文件
  • cp [option] source… dest
    • 如果source是一個文件,dest也是一個文件,則將source的內容覆蓋至dest
    • 如果source是一個文件,dest不存在,則新建dest文件并將source的內容覆蓋至dest
    • 如果source是一個目錄或多個文件,則dest必須是一個已存在的目錄,將source復制到dest目錄下面
    • 如果source是一個目錄,可以加 -r 選項使得復制成功,執行結果為新建dest目錄,并將source目錄之下的所有文件遞歸復制到dest下面
  • cp [option] -t directory source… : 此用法中 -t 之后為復制操作的目標目錄
  • 常用的命令選項
    • -r[or R] : 遞歸復制
    • -i : 交互模式
    • -d : 復制時遇到符號鏈接僅復制其本身,而不追蹤復制符號鏈接指向的源文件
    • -p : 使復制后的復本保留原有文件的屬性
    • -a : 歸檔復制,相當于 -dpr 3個選項疊加使用
    • -f : 強制復制,忽略且不輸出交互信息(如不顯示是否覆蓋的交互信息而直接覆蓋)
    • -v : verbose顯示過程信息
  1. mv命令:移動文件
  • mv [option] soure… dest
    • 如果dest存在且是一個目錄,則將source移動至dest目錄下
    • 如果source是多個文件,則dest必須為一個已存在的目錄
    • 如果source是一個文件(目錄也是文件),dest(dest=/path/filename)不存在,則將source文件重命名為filename并移動至/path路徑下
  • 常用選項
    • -i : 交互模式
    • -f : 強制執行,不輸出交互信息
  1. rm命令:刪除文件(目錄)
  • rm [option] file…
  • -i : 交互模式
  • -r : 遞歸刪除
  • -f : 強制執行刪除,不輸出交互信息

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

  1. Bash的命令執行狀態返回值保存在變量”?”中,可以使用 echo $? 輸出其值。
  • 值為 0 : 表示命令執行成功
  • 值為 1-255 : 表示命令執行失敗
  1. Bash的命令行展開
  • ~: 表示當前用戶的家目錄
  • ~username: 表示username用戶的家目錄
  • {x,y,…}: 大括號中的元素集合可以分別展開
    • 例如/tmp/{x,y}表示: /tmp/x /tmp/y

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

  1. 創建/tmp目錄下的:a_c, a_d, b_c, b_d
]# mkdir /tmp/{a,b}
]# touch /tmp/{a,b}/{c,d}
]# tree /tmp/{a,b}
/tmp/a
├── c
└── d
/tmp/b
├── c
└── d
  1. 創建/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 /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}}
]# tree /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

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

  1. 文件的元數據包括:名稱,路徑,大小,inode號,文件類型,硬鏈接數,權限,時間戳等
  • inode : 文件的元數據保存在磁盤上的inode區域中,每一個文件都有一個對應的inode號碼
  • 硬鏈接數 : 一個文件的硬鏈接數為N,表示該文件在磁盤上有N個與其對應的inode號碼相同的文件
  • 權限 : 文件的權限包括r(讀),w(寫),x(執行),suid,sgid,sbit這幾種權限,它們可以分別對應到文件的屬主、屬組和其他人上
  • 時間戳 : 包括有訪問時間、修改時間、屬性更改時間
    • access time(atime) : 訪問時間。文件被訪問,即文件在使用cat, more, less, head等命令查看,或者cp等命令將其作為源文件復制給其他路徑下,或者使用grep命令進行匹配查找等操作時,atime都會改變
    • modify time(mtime) : 更改時間。指文件內容被修改時,mtime會改變
    • change time(ctime) : 屬性更改時間。指文件的元數據被改變,例如chmod, chown, mv等命令改變了文件權限名稱路徑等信息,ln命令增加了文件的硬鏈接等操作都會改變ctime
  1. stat命令可以顯示文件的元數據信息
  • stat [option] file…
  1. touch命令可以用來修改文件的時間戳信息

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

  1. 定義命令別名
  • 直接輸入命令(只能對當前shell有效)
    • alias command1=command2定義了command1作為command2的別名
]# alias "abc"="ls -l"
]# abc
total 15088
drwxr-xr-x.  2 root root       24 Dec  9 21:51 a
drwxr-xr-x. 28 1001  1001    4096 Dec  7 16:50 apr-1.6.3
-rwxr-xr-x.  1 root root  1072661 Dec  7 16:47 apr-1.6.3.tar.gz
drwxr-xr-x. 21 1001  1001    4096 Dec  7 16:54 apr-util-1.6.1
-rwxr-xr-x.  1 root root   554301 Dec  7 16:37 apr-util-1.6.1.tar.gz

  • 定義在bash登錄執行的配置文件中
]# vim .bashrc

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi

  1. 引用另一個命令的執行結果
  • 使用$(command)
]# ls
anaconda-ks.cfg  scripts  vmware-tools-distrib
]# ls $(ls)
anaconda-ks.cfg

scripts:
file_type.sh  num_sum.sh  sum_txt_linecount.sh  sum_uid.sh  sys_info.sh  user_type.sh

vmware-tools-distrib:
bin  caf  doc  etc  FILES  INSTALL  installer  lib  vgauth  vmware-install.pl
  • 使用`command`
  • 使用管道
ls -l /etc | less

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

可以采用glob匹配文件名的機制來完成

]# ls /var
adm  cache  crash  db  empty  games  gopher  kerberos  l2cn1  l4_t  lib  list12a  local  lock  log  mail  nis  opt  preserve  run  spool  tmp  yp
]# ls /var/l*[[:digit:]]*[a-z]
/var/list12a

/var/l4_t:
lu98i

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

]# ls -d /etc/*
/etc/123                      /etc/cron.weekly              /etc/groff          /etc/locale.conf
/etc/1a                       /etc/crypttab                 /etc/group          /etc/localtime
/etc/1A1                      /etc/csh.cshrc                /etc/group-         /etc/localtime.bak
/etc/1.b                      /etc/csh.login                /etc/grub2.cfg      /etc/login.defs
/etc/1b.d
]# ls -d /etc/[0-9]*[^[:digit:]]
/etc/1a  /etc/1.b  /etc/1b.d

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

]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/1a  /etc/1A1  /etc/1b.d

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

]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
]# ls /tmp/tfile*
/tmp/tfile-2017-12-10-09-17-45

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

]# cp -a /etc/p*[^0-9] /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目錄中

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

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

]# cp -a /etc/[lmn]*.conf /tmp/mytest3
]# ls /tmp/mytest3
ld.so.conf  libaudit.conf  libuser.conf  locale.conf  logrotate.conf  man_db.conf  mke2fs.conf  nsswitch.con

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89774

(2)
skysky
上一篇 2017-12-10 01:46
下一篇 2017-12-10

相關推薦

  • 誤刪除libc.so.6時,該怎么恢復

           一周一周光陰似流水,轉瞬即逝,又到了該說點什么的時候了。這周老師給我們出了一道實驗題,內容是當你不小心誤刪除了libc.so.6這個庫文件時,怎么恢復。意不意外?驚不驚喜?那下面就來簡單說說(呃……為什么不是詳細說說呢,因為這個這個水平有限,也只能是理解多少,給…

    2017-08-11
  • 在軟raid10上使用LVM,并且進行磁盤配額,最后還原。

    實驗環境 1)centos 7.3 2)lvm格式化的文件系統為ext4 3)磁盤為單一磁盤的不同分區 4)使用軟件:mdadm,lvm2 tools,quota 軟raid10的創建 一,兩個raid1的創建 1)對磁盤進行分區,使用工具fdidk,每個大小為1GB,類型改為fd。我的分區情況:/dev/sda{6,7,8,9}將會拿來做為raid的磁盤?!?/p>

    Linux干貨 2017-03-16
  • corosync + pacemaker + iscsi實現高可用mysql (上)

    一、實驗圖   二、準備實驗環境:  1)確保sql服務器之間可以基于主機名通信 [root@SQL1 ~]# vim /etc/hosts 172.16.2.13  SQL1.linux.com  SQL1 172.16.2.14  SQL2.li…

    Linux干貨 2015-07-09
  • 新的旅途

    三月末的北京已經讓人感覺有些炎熱,這是我第一次來北京。對我而言這是我人生的另一個起點,押上了我所有驕傲承載著我的夢想對未來所有的期望。這是一場豪賭,新的旅途,從今天開始。

    2018-03-26
  • Linux第三周

    一.正則表達式和擴展正則表達式 1.首先有各種工具來對文本進行的查看,分析,統計   cat 命令:查看文本的工具    cat主要有三大功能:1.一次顯示整個文件。$ cat filename2.從鍵盤創建一個文件。$ cat > filename     只能創建新文件,不能編輯已有文件.…

    2017-06-04
  • N25-Bazinga-第三周作業

    N25-Bazinga-第三周作業 1.列出當前系統上登錄的所有用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# w | cut -d' ' -f1 | uniq -c |&nbs…

    Linux干貨 2016-12-21

評論列表(2條)

  • 馬哥教育
    馬哥教育 2017-12-16 12:33

    總結的不錯,繼續加油哈~

欧美性久久久久