馬哥教育網絡班22期第二周課程練習
Linux簡單使用(1)
Linux常用命令介紹
linux命令是對Linux系統進行管理的命令。對于Linux系統來說,無論是中央處理器、內存、磁盤驅動器、鍵盤、鼠標,還是用戶等都是文件,Linux系統管理的命令是它正常運行的核心。
linux命令在系統中有兩種類型:內置Shell命令和Linux命令??梢允褂胔elp、man和info命令獲得幫助。
* help提供內部命令的幫助;man和info提供外部命令的幫助。
Linux常用命令
-
pwd命令:以絕對路徑的方式顯示當前的工作目錄;
[root@localhost ~]# pwd /root
-
cd命令:用來切換工作目錄至dirname,其中dirName表示法可為絕對路徑或相對路徑;
使用格式:cd [-L|[-P [-e]]] [dir]
選項:
-P :如果要切換到的目標目錄是一個符號連接,直接切換到符號連接指向的目標目錄;
-L :如果要切換的目標目錄是一個符號的連接,直接切換到字符連接名代表的目錄,而非符號連接所指向的目標目錄;
– :當僅實用"-"一個選項時,當前工作目錄將被切換到環境變量"OLDPWD"所表示的目錄;
~]# cd 進入用戶主目錄; ~]# cd ~ 進入用戶主目錄; ~]# cd - 返回進入此目錄前所在的目錄; ~]# cd .. 返回上級目錄; ~]# cd ../.. 返回上兩級目錄; ~]# cd !$ 把上個命令的參數作為cd的參數使用;
-
ls命令:list,用于顯示目錄列表;
使用格式:ls [OPTION]… [FILE]…
選項:
-a :顯示所有文件,包括隱藏文件(.和..開頭的文件和目錄);
-A :顯示除.和..開頭以外的所有文件;
-l :長格式列表,顯示文件的詳細屬性信息;
-h :文件大小單位轉換;
-d :僅顯示目錄名,而不顯示目錄下的內容列表;
-r :以文件名反序排列并輸出目錄內容列表;
-R :遞歸處理,將指定目錄下的所有文件及子目錄一并處理;
[root@localhost ~]# ls anaconda-ks.cfg initial-setup-ks.cfg [root@localhost ~]# ls -l 總用量 8 -rw-------. 1 root root 1604 8月 27 14:16 anaconda-ks.cfg -rw-------. 1 root root 1652 8月 27 15:39 initial-setup-ks.cfg [root@localhost ~]# ls -l -h 總用量 8.0K -rw-------. 1 root root 1.6K 8月 27 14:16 anaconda-ks.cfg -rw-------. 1 root root 1.7K 8月 27 15:39 initial-setup-ks.cfg
-
cat命令:連接文件并打印到標準輸出設備上,經常用來顯示文件內容;
使用格式:cat [OPTION]… [FILE]…
選項:
-n :由1開始給所有輸出的文本行編號;
-E :用$作為行結束符;
[root@localhost ~]# cat -n -E /etc/fstab 1 $ 2 #$ 3 # /etc/fstab$ 4 # Created by anaconda on Sat Aug 27 13:53:04 2016$ 5 #$ 6 # Accessible filesystems, by reference, are maintained under '/dev/disk'$ 7 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info$ 8 #$ 9 /dev/mapper/centos-root / xfs defaults 0 0$ 10 UUID=0532294a-f8c2-40a7-9d7b-5d84cc21cb92 /boot xfs defaults 0 0$ 11 /dev/mapper/centos-swap swap swap defaults 0 0$
-
tac命令:用于將文件已行為單位的反序輸出,即第一行最后顯示,最后一行先顯示;即顯示方式與cat相反;
-
file命令:用來探測給定文件的類型;
[root@localhost ~]# file /tmp/fstab /tmp/fstab: ASCII text
-
which命令:查找并顯示給定命令的絕對路徑;
使用格式:which [options] [–] programname […]
選項:
–skip-alias :忽略指定命令的別名;
[root@localhost ~]# which pwd /usr/bin/pwd
-
whereis命令:用來定位指令的二進制程序、源代碼文件和man手冊頁等相關文件的路徑;
使用格式:whereis [options] [-BMS directory… -f] name…
選項:
-b :只查找二進制文件;
-m :只查找說明文件;
[root@localhost ~]# whereis svn svn: /usr/bin/svn /usr/share/man/man1/svn.1.gz [root@localhost ~]# whereis -b svn svn: /usr/bin/svn [root@localhost ~]# whereis -m svn svn: /usr/share/man/man1/svn.1.gz
-
who命令:顯示目前登錄系統的用戶信息;
使用格式:who [OPTION]… [ FILE | ARG1 ARG2 ]
選項:
-b :顯示系統此次的啟動時間;
-u :顯示用戶登錄詳細信息;
-r :顯示用戶運行的級別;
* w命令同who命令,可顯示用戶正在執行的操作;
[root@localhost ~]# who -b 系統引導 2016-08-27 15:36 [root@localhost ~]# who -u centos :0 2016-08-27 15:40 ? 12176 (:0) root pts/0 2016-08-27 15:41 . 13263 (192.168.3.23) [root@localhost ~]# who -r 運行級別 5 2016-08-27 15:39 [root@localhost ~]# w 17:34:58 up 1:58, 2 users, load average: 0.00, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT centos :0 :0 15:40 ?xdm? 1:04 0.11s gdm-session-worker [pam/gdm-password] root pts/0 192.168.3.23 15:41 2.00s 0.14s 0.03s w
-
mkdir命令:用于創建目錄;
使用格式:mkdir [OPTION]… DIRECTORY…
選項:
-p :若所要建立目錄的上層目錄目前尚未建立,則會一并建立上層目錄;
-v :顯示創建目錄的詳細過程;
-m :建立目錄的同時設置目錄的權限;
示例:
[root@localhost ~]# mkdir -m 644 /tmp/text drw-r--r--. 2 root root 6 8月 27 19:49 text
-
rmdir命令:用于刪除空目錄;
使用格式:rmdir [OPTION]… DIRECTORY…
選項:
-p :刪除指定目錄后,若該目錄的上層目錄已變成空目錄,則將其一并刪除;
-v :顯示命令的詳細執行過程;
示例:
[root@localhost ~]# rmdir -pv /tmp/text/tset/log rmdir: 正在刪除目錄 "/tmp/text/tset/log" rmdir: 正在刪除目錄 "/tmp/text/tset" rmdir: 正在刪除目錄 "/tmp/text" rmdir: 正在刪除目錄 "/tmp" rmdir: 刪除目錄 "/tmp" 失敗: 設備或資源忙
-
tree命令:以樹狀圖列出目錄的內容;
使用格式:tree [OPTIONS] [directory …]
選項:
-L # :顯示#級目錄和文件
示例:
[root@localhost ~]# tree /tmp/a_c /tmp/a_c └── text
bash基礎特性介紹)(1)
命令的執行結果狀態返回
Linux下一條命令或一個進程執行完成會返回一個一個狀態碼。
0 :表示成功執行
非0 :表示執行過程中出現異常或非正常退出
在Shell腳本中 最后執行的一條命令將決定整個shell腳本的狀態. 此外 shell的內部命令exit也可以隨時終止shell腳本的執行,返回Shell腳本的狀態碼;當shell腳本執行結束前的最后一個命令是不帶參數的exit ,那么 shell腳本的最終返回值就是exit語句前一條語句的返回值,根據這個值可以判斷腳本成功執行與否。
$? 可以查看最后一條命令的返回值,該變量可以在shell 腳本中的任何地方使用。
[root@localhost ~]# pwd /root [root@localhost ~]# echo $? 0 [root@localhost ~]# pwwwd bash: pwwwd: 未找到命令... [root@localhost ~]# echo $? 127
命令行展開
在非引號內的內容,如果用花括號包括,而且里面用逗號分隔(至少包含一個逗號,可以是空內容),這樣花括號里的內容會被展開成用空格分開的一個列表,花括號前后可以緊隨前綴和后綴(前后綴都是可選的);
示例1:在tmp目錄下創建a_c、a_d、b_c、b_d四個目錄;
[root@localhost ~]# mkdir -pv /tmp/{a,b}_{c,d} mkdir: 已創建目錄 "/tmp/a_c" mkdir: 已創建目錄 "/tmp/a_d" mkdir: 已創建目錄 "/tmp/b_c" mkdir: 已創建目錄 "/tmp/b_d"
示例2:在tmp目錄下創建各種目錄:
mkdir: 已創建目錄 "/tmp/mylinux" mkdir: 已創建目錄 "/tmp/mylinux/bin" mkdir: 已創建目錄 "/tmp/mylinux/boot" mkdir: 已創建目錄 "/tmp/mylinux/boot/grub" mkdir: 已創建目錄 "/tmp/mylinux/dev" mkdir: 已創建目錄 "/tmp/mylinux/etc" mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d" mkdir: 已創建目錄 "/tmp/mylinux/etc/rc.d/init.d" mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig" mkdir: 已創建目錄 "/tmp/mylinux/etc/sysconfig/network-scripts" mkdir: 已創建目錄 "/tmp/mylinux/lib" mkdir: 已創建目錄 "/tmp/mylinux/lib/modules" mkdir: 已創建目錄 "/tmp/mylinux/lib64" mkdir: 已創建目錄 "/tmp/mylinux/proc" mkdir: 已創建目錄 "/tmp/mylinux/sbin" mkdir: 已創建目錄 "/tmp/mylinux/sys" mkdir: 已創建目錄 "/tmp/mylinux/tmp" mkdir: 已創建目錄 "/tmp/mylinux/usr" mkdir: 已創建目錄 "/tmp/mylinux/usr/local" mkdir: 已創建目錄 "/tmp/mylinux/usr/local/bin" mkdir: 已創建目錄 "/tmp/mylinux/usr/local/sbin" mkdir: 已創建目錄 "/tmp/mylinux/var" mkdir: 已創建目錄 "/tmp/mylinux/var/lock" mkdir: 已創建目錄 "/tmp/mylinux/var/log" mkdir: 已創建目錄 "/tmp/mylinux/var/run" [root@localhost ~]# tree /tmp/mylinux /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
元數據及命令引用
元數據介紹
任何文件系統中的數據分為數據和元數據。數據是指普通文件中的實際數據,而元數據指用來描述一個文件的特征的系統數據,諸如訪問權限、文件擁有者以及文件數據塊的分布信息(inode)等。
在集群文件系統中,分布信息包括文件在磁盤上的位置以及磁盤在集群中的位置。用戶需要操作一個文件必須首先得到它的元數據,才能定位到文件的位置并且得到文件的內容或相關屬性。
元數據管理方式
元數據管理有兩種方式:集中式管理和分布式管理。
集中式管理是指在系統中有一個節點專門司職元數據管理,所有元數據都存儲在該節點的存儲設備上。所有客戶端對文件的請求前,都要先對該元數據管理器請求元數據。
分布式管理是指將元數據存放在系統的任意節點并且能動態的遷移。對元數據管理的職責也分布到各個不同的節點上。
元數據信息及查看方法
文件的元數據信息包括文件類型,權限,屬主,屬組,文件大小,時間戳。
文件類型:
-
普通文件(regular file):就是一般存取的文件,由ls -al顯示出來的屬性中,第一個屬性為 [-],例如 [-rwxrwxrwx];
-
目錄文件(directory):就是目錄,第一個屬性為 [d],例如 [drwxrwxrwx];
-
連接文件(link):類似Windows下面的快捷方式。第一個屬性為 [l],例如 [lrwxrwxrwx];
-
設備與設備文件(device):與系統外設及存儲等相關的一些文件,通常都集中在 /dev目錄;
-
套接字文件(sockets):這類文件通常用在網絡數據連接??梢詥右粋€程序來監聽客戶端的要求,客戶端就可以通過套接字來進行數據通信。第一個屬性為 [s],最常在 /var/run目錄中看到這種文件類型;
-
管道文件(FIFO,pipe):FIFO也是一種特殊的文件類型,它主要的目的是,解決多個程序同時存取一個文件所造成的錯誤。FIFO是first-in-first-out(先進先出)的縮寫。第一個屬性為 [p];
權限:
-
讀權限:[r]
-
寫權限:[w]
-
執行權限:[x]
時間戳類型:通常是一個字符序列,唯一地標識某一刻的時間;
-
access time :最近訪問的時間;
-
modife time :最近更改的時間;
-
change time :最近改動的時間;
查看文件元數據方法:
-
ls命令:
ls -l :以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬連接數、所有者、組、文件大小和文件的最后修改時間等;
示例:
[root@localhost ~]# ls -l /tmp 總用量 156 drwxr-xr-x. 3 root root 17 8月 27 20:04 a_c drwxr-xr-x. 2 root root 6 8月 27 18:17 a_d -rw-r--r--. 1 root root 1723 8月 27 15:39 anaconda.log
-
stat命令:用于顯示文件的狀態信息;輸出的信息比ls命令的輸出信息要更詳細。
使用格式:stat FILE…
示例:
[root@localhost a_c]# stat /tmp/a_c 文件:"/tmp/a_c" 大?。?7 塊:0 IO 塊:4096 目錄 設備:fd00h/64768d Inode:26679 硬鏈接:3 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2016-08-27 20:05:42.077946648 +0800 最近更改:2016-08-27 20:04:51.633918078 +0800 最近改動:2016-08-27 20:04:51.633918078 +0800 創建時間:-
-
touch命令:有兩個功能:一是用于把已存在文件的時間標簽更新為系統當前的時間(默認方式),它們的數據將原封不動地保留下來;二是用來創建新的空文件。
使用格式:touch [OPTION]… FILE…
選項:
-c :不建立任何文件;
-a :只更改存取時間;
-m :只更該變動時間;
-t :使用指定的日期時間,而非現在的時間;
示例:
[root@localhost a_c]# touch -t 201311231123.30 /tmp/a_c [root@localhost a_c]# stat /tmp/a_c 文件:"/tmp/a_c" 大小:17 塊:0 IO 塊:4096 目錄 設備:fd00h/64768d Inode:26679 硬鏈接:3 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:unconfined_u:object_r:user_tmp_t:s0 最近訪問:2013-11-23 11:23:30.000000000 +0800 最近更改:2013-11-23 11:23:30.000000000 +0800 最近改動:2016-08-27 20:36:25.210605071 +0800 創建時間:-
命令別名的定義及引用
在管理和維護Linux系統的過程中,將會使用到大量命令,有一些很長的命令或用法經常被用到,重復而頻繁地輸入某個很長命令或用法是不可取的。這時可以使用命令別名功能將這個過程簡單化。
通常情況下,系統中已經定義了一些命令別名,要查看已經定義的命令別名,可以使用alias命令:
[root@localhost a_c]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
當我們使用命令cp(復制文件命令)時,系統會用cp -i代替命令中的cp。除此之外,還定義了ls命令及其使用的顏色、移動文件命令mv、刪除命令rm等;
用于設置系統別名的相關文件保存在/etc/profile.d/目錄中(系統別名目錄);
許多時候管理員都會按自己的使用習慣定義命令別名:
[root@localhost a_c]# alias mk='mkdir' [root@localhost a_c]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mk='mkdir' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
要取消已經定義好的命令別名,可以對別名使用unalias命令:
[root@localhost a_c]# unalias mk [root@localhost a_c]# alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
命令引用
引用就是指將字符串用引用符號括起來,以防止特殊字符被解釋為其他意義。引用時屏蔽特殊字符的特殊意義,而將其解釋為字面意義。
引用命令的執行結果可以使用兩種方式:
$(COMMAND)或`COMMAND`
示例:
[root@localhost a_c]# echo $? `cp /etc/fstab /tmp/a_d` 0
bash基礎特性介紹)(2)
文件名通配
當在使用命令行時,有很多時間都用來查找你所需要的文件,如ls、find等。 shell提供了一套完整的字符串模式匹配規則,或者稱之為元字符,當shell遇到上述字符時,就會把它們當作特殊字符,而不是文件名中的普通字符,這樣用戶就可以用它們來匹配相應的文件名,這可以稱為通配符。
通配符列表:
* :表示匹配任意長度的任意字符;
例:
[root@localhost ~]# ls in* initial-setup-ks.cfg
? :表示匹配任意單個字符;
例:
[root@localhost tmp]# ls -d a* ac a_c a_d anaconda.log [root@localhost tmp]# ls -d a? ac
[] :表示匹配指定范圍內任意單個字符;常用的有[a-z],[0-9],[A-Z]
常用字符集合:均只匹配單個
[[:space:]] :所有空白字符 ;
[[:punct:]] :所有標點符號;
[[:lower:]] :所有小寫字母;
[[:upper:]] :所以大寫字母;
[[:digit:]] :所有數字集合;
[[:alnum:]] :所以字母和數字;
[[:alpha:]] :所以字母;
[^] :匹配指定范圍外的任意字符;
示例1:顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄。
[root@localhost var]# ls 123edv _efn1234asdf l234d lib local lock log lsd2asd mail nis opt preserve run spool tmp yp [root@localhost var]# ls -d l*[0-9]*[[:lower:]] l234d lsd2asd
示例2:顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@localhost etc]# ls [0-9]*[^0-9] 231nsdjk.dsf 324asd
示例3:顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@localhost etc]# ls [^a-z][a-z]* 2djfio21 _bhds2147
date命令:可以用于創建以當前系統日期與時間為名的文件和目錄;
使用方法:date [options][+FORMAT] [MMDDhhmm[[CC]YY][.ss]]
示例:在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost tmp]# touch "tfile-$(date +%Y-%m-%d-%H-%M-%S)" [root@localhost tmp]# ls ks-script-XyUjMw tfile-2016-08-27-22-44-42 yum.log
復制匹配到的文件到指定目錄:
示例1:復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
[root@localhost etc]# ls -d p*[^0-9] pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python [root@localhost etc]# mkdir /tmp/mytest1 [root@localhost etc]# cp -r /etc/p*[^0-9] /tmp/mytest1 [root@localhost etc]# cd /tmp/mytest1 [root@localhost mytest1]# ls pam.d passwd passwd- pki plymouth pm popt.d postfix ppp prelink.conf.d printcap profile profile.d protocols python
示例2:復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest2目錄中。
[root@localhost ~]# ls -d /etc/*.d /etc/bash_completion.d /etc/depmod.d /etc/init.d /etc/modules-load.d /etc/prelink.conf.d /etc/rc2.d /etc/rc6.d /etc/statetab.d /etc/xinetd.d /etc/binfmt.d /etc/dnsmasq.d /etc/ld.so.conf.d /etc/my.cnf.d /etc/profile.d /etc/rc3.d /etc/rc.d /etc/sudoers.d /etc/yum.repos.d /etc/chkconfig.d /etc/dracut.conf.d /etc/logrotate.d /etc/pam.d /etc/rc0.d /etc/rc4.d /etc/rsyslog.d /etc/sysctl.d /etc/cron.d /etc/grub.d /etc/modprobe.d /etc/popt.d /etc/rc1.d /etc/rc5.d /etc/rwtab.d /etc/tmpfiles.d [root@localhost ~]# mkdir /tmp/mytest2 [root@localhost ~]# cp -r /etc/*.d /tmp/mytest2 [root@localhost ~]# ls /tmp/mytest2 bash_completion.d cron.d dracut.conf.d ld.so.conf.d modules-load.d popt.d rc0.d rc3.d rc6.d rwtab.d sysctl.d yum.repos.d binfmt.d depmod.d grub.d logrotate.d my.cnf.d prelink.conf.d rc1.d rc4.d rc.d statetab.d tmpfiles.d chkconfig.d dnsmasq.d init.d modprobe.d pam.d profile.d rc2.d rc5.d rsyslog.d sudoers.d xinetd.d
示例3:復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。
[root@localhost ~]# ls -d /etc/{l,m,n}*.conf /etc/ld.so.conf /etc/libaudit.conf /etc/libuser.conf /etc/locale.conf /etc/logrotate.conf /etc/man_db.conf /etc/mke2fs.conf /etc/nsswitch.conf [root@localhost ~]# mkdir /tmp/mytest3 [root@localhost ~]# cp -r /etc/{l,m,n}*.conf /tmp/mytest3 [root@localhost ~]# 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/38700
有沒有感覺排版不是很漂亮,看得出來在很認真的做了,加油
@馬哥教育:謝謝老師,下次會設計好排版