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 13:17

相關推薦

  • SSH會話劫持實現端口轉發

    在進行滲透測試時,我們有時候會碰到搭建的測試環境、產品服務器、DMZ或者其他類似的機器群的情況,這時我們完全可以把它們看作跳板。這些系統被設計成對外交互的接口,這時候我們考慮對其他域里的用戶進行SSH會話劫持是個不錯的選擇。 那么如果你擁有了某一個跳板的控制權限,想要通過另一個域的用戶對遠程域進行訪問會怎么辦呢?當然,這時候你是沒有密碼、密鑰的,你不能拋棄二…

    系統運維 2015-03-23
  • 第三周博客作業

    who useradd usermod groupadd

    Linux干貨 2017-12-17
  • linux發展史

    Linux 發展史 說明 此前對linux認識模糊一知半解,近期通過學習將自己對于linux的發展總結一下方便大家日后的學習。那Linux是目前一款非?;馃岬拈_源操作系統,可是linux是什么時候出現的,又是因為什么樣的原因被開發出來的呢。以下將對linux的發展歷程進行詳細的講解。    目錄 一、Linux發展背景 二、UINIX的誕…

    Linux干貨 2016-10-14
  • 深入Php底層,用c為php編寫拓展

    1.前言              隨著lamp/lnmp架構的流行,Php語言越來越得到廣泛的使用。php語言在表現層有著非常優異的表現,部署方便,開發迅速。但Php語言也有著天生短板以及局限性—-對多線程以及多進程的支持不甚如意,以及…

    Linux干貨 2016-10-29
  • Linux系統常用命令介紹

    [root@alibaba ~]# ifconfig?#查看或者配置網絡適配器的接口信息 eth0????? Link encap:Ethernet? HWaddr 00:16:3E:0A:7B:2A inet addr:172.18.10.115? Bcast:172.18.15.255? Mask:255.255.240.0 [root@alibaba …

    Linux干貨 2018-03-04
  • 用戶和組的配置文件

    一.linux上的用戶和組   linux上的用戶:       linux上的用戶即Username/UID分為以下類別:         管理員:root,0    …

    Linux干貨 2016-10-23

評論列表(2條)

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

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

    • sky
      sky 2017-12-17 10:25

      @馬哥教育哈,謝謝老師鼓勵

欧美性久久久久