date: 日期和時間
date[options] [+FORMAT]
%s:時間戳計時法,從Unix元年(1970-01-01 00:00:00)到此刻所經過的秒數
%F,%D
%T
%Y
%m
%d
%H
%M
%S
date[MMDDhhmm[[CC]YY][.ss]]
Linux有兩個時鐘:系統時鐘和硬件時鐘
硬件時鐘:
系統時鐘:Linux
hwclock
-s:以硬件爲準
-w:以系統爲準
ntp:Network Time Protocol
通過網絡同步系統時間
C/S:Server, Client
ntpdateSERVER
who:登錄至當前系統的所有用戶
whoami:當前終端上登錄的用戶
which:顯示指定命令的完整路徑
--skip-alias:路過命令別名
FHS:
/bin,/sbin: 系統自身啓動和運行時可能會用戶的核心二進制命令
/lib:共享庫文件和內核模塊
/lib64:
/etc:配置文件
/usr:
/usr/bin,/usr/sbin: 系統運行中,用戶爲完成某些操作可能用到的命令
/usr/lib,/usr/lib64: 庫文件
/usr/share/man,/usr/share/doc
/dev:devices的簡寫,所有設備的設備文件都存放於此處;設備文件通常也稱爲特殊文件(僅有元數據,而沒有數據)
/proc:僞文件系統,內核和進程信息的虛擬文件系統接口
/sys:僞文件系統,硬件設備信息虛擬文件系統接口
/boot:系統引導加載時用到的靜態文件,內核和ramdisk(CentOS5:initrd, CentOS6:initramfs), grub(bootloader)
/home/USERNAME
/root
/mnt
/media
/srv:服務所用到的數據
/tmp:臨時文件存儲位置
/var:經常發生變化的文件
/var/log
/misc:備用目錄
/opt:第三方應用程序的安裝目錄
/usr/local:
/selinux
SecurityEnhanced Linux: 安全加強的Linux
應用程序的組成部分:
二進制程序
庫文件
配置文件
幫助文件
文件管理類命令:
文件類型
文件信息查看
用戶和權限
bash的一些特性
管道和重定向
文件本編輯器
正則表達式
文件查找
文件類型:
普通文件:-, f
目錄文件: d
符號鏈接文件:l
設備文件:
字符設備:c (線性設備)
塊設備:b (隨機設備)
命名管道:p
套接字文件:s (unix sock文件)
文件內容的類型:
file/path/to/somefile
目錄管理:
cd,pwd, ls
mkdir:make directory
-p:當指定的目標目錄的父目錄不存在時,則先創建之
rmdir:remove directory
-p:刪除單傳目錄路徑中各目錄
bash的工作特點:沒有返回信息通常最好的信息
每個命令執行結束後,會有一個“執行狀態返回值”,有效範圍0-255
0:執行成功
1-255:執行失敗
使用特殊變量$?可以獲取最近一條命令的狀態返回值
#echo $?
bash特性之一:命令行展開
~:用戶家目錄
~USERNAME:指定用戶的家目錄
{}:
/tmp/{x,y}
/tmp/x,/tmp/y
/tmp/{x,y}/z
/tmp/x/z,/tmp/y/z
創建/tmp/x/z,/tmp/y/z, /tmp/x/m, /tmp/y/m
練習1:創建/tmp/
a_b, c_b, a_d, c_d
練習2:創建/tmp/mylinux/
boot
grub
bin
sbin
etc
rc.d
init.d
sysconfig
networking-scripts
lib
modules
lib64
usr
local
bin
sbin
lib
lib64
bin
sbin
lib
lib64
proc
sys
dev
var
log
run
lock
tmp
#mkdir -pv/tmp/mylinux/{boot/grub,bin,sbin,etc/{rc.d/init.d,sysconfig/networking-scripts},lib/modules,lib64,usr/{bin,sbin,lib,lib64,local/{bin,sbin,lib,lib64}},proc,sys,dev,var/{log,run,lock},tmp}
如何安裝tree:
#cd /etc/yum.repos.d/
#wget http://172.16.0.1/centos6.5.repo
#rm CentOS-Base.repo
#yum -y install tree
ls命令:
list簡寫
ls[option] [file]
常用選項:
-l:long,長格式顯示文件的詳細屬性信息
drwxr-xr-x. 2 root root 4096 Feb 12 09:55 account
左起第一位:文件類型
後面的9位:權限,常稱爲mode
r:讀,Read
w:寫, Write
x:執行, eXcute
.:表示文件有隱藏屬性
lsattr命令可以查看
數字:此文件被硬鏈接的次數
屬主:owner, 文件的擁有者
屬組:group, 文件的所屬的組
4096: 文件大小,單位是字節
-h:human-readable,自動做單位換算
文件最近一次被修改的時間
文件名
-a:顯示所有文件
-d:通常和-l一起使用,用於僅顯示目錄自身屬性
-r:reverse, 逆序顯示
-R:recursive, 遞歸顯示,顯示子目錄中的內容
文件管理類的命令:
查看:cat, tac,head, tail, less, more
時間戳管理:touch
複製:cp
移動:mv
查看元數據屬性:stat
文本編輯器:nano,vi
stat:顯示文件的元數據
時間戳:
atime
mtime
ctime
touch:改變文件的atime和mtime
touch[option]... FILE
如果FILE不存在,默認會創建一個空文件
-a:僅改變atime
-m:僅改變mtime
-c:不創建空文件
-t[[CC]YY]MMDDhhmm[.ss]
文件查看類命令:
cat:連接並顯示文本文件內容
數據流:stream
-E:顯示行結束符
-n:顯示行號
tac:逆序顯示文件內容
Shift+PageUp/PageDown: 翻屏
分屏顯示:
more和 less
查看首部或尾部的部分內容:
head
tail
-n#: 指定的行數
tail-f
命令總結:shutdown,date, reboot, halt, poweroff, which, who, man, info, help, whatis, makewhatis,whoami, hwclock, ntpdate, touch, stat, file, cat, tac, more, less, head, tail,mkdir, rmdir, cd, pwd, ls, type, hash
回顧:
文件類型:
f,d, l, c, b, p, s
file
文件timestamp:
atime
mtime:數據的改變
ctime:元數據的改變
stat
ls-l
文本查看:cat,tac, more, less, head, tail
bash特性之命令別名和命令引用:
alias
aliasALIAS=COMMAND
別名與命令同名時:
絕對路徑
\COMMAND
生效範圍:命令行定義的別名,其生效範圍爲當前會話;
unalias[ALIAS]
-a:撤消所有別名
bash支持的引用:
''
""
``:引用一個命令的執行結果
$()
bash特性之文件名通配(globbing):
*:任意長度的任意字符
p*d,pad, pbd, pd
*ab*c
?:匹配任意單字符
[]:匹配指定範圍內的任意單字符
[abc],[a-z], [0-9], [0-9a-z]
[^]:匹配指定範圍以外的任意單字符
[^0-9a-z]
字符集合:
[:space:]: 所有空白字符
[:punct:]: 所有標點符號
[:lower:]:所有小寫字母
[:upper:]
[:digit:]
[:alnum:]
[:alpha:]
練習:
1、顯示/var目錄下所有以l開頭,以一個小字母結尾,且中間出現一位數字的文件或目錄;
#ls /var/l*[[:digit:]]*[[:lower:]]
2、顯示/etc目錄下,以任意一位數字開頭,且以非數字結尾的文件或目錄;
#ls -d /etc/[[:digit:]]*[^[:digit:]]
3、顯示/etc目錄下,以非字母開頭,後面跟了一個字母及其它任意長度字符的文件或目錄;
#ls -d /etc/[^[:alpha:]][[:alpha:]]*
練習:
1、在/tmp/mytest目錄中創建以testdir打頭,後跟當前日期和時間的空目錄,形如testdir-2014-07-03-09-15-33;
#mkdir -pv /tmp/mytest/testdir-$(date +%F-%H-%M-%S)
echo命令
echo[-neE] [arg ...]
\n
\t
\033[
單個數字:控制字體
3#:#是一個數字,3表示控制其前景色
4#:#是一個數字,4表示控制其背景色
組合使用,彼此間使用;分隔
m:是固定格式
\033[0m:控制符的功能至此結束
文件管理類命令:
複製:cp
移動:mv
刪除:rm
cp:
cpSRC DEST
SRC是文件:
如果DEST不存在:複製SRC爲DEST
如果DEST存在:
如果DEST是文件:則覆蓋
如果DEST是目錄:將SRC複製進DEST中,並保持原名
cpSRC... DEST
如果SRC不止一個,則DEST必須得是目錄;
cpSRC DEST
SRC是目錄:
可使用-r選項:
cp-r SRC... DEST
練習:複製/etc目錄下,所有以p開頭,以非數字結尾的文件或目錄至/tmp/mytest1目錄;
#mkdir /tmp/mytest1
#cp -r /etc/p*[^[:digit:]] /tmp/mytest1
練習:複製/etc/目錄下,所有以.d結尾的文件或目錄至/tmp/mytest2目錄;
#mkdir /tmp/mytest2
#cp -r /etc/*.d /tmp/mytest2
練習:複製/etc/目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄;
#mkdir /tmp/mytest3
#cp -r /etc/[lmn]*.conf /tmp/mytest3
-P:複製符號鏈接文件本身,而非其指向的目標文件
--preserve[=ATTR_LIST]
mode,ownership,timestamps
mode:權限
owership:屬主、屬組
timestamps:時間戳
-p:相當於 --preserve=mode,ownership,timestamps
-a:相當於 -dR--preserve=all
歸檔:archive
-i:interactive
-f:force
mv命令:
mvSRC... DEST
-i:interactive
rm命令:
-i
-f
--no-preserve-root
文本編輯命令:nano
全屏編輯器:
文本處理類命令:
wc: Word Count文本統計工具
-l:僅顯示行數
-w:單詞數
-c:字節數
[root@mail ~]# wc /etc/inittab
26 149 884 /etc/inittab
行數 單詞 字節 文件名
[root@mail ~]#
[root@mail ~]# wc -l /etc/inittab
26 /etc/inittab
[root@mail ~]# wc -w /etc/inittab
149 /etc/inittab
[root@mail ~]# wc -c /etc/inittab
884 /etc/inittab
[root@mail ~]#
cut:
-d:指定分隔符
-f:指定要顯示的字段
m:第m列
m,n:第m和n列
m-n:第m到第n列
[root@mail ~]# cat /etc/passwd | cut -d :-f1,3
[root@mail ~]# cat /etc/passwd | cut -d :-f2-5
sort: 排序
sort[option] FILE...
-f:忽略字符大小寫
-t:指定分隔符
-k:指定分隔之後要進行排序比較的字段
-n:以數值大小進行排序
-u:排序後去重
[root@mail ~]# sort /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
…………………………….
[root@mail ~]#
[root@mail ~]# sort -t : -k3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
usbmuxd:x:113:113:usbmuxduser:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
………………………….
說明:此比較不是比數值大小,是按字符比較的。
[root@mail ~]# sort -t : -k3 -n /etc/passwd (加上-n就是按數值大小比較)
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
………………………………..
[root@mail scot]# cat aa
hao are you!
i am dawei.
ok
hao are you!
[root@mail scot]# sort -u aa (-u去掉重複的行)
hao are you!
i am dawei.
ok
[root@mail scot]#
uniq: 可以去除排序過的文件中的重複行,因此uniq經常和sort合用。也就是說,爲了使uniq起作用,所有的重複行必須是相鄰的。
-d:僅顯示重複的行
-u:僅顯示不重複的行
-c:統計行出現的次數
排序之後刪除了重複行,同時在行首位置輸出該行重複的次數:
[root@mail scot]# sort aa | uniq -c
1
2 hao are you!
1 i am dawei.
1 ok
[root@mail scot]#
僅顯示存在重複的行,並在行首顯示該行重複的次數:
[root@mail scot]# sort aa | uniq -cd
2 hao are you!
[root@mail scot]#
僅顯示不重複的行:
[root@mail scot]# sort aa | uniq -u
i am dawei.
ok
[root@mail scot]#
練習:
1、顯示當前系統上每個用戶的shell;
#cut -d: -f1,7 /etc/passwd
2、顯示當前系統上所有用戶使用的各種shell;
#cut -d: -f7 /etc/passwd | sort | uniq
3、取出/etc/inittab文件的第7行;
#head -n 7 /etc/inittab | tail -n 1
4、取出/etc/passwd文件中第7個用戶的用戶名;
#head -n 7 /etc/passwd | tail -n 1 | cut -d: -f1
5、統計/etc目錄下以大小寫p開頭的文件的個數;
#ls -d /etc/[pP]* | wc –l
練習:
1、統計當前系統上所有已經登錄的用戶會話數;
#who | wc -l
2、列出當前系統上所有已經登錄的用戶的用戶名;
#who | cut -d' ' -f 1 | sort -u
3、取出最後登錄到當前系統的用戶的用戶名;
#who | sort -k 3,4 | cut -d' ' -f 1 | tail -1
4、取出當前系統上被使用的次數最多的shell;(從/etc/passwd中取)
#cut -d: -f7 /etc/passwd | sort | uniq -c | sort -n | tail -1
5、將/etc/passwd中第三個字段數據最大的後10個用戶的信息全改爲大寫字符後保存到/tmp/mypasswd.txt文件中;
#sort -t: -k3 -n /etc/passwd | tail | tr 'a-z' 'A-Z' > /tmp/mypasswd.txt
文本處理命令:tr
tr'SET1' 'SET2'
-d:刪除指定字符集合中的所有字符
[root@mail ~]# tr '12' 'ab' (把1改爲a,2改爲b)
123456 (輸入)
ab3456 (顯示的)
13525132
a35b5a3b
[root@mail ~]# tr 'a-z' 'A-Z' (把小寫改爲大寫)
asd
ASD
hjk
HJK
^C
[root@mail ~]#