文件管理类命令:
文件类型
文件信息查看
用户和权限
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
alias ALIAS=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:
cp SRC DEST
SRC是文件:
如果DEST不存在:复制SRC为DEST
如果DEST存在:
如果DEST是文件:则覆盖
如果DEST是目录:将SRC复制进DEST中,并保持原名
cp SRC... DEST
如果SRC不止一个,则DEST必须得是目录;
cp SRC 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命令:
mv SRC... DEST
-i: interactive
rm命令:
-i
-f
--no-preserve-root
文本编辑命令:nano
全屏编辑器:
文本处理类命令:
wc: Word Count
-l: 仅显示行数
-w:
-c:
cut:
-d: 指定分隔符
-f: 指定要显示的字段
m: 第m列
m,n: 第m和n列
m-n: 第m到第n列
sort:
sort [option] FILE...
-f: 忽略字符大小写
-t: 指定分隔符
-k: 指定分隔之后要进行排序比较的字段
-n: 以数值大小进行排序
-u: 排序后去重
uniq:
-d
-u
-c: 统计行出现的次数
练习:
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