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:字节数
[[email protected] ~]# wc /etc/inittab
26 149 884 /etc/inittab
行数 单词 字节 文件名
[[email protected] ~]#
[[email protected] ~]# wc -l /etc/inittab
26 /etc/inittab
[[email protected] ~]# wc -w /etc/inittab
149 /etc/inittab
[[email protected] ~]# wc -c /etc/inittab
884 /etc/inittab
[[email protected] ~]#
cut:
-d:指定分隔符
-f:指定要显示的字段
m:第m列
m,n:第m和n列
m-n:第m到第n列
[[email protected] ~]# cat /etc/passwd | cut -d :-f1,3
[[email protected] ~]# cat /etc/passwd | cut -d :-f2-5
sort: 排序
sort[option] FILE...
-f:忽略字符大小写
-t:指定分隔符
-k:指定分隔之后要进行排序比较的字段
-n:以数值大小进行排序
-u:排序后去重
[[email protected] ~]# 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
…………………………….
[[email protected] ~]#
[[email protected] ~]# 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
………………………….
说明:此比较不是比数值大小,是按字符比较的。
[[email protected] ~]# 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
………………………………..
[[email protected] scot]# cat aa
hao are you!
i am dawei.
ok
hao are you!
[[email protected] scot]# sort -u aa (-u去掉重复的行)
hao are you!
i am dawei.
ok
[[email protected] scot]#
uniq: 可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq起作用,所有的重复行必须是相邻的。
-d:仅显示重复的行
-u:仅显示不重复的行
-c:统计行出现的次数
排序之后删除了重复行,同时在行首位置输出该行重复的次数:
[[email protected] scot]# sort aa | uniq -c
1
2 hao are you!
1 i am dawei.
1 ok
[[email protected] scot]#
仅显示存在重复的行,并在行首显示该行重复的次数:
[[email protected] scot]# sort aa | uniq -cd
2 hao are you!
[[email protected] scot]#
仅显示不重复的行:
[[email protected] scot]# sort aa | uniq -u
i am dawei.
ok
[[email protected] 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:删除指定字符集合中的所有字符
[[email protected] ~]# tr ‘12‘ ‘ab‘ (把1改为a,2改为b)
123456 (输入)
ab3456 (显示的)
13525132
a35b5a3b
[[email protected] ~]# tr ‘a-z‘ ‘A-Z‘ (把小写改为大写)
asd
ASD
hjk
HJK
^C
[[email protected] ~]#