第二周 Linux基礎命令入門(二)
摘要
1、描述Linux上的文件管理類命令并詳解。
2、描述Bash的工作特性。
3、描述文件的元數據信息詳解。
4、描述命令別名的使用。
5、詳解文件通配符。
一、Linux上的文件管理類命令
[root@localhost etc]# ls -l
-rw-r--r--. 1 root root 0 10月 19 02:00 3axaxx
-rw-r--r--. 1 root root 0 10月 19 02:01 abcdefg
drwxr-xr-x. 3 root root 97 10月 15 17:51 abrt
lrwxrwxrwx. 1 root root 56 10月 15 17:51 favicon.png -> /usr/share/icons/hicolor
/16x16/apps/fedora-logo-icon.png
Linux系統上的文件類型:
- : 常規文件,即f
d :directory 即目錄文件
b :block device 映射塊設備文件 ,支持以"block"為單位,支持隨機訪問
c: character device 字符設備文件,支持以“character”為單位,支持線性訪問(有次序得訪問)
ls - l /dev crw-rw----. 1 root video 10, 175 11月 10 15:48 agpgart
major number 主設備號,用表示設備類型,進而確定要加載的驅動程序
minor number 次設備號,用于表示同一類型中的不同設備
二者用,來區分
l: symbolic link 符號鏈接文件(類似windows的快捷方式,指向另一文件的路徑?;蚍Q為軟連接文件)
p:pipe 命名管道
s:socket 套接字文件,實現多個進程之間進行通信,多用于提供服務
二、Bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容
Bash的工作特性之命令執行狀態返回值:
命令的執行狀態結果
1) bash通過狀態返回值來輸出此結果
成功:0 失?。?-255
命令執行完成之后,其狀態返回值保存于bash特殊變量 $? 中 。$?只能獲取當前命令的結果
[root@localhost etc]# echo $?
0
2)引用命令的執行結果:
$(COMMAND) 或者 `COMMAND`
[root@localhost etc]# mkdir $(date +%T)
[root@localhost etc]# ls
12:53:45 hosts.allow rc0.d
命令行展開所涉及的內容:
1)cp:copy 文件復制功能
源文件:目標文件
單源復制 cp [OPTION]... [-T] SOURCE DEST
如果dest路徑不存在,則復制原內容,粘貼創建該目錄dest內
如果dest存在,1)dest是非目錄文件,則會復制目標文件 2)dest是目錄文件,則先在dest目錄下創建一個與源文件同名的文件,并復制過來
多源復制 cp [OPTION]... SOURCE... DIRECTORY
cp [OPTION]... -t DIRECTORY SOURCE...
如果dest不存在,返回錯誤
如果dest存在,分別復制每個文件到目標目錄中,并保持原名
常用選項:
-i 交互式復制 覆蓋之前提醒客戶確認
-f 強制性覆蓋目標文件
-r 遞歸復制目錄
-d 復制符號鏈接文件本身,而非其指向的源文件本身
--preserv=
mode 權限
ownership 屬主和屬組
timestamps 時間戳
context 安全標簽
links 符號鏈接
xattr:擴展屬性
all 上述所有屬性
-a -dr --preserve=all archive 用于實現歸檔,備份使用
2)mv: move 移動
常用選項
-i 交互式
-f force
3)rm:remove 刪除文件(建議move到一個單獨的文件夾,作用類似回收站)
-i
-r 刪除命令,每個文件都會確認一遍
-rf 強制刪除
危險操作,勿操作?。?! rm-rf /或者rm -rf /*
4)目錄管理類的命令:
mkdir , rmdir
mkdir make DIRECTORY 創建目錄
mkdir [OPTION]... DIRECTORY...
注意:路徑基名方為命令的作用對象,基名之前的路徑必須存在。
-p 自動按需創建父目錄
-v verbose 顯示詳細過程
-m MODE 直接給定權限
rmdir rmdir [OPTION]... DIRECTORY...
刪除文件下的空目錄,如果刪除為非空目錄,則失敗,需要先刪除里面內容再刪除外部
-p 刪除某目錄后,如果其父目錄為空,則一并刪除之
-v 顯示過程
pwd:printing woking directory 顯示工作目錄
5)cd: change directory 切換目錄
cd [/PATH/TO/SOMENDIR]
只輸入 cd 切換回家目錄
bash中,~也表示家目錄
cd ~ 切換回自己的家目錄
輸入cd ~USERNAME ;切換至指定用戶的家目錄,只有管理員可以切換至其他用戶家目錄
cd - 在上一次所在目錄與當前目錄來回切換
$PWD:當前工作目錄
$OLDPWD:上一次的工作目錄
6)ls:list 列出指定目錄下的內容
ls [OPTION]... [FILE]...
-a 顯示所有文件,包括隱藏文件
-A:顯示除了。和。。之外的所有文件,包括隱藏文件
ls -A /etc
-l --long 長格式列表,顯示文件的詳細屬性信息:
/]# ls -l /etc
-rw-r--r--. 1 root root 16 10月 10 14:35 adjtime
-r :文件類型,- ,d,b,c,l,s,p
-rw-r--r--.
rw- 文件屬主權限
r-- 文件屬組權限
r-- 其他用戶(非屬主、屬組)的權限
1:數字表示文件被硬鏈接的次數,
root 第一個root 文件的屬主
root 第二個root 文件的屬組
16: 數字表示文件大小,單位是字節
16 10月 10 14:35 文件最近一次修改時間
adjtime 文件名
-h 對文件大小單位換算,換算后的結果非精確值
-ld 查看文件本身的信息,而非其自身內部的文件內容
/]# ls -ld /etc
drwxr-xr-x. 74 root root 8192 10月 12 02:24 /etc
-r或者-lr 對文件排序呈降序排序
-R recursive 遞歸顯示
7) cat: concatenate file 連接文件 文件正序顯示
文本文件查看工具
cat /etc/fstab
cat后可以跟多個路徑文件
-n :顯示的文件內容進行統一編號
cat -n [COMMAND] [COMMAND]
-E:顯示行結束符$
8) tac 文本 逆序顯示
文本文件查看工具
tac /etc/fstab
tac后可以跟多個路徑文件
-n :顯示的文件內容進行統一編號
tac -n [COMMAND] [COMMAND]
-E:顯示行結束符$
9)file:查看文件內容類型
file [FILE].................
10)echo :回顯命令
echo [SHORT-OPTION]... [STRING]...
STRING 可以使用引號,單引號和雙引號均可用
單引號:強引用,變量引用不執行替換
[root@localhost /]# echo '$SHELL'
$SHELL
雙引號: 弱引用,變量引用會被替換
[root@localhost /]# echo "$SHELL"
/bin/bash
[root@localhost /]# echo "DAA"
DAA
-n 輸出后不自動換行操作
[root@localhost /]# echo -n "DAA"
DAA[root@localhost /]#
-e 讓轉義符生效 \n顯示換行 \t:制表符,類似增加新字段
[root@localhost /]# echo -e "D \nAA"
D
AA
三、完成以下練習(1)
命令行展開
~ :自動展開為用戶的家目錄,或指定的用戶的家目錄
{ }:可承載一個以逗號分隔的路徑列表,并能夠將其展開為多個路徑
(1)創建/tmp目錄下的:a_c, a_d, b_c, b_d
[root@localhost tmp]# mkdir -pv /tmp/{a,b}_{c,d}
mkdir: 已創建目錄 "/tmp/a_c"
mkdir: 已創建目錄 "/tmp/a_d"
mkdir: 已創建目錄 "/tmp/b_c"
mkdir: 已創建目錄 "/tmp/b_d"
[root@localhost tmp]# ls
a_c a_d b_c b_d
創建/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
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
[root@localhost tmp]# mkdir -pv /tmp/mylinux/{bin,boot/grub,dev,etc/{rc.d/init.d,syscon
fig/{network-scripts}},lib/{modules},lib64,proc,sbin,sys,tmp,usr/{local/{bin,sbin}},var/{lo_{ck,g},run}}
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/lo_ck"
mkdir: 已創建目錄 "/tmp/mylinux/var/lo_g"
mkdir: 已創建目錄 "/tmp/mylinux/var/run"
[root@localhost tmp]# cd mylinux/
[root@localhost mylinux]# ls
bin boot dev etc lib lib64 proc sbin sys tmp usr var
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
四、文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
1、文件的元數據
文件的元數據包括:名稱,路徑,大小,inode號,文件類型,硬鏈接數,權限,時間戳等
stat [option] file…
file 文件名稱
size 文件大小 單位K
blocks 所占塊的個數
IO blocks 單塊的大小
device 設備標識
inode 節點id,文件的元數據保存在磁盤上的inode區域中,每一個文件都有一個對應的inode號碼
links 硬鏈接數,一個文件的硬鏈接數為N,表示該文件在磁盤上有N個與其對應的inode號碼相同的文件
access 權限,文件的權限包括r(讀),w(寫),x(執行),suid,sgid,sbit這幾種權限,它們可以分別對應到文件的屬主、屬組和其他人上
uid 屬主信息
gid 屬組信息
access 最后一次訪問時間,文件被訪問,即文件在使用cat, more, less, head等命令查看,或者cp等命令將其作為源文件復制給其他路徑下,或者使用grep命令進行匹配查找等操作時,atime都會改變
modify 最后一次修改時間,指文件內容被修改時,mtime會改變
change 最后一次更正時間,指文件的元數據被改變,例如chmod, chown, mv等命令改變了文件權限名稱路徑等信息,ln命令增加了文件的硬鏈接等操作都會改變ctime
[root@localhost mylinux]# stat -L /tmp/mylinux/
文件:"/tmp/mylinux/"
大?。?span id="tzrt9vl" class="hljs-number">4096 塊:8 IO 塊:4096 目錄
設備:fd00h/64768d Inode:202724745 硬鏈接:14
權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2017-11-29 14:28:11.973040042 +0800
最近更改:2017-11-29 14:28:02.480300238 +0800
最近改動:2017-11-29 14:28:02.480300238 +0800
創建時間:-
使用touch修改時間戳
用法:touch [選項]... 文件...
參數:
-a 只更改訪問時間
-c, --no-create 不創建任何文件
-d, --date=字符串 使用指定字符串表示時間而非當前時間
-f (忽略)
-h, --no-dereference 會影響符號鏈接本身,而非符號鏈接所指示的目的地
(當系統支持更改符號鏈接的所有者時,此選項才有用)
-m 只更改修改時間
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
--help 顯示此幫助信息并退出
--version 顯示版本信息并退出
請注意,-d 和-t 選項可接受不同的時間/日期格式。
[root@localhost mylinux]# touch -m -t 021211221133.00 /tmp/mylinux/
[root@localhost mylinux]# stat -L /tmp/mylinux/
文件:"/tmp/mylinux/"
大?。?span id="bpl5vhj" class="hljs-number">4096 塊:8 IO 塊:4096 目錄
設備:fd00h/64768d Inode:202724745 硬鏈接:14
權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
環境:unconfined_u:object_r:user_tmp_t:s0
最近訪問:2017-11-29 16:13:38.263642314 +0800
最近更改:0212-11-22 11:33:00.000000000 +0805
最近改動:2017-11-29 16:14:10.970745835 +0800
創建時間:-
五、命令的別名
命令別名:
獲取所有可用別名的定義:
~]#alias
定義別名
~]#alias NAME=‘COMMAND’
注意:只對當前shell進程設置有效
/]# alias cls=clear
撤銷別名
/]# cls
~]#unalias NAME
which
顯示文件完成路徑 which - shows the full path of (shell) commands.
which [options] [--] programname [...]
~]# which which
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/alias
/usr/bin/which
--COMMAND-alias 忽略別名
whereis
顯示文件的路徑,手冊頁,
-b 只看二進制文件路徑
-m 只看使用手冊文件路徑
who
查看登錄當前用戶的相關信息
-b 顯示系統此次啟動時間
-d 顯示此次死亡進程
-l 顯示登錄進程
-u 比who多顯示端口號
-r 運行級別
w
查看當前用戶和其現階段工作內容
六、詳解文件通配符并完成以下練習
詳解文件通配符
globbing :文件名通配
匹配模式:元字符
*:匹配任意長度的任意字符
? :匹配任意單個字符
pa? ??pa p?a p?a?
[ ]: 匹配指定范圍內的任意單個字符
有幾種特殊格式:
[a-z] [A-Z] [0-9] [a-z0-9] [abcxyz]
pa[0-9][a-z] pa2[0-9][0-9]
[[:upper:]] 只匹配大寫字母
[[:lower:]] 只匹配小寫字母
[[:alpha:]] 只匹配所有字母
[[:digit:]] 只匹配所有數字
[[:alnum:]] 只匹配所有字母和數字
[[:space:]] 所有空白字符 touch p \空格 a
[[:punct:]] 匹配所有符號
[^] :匹配指定范圍外的單個字符(非??!)
[^[:upper:]]
[^0-9]
1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其它字符)的文件或目錄
[root@localhost var]# ls -d l*[[:alnum:]]
lib local local01 local02 lock log
2、顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
[root@localhost var]# ls -d [0-9]*[^0-9]
0_abcc 0_bafaf 2_abcc 2_bafaf
3、顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其它任意長度任意字符的文件或目錄。
[root@localhost etc]# ls -d /etc/[^[:alpha:]][a-zA-Z]*
/etc/3axaxx /etc/,avc23
4、在/tmp目錄下創建以tfile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost etc]# touch /tmp/tfile-$(date +"%Y-%m-%d-%H-%M-%S")
[root@localhost etc]# ls /tmp
a_c a_d b_c b_d magedu1.com mylinux tfile-2017-11-29-18-08-27
5、復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest2目錄中。
[root@localhost mytest2]# cp -a /etc/p*[^[:digit:]] /tmp/mytest2/
[root@localhost mytest2]# ls
pam.d passwd- pki pm postfix prelink.conf.d profile protocols
passwd pinforc plymouth popt.d ppp printcap profile.d
6、復制/etc目錄下所有以.d結尾的文件或目錄至/tmp/mytest1目錄中。
[root@localhost mytest2]# mkdir -pv /tmp/mytest1
mkdir: 已創建目錄 "/tmp/mytest1"
[root@localhost ~]# cp -a /etc/*.d /tmp/mytest1
[root@localhost ~]# ls /tmp/mytest1
bash_completion.d gdbinit.d modules-load.d rc1.d rsyslog.d usb_modeswitch.d
binfmt.d grub.d my.cnf.d rc2.d rwtab.d xinetd.d
7、復制/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中
[root@localhost ~]# mkdir -pv /tmp/mytest3
mkdir: 已創建目錄 "/tmp/mytest3"
[root@localhost ~]# cp /etc/[lmn]*.conf /tmp/mytest3
[root@localhost ~]# ls /tmp/mytest3
ld.so.conf libuser.conf logrotate.conf mke2fs.conf nsswitch.conf
libaudit.conf locale.conf man_db.conf named.conf
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/90353