一、文件相关
1. 文件操作
>
创建空文件、覆盖文件内容、标准输出重定向
>>
创建空文件(更为安全的做法)、标准输出追加重定向
basename
去掉路径,只取文件名
bash -n
检查脚本中的语法错误
bash -x
调试执行,查看执行过程
cd
默认切换到用户家目录
cd /
切换到根目录cd ~
切换到家目录,也可以指定其他用户家目录cd .
切换到当前目录cd ..
切换到父目录cd -
切换到系统所记录上次所在的目录
chattr
设定文件特定属性
chattr +/-i
不能删除、改名、更改(包括管理员)chattr +/-a
只能追加内容(包括管理员)chattr +/-A
不修改读时间
chgrp
修改文件所有组
chgrp -R
递归修改
chmod
修改文件权限
chmod u+rwx,g-rwx,o=rwx FILE
权限法修改文件权限,=后不带权限为清空权限chmod a+/-/=rwx
数字法修改文件权限,修改所有人对文件的权限,a可缺省chmod --reference=SOURCE_FILE DIRECTORY_FILE
参考指定文件的权限设置其他文件的权限chmod 777 FILE
数字法修改文件权限chmod -R
递归修改chmod -R +X
只对目录递归加执行权限chmod u+/-s
模式法授权SUID权限chmod 4???
数字法授权SUID权限chmod u+/-s
模式法授权SUID权限chmod 4???
数字法授权SUID权限chmod g+/-s
模式法授权SGID权限chmod 2???
数字法授权SGID权限chmod o+/-t
模式法授权Sticky权限chmod 1???
数字法授权Sticky权限
chown
修改文件所有者
chown -R
递归修改chown USERNAME:GROUP
修改文件所有者和所有组chown USERNAME.GROUP
修改文件所有者和所有组chown :GROUP
修改文件所有组chown USERNAME:
修改文件所有者和所有组
cp
复制文件或目录
cp -i
提示是否覆盖cp -r
递归复制目录及内部的所有内容cp -R
递归复制目录及内部的所有内容\cp
原始cp,直接覆盖不提示cp -f
先删除目标文件,再复制源文件cp -d
不复制原文件,只复制链接cp -p
保留权限、所有者和时间属性,等同于--preserv=mode,ownership,timestampcp -a
归档,相当于-dR --preserv=all,递归并保留链接及其他所有属性cp -v
显示过程cp -u
只复制源比目标更新文件或目标不存在的文件cp --backup=
目标存在,覆盖前先备份加数字后缀cp Source_File{,.bak}
配合文件通配符备份文件
dd
可用于检测系统读写速度。
读取、转换并输出数据
if=
从指定文件读数据of=
指定输出文件bs=
指定块大小count=
指定块数量
dirname
只取路径,去掉文件名
echo $OLDPWD
查看系统所记录上次所在的目录
echo $PWD
查看系统所记录当前所在的目录
echo file{1..999999999} | xargs rm
带着大量参数删除文件
echo File{1..999999999} | xargs touch
带着大量参数创建文件
exec Number<>File
手工指定文件描述符
exec Number<>&-
删除指定文件描述符
file
判断文件类型
file -b
列出文件辨识结果时,不显示文件名称file -f File_List.txt
批量判断文件列表中的文件的类型file -F
指定分隔符,默认为:file -L
查看对应软链接对应文件的文件类型
find
实时查找文件
find -maxdepth
指定最大搜索目录深度
find -mindepth
指定最小搜索目录深度
find -name
指定文件名称(支持通配符)
find -iname
忽略大小写
find -num
搜索指定节点编号的文件
find -samefile
搜索相同节点编号的文件(硬链接)
find -links
搜索指定链接数的文件
find -regex
使用正则表达式
find -ls
搜索后显示文件详细属性
find -user
搜索指定所有者的文件
find -group
搜索指定所有组的文件
find -uid
搜索指定UID号的所有者的文件
find -gid
搜索指定GID号的所有者的文件
find -nouser
搜索没有所有者的文件
find -nogroup
搜索没有所有组的文件
find -a
与(默认)
find -o
或
find -not、find !
非
find -type
指定文件类型搜索(f:普通文件、d:目录文件、l:符号链接文件、s:套接字文件、b:块设备文件、c:字符设备文件、p:管道文件)
find -empty
搜索空文件
find -path -a prune
过滤指定目录
find -size +/-#
默认搜索 (#-1, #] 的文件(k、M、G、c)、+:(#, ∞)、-:[0, #-1)
find -atime/mtime/ctime +-#
默认以天为单位搜索 [#, #+1) 的文件、+:(#+1, ∞)、-:[0, #)
find -amin/mmin/cmin +-#
默认以分钟为单位搜索 [#, #+1) 的文件、+:(#+1, ∞)、-:[0, #)
find -perm /-MODE
默认根据权限精确搜索文件、/:U或G或O、-:并集(权限转换成2进制,匹配为1的位,不匹配为0的位)
find -print
默认的处理动作,显示到屏幕
find -ls
显示查找到的文件的长格式信息
find -delete
删除查找到的文件
find -fls
把查找到的所有文件的长格式信息保存到指定文件中
find -ok CMD {} \;
交互式对查找到的文件执行CMD命令,{}:用于引用查找到的文件名称自身
find -exec CMD {} \;
批量对查找到的文件执行CMD命令(不询问),{}:用于引用查找到的文件名称自身
getfacl
查看指定文件或目录的访问控制列表设置
getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件getfacl -R FILE > ACL.txt
备份ACLgetfacl -p
不去除路径前的/
l*
只显示当前目录的所有隐藏文件(包括子目录和父目录)
ll
查看文件信息
ll --time=
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)ll /proc/$$fd
查看被打开的文件所对应的文件描述符
ln
创建硬链接
ln -s
创建软链接(符号链接)
locate
非实时查找文件(数据库查找)
locate -i
忽略大小写
locate -n
只列举前N个匹配项目
locate -r
使用正则表达式
lpr
将一个或多个文件放入打印队列等待打印
lpr -P
将资料送至指定的打印机
ls
查看目录中文件列表
ls -a
显示所有文件(包括隐藏文件)ls -A
显示所有文件(不包括.和..)ls -R
目录递归ls -l
显示额外的信息ls -ld
显示指定目录额外的信息ls -1
按照数字、字母顺序分行显示ls -S
从大到小排序显示ls -r
倒序显示ls -t
按文件的mtime(修改时间)从新到旧排序显示ls -u
配合-t选项,按照atime从新到旧排序显示ls -c
配合-t选项,按照ctime从新到旧排序显示ls -U
按目录存放顺序显示ls -X
按文件后缀排序ls -d */
只显示目录下的文件夹,不显示文件ls -d .*
只显示当前目录的所有隐藏文件(包括子目录和父目录)ls -R .[^.]*
递归查看当前目录下所有隐藏文件(包括子目录内)ls -d .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)ls -a .[^.]*
只显示当前目录下的隐藏文件(不包括父目录)ls -i
查看文件节点编号(inode)
lsattr
显示文件特定属性
lsof | grep deleted
查看当前系统中被删除但还未释放空间的文件
mkdir
创建目录
mkdir -p
存在不报错,自动创建所需的各目录mkdir -v
显示创建过程mkdir -m
指定权限
mv
移动或重命名文件、目录
mv -i
交互式操作mv -f
强制mv -t
先指定目的目录,再指定源
rmdir
删除空目录
rmdir -p
递归删除父空目录rmdir -v
显示删除过程
pwd
查看当前工作目录
pwd -P
显示真实路径
readlink
查看软链接对应的原始文件
rename
批量修改文件名
rename Name_Old Name_New Name
Name_New可以为空,表示删除旧文件名的参数。
rm
删除文件、目录
rm -f
强制删除rm -i
交互式rm -r
递归rm -rf /*
删除根目录下所有数据rm -rf / --no-preserve-root
删除根目录下所有数据
setfacl
访问控制列表
setfacl -m u:USERNAME:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定用户的访问权限,如果rwx为空或为0则代表没有访问权限setfacl -m g:GROUP:rwx FILE/DIRECTORY
为多用户或组的文件和目录赋予指定组的访问权限,如果rwx为空或为0则代表没有访问权限setfacl -x u:USERNAME FILE/DIRECTORY
删除指定用户对文件和目录的访问权限setfacl -x g:GROUP FILE/DIRECTORY
删除指定组对文件和目录的访问权限setfacl -m mask::rwx FILE/DIRECTORY
设置除所有者和other的之外的人和组的最大权限setfacl -m d:u:USERNAME/g:GROUP:rwx DIRECTORY
设置指定目录下新建文件的默认ACL权限setfacl -b FILE/DIRECTORY
清空指定文件、目录所有ACL权限setfacl -k FILE/DIRECTORY
删除指定文件、目录默认ACL权限setfacl -R DIRECTORY
递归设置ACL权限setfacl -M ACL_FILE.txt FILE/DIRECTORY
调用ACL文件设置文件、目录的访问权限setfacl -X ACL_FILE.txt FILE/DIRECTORY
调用ACL文件取消设置文件、目录的访问权限getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件setfacl --set u::rwx,u:USERNAME,g::rwx,o::rwx- FILE
清空文件原有ACL权限,再用新ACL权限替换setfacl -R --set-file=acl.txt FILE
恢复ACLsetfacl --restore acl.txt FILE
恢复ACL
stat
显示文件的inode内容
stat -c
使用特殊格式代替默认
stat -c %a
以数字法显示文件权限
set -C
禁止将内容覆盖已有文件,但可追加
set +C
允许覆盖
shred
彻底删除文件数据
shred -z
以0进行覆盖shred -n
指定次数shred -v
查看过程shred -u
处理完毕后删除
touch
创建空文件或刷新文件时间
touch -a
仅刷新atime和ctimetouch -m
仅刷新mtime和ctimetouch -t
指定atime和mtime的时间戳touch -c
如果文件不存在,则不创建
tree
显示目录树
tree -L
指定显示的层级tree -d
只显示目录tree -P
匹配正则表达式
umask
设置、显示文件、目录初始权限(取消对应的权限),普通用户默认为0022,管理员默认为0002
umask u=rwx,g=rwx=o=rwx
以权限法设置初始权限umask -p
显示初始权限(带命令)umask -S
以权限法显示初始权限
updatedb
更新locate命令数据库
2. 文本字符
2>
标准错误输出重定向
2>>
标准错误输出追加重定向
>|
强制覆盖
&>
把所有输出重定向到文件
&>>
把所有输出重定向追加到文件
<
标准输入重定向
<<终止符
多行重导向
|
管道符,把一个命令的标准输出发送给另一个命令作为标准输入
|&
把一个命令的标准输出和标准错误发送给另一个命令,CentOS5及以前的版本不支持-
将管道符前的命令传送给管道符后的命令,直接代替前一个命令的标准输出
cat
查看文件内容
cat -A
展开所有cat -n
加行号(忽略空行)
cat -b
加行号(不忽略空行)
cat -s
压缩连续的空行成一行
cat -A
显示所有控制符
cat -E
显示行结束符$(回车)
chfn
添加/etc/passwd中指定用户的描述信息
cut
按列抽取文本内容
cut -d
指定分隔符,默认为Tab
cut -f
指定列(以,分散,以-连续)
cut -c n-N
按字符为单位切割
cut --out-delimiter=
指定输出分隔符
diff
比较两个文件之间的区别
diff -u
以合并的方式来显示文件内容的不同,配合path命令可以实现文件内容恢复
echo
显示字符
echo -e
启用\字符的解释功能
echo $RANDOM
生成0~32767的随机数
egrep
支持扩展正则表达式
fgrep
不支持正则表达式
finger
查看/etc/passwd中指定用户的描述信息
gedit
图形化文本编辑工具
getent group
查看/etc/group内容
getent group GROUP
只显示/etc/group中指定组的行
getent gshadow
查看/etc/gshadow内容
getent gshadow GROUP
只显示/etc/gshadow中指定组的行
getent passwd
查看/etc/passwd内容
getent passwd USERNAME
只显示/etc/passwd中指定用户的行
getent shadow
查看/etc/shadow内容
getent shadow USERNAME
只显示/etc/shadown中指定用户的行
grep
显示匹配到的字符串的行
grep --color=auto
高亮显示
grep -v
只显示不包含匹配到的字符串的行
grep -i
忽略大小写
grep -n
显示匹配的行号
grep -c
统计匹配的行数
grep -o
只显示匹配到的字符串
grep -q
静默模式,不输出任何信息
grep -A
包含匹配到的字符串的行的后几行
grep -B
包含匹配到的字符串的行的前几行
grep -C
包含匹配到的字符串的行的前后各几行
grep -e PATTERN_1 -e PATTERN_2 -e PATTERN_N
实现多个选项间的逻辑or关系
grep -w
匹配整个单词
grep -E
支持扩展正则表达式
grep -F
不支持正则表达式
grep -f
指定规则文件
grpck
检查/etc/group内容和格式的完整性并补充说明
head
显示文本内容前10行(默认)
head -n
指定前多少行
head -c
指定前多少个字节
hexdump
查看2进制文件的16进制编码
hexdump -C
每个字节显示为16进制和相应的ASCII字符
less
分页查看文件或STDIN输出
/
搜索文本内容
n/N跳到下/上一个匹配内容
mail
收邮件
mail -s SUBJECT USER
指定邮件的主题.
结束邮件正文编辑
more
分页查看文本内容
more -d
显示翻页及退出提示
rev
镜像查看文本内容
nano
字符文本编辑工具
openssl rand -base64 NUMBER
生成指定个数的随机字符
paste
合并多个文件同行号的列到一行
paste -s
所有行合成一行显示
paste -d指定分隔符,默认为Tab
patch
修补文件
patch -b
备份文件
pwck
检查/etc/passwd内容和格式的完整性并补充说明
pwconv
开启用户的投影密码,/etc/passwd不显示用户密码
pwunconv
关闭用户投影密码,把用户密码从/etc/shadow,重回存到/etc/passwd
reset
重置字符,遇到乱码时可以执行该命令重置系统字符
sed 'script'
行编辑器(script格式:'地址命令')
#
指定行
$
最后一行
/PATTERN/
被模式匹配的行
#,#、#,+#、/BEGIN_PATTERN/,/END_PATTERN/、#,/END_PATTERN/
指定地址范围
#~#
步进(从指定行开始每次递增行数)
=
显示模式空间中匹配的行的行号
!
模式空间中匹配行取反处理
a [\]
在指定行的后一行开始追加文本内容,支持\n实现多行追加
i [\]
在指定行的前一行开始追加文本内容
c [\]
替换指定行
w
保存模式匹配的行至指定文件
r
读取指定文件的文本至模式空间中匹配到的行后
d
删除模式空间匹配的行,并立即启用下一轮循环
p
打印当前模式空间内容,追加到默认输出之后
s///
单次搜索替换
s///g
全局搜索替换
s///p
显示替换成功的行
s///w
将替换成功的行保存至目标文件中
sed -n
不输出模式空间内容到屏幕,即不自动打印
sed -r
扩展正则表达式
sed -e
多点编辑(单次脚本多次处理)
sed -f SCRIPT_FILE
从指定文件中读取编辑脚本
sed -i.bak
备份文件并原处编辑
seq
生成从n到N的数字,默认从1开始
seq -s
指定分隔符,默认为回车
sort
文本排序,默认以字符排序
sort -t
指定分隔符
sort -k
指定列
sort -n
按数字大小排序
sort -r
倒序
sort -f
忽略大小写
sort -u
压缩重复的行
sort -R
随机排序
tac
倒序查看文本内容
tail
显示文本最后10行内容(默认)
tail -c
指定获取最后多少个字节
tail -n
指定获取最后多少行
tail -f
跟踪显示文件新追加的内容
tail -F
跟踪文件名
tailf
当文件不增长时并不访问文件,类似tail -f
tee
重定向到多个目标
tee -a
追加
tr
转换字符
tr -c、tr -C
取反tr -d
删除tr -s
压缩连续重复的字符tr -t
使字符串1的长度和字符串2的长度一致tr --help
帮助
uniq
合并相重复且相邻的行
uniq -c
统计重复且相邻的行数
uniq -u
仅显示不曾重复且相邻的行
uniq -d
仅显示重复且相邻的行
vi
文本编辑器
vigr
带语法检查功能编辑/etc/group
vim
文本编辑器
vim +N
打开文件后,光标处于第N行
vim + /PATTERN
打开文件后,光标处于第一个被模式匹配到的行首
vim +b
二进制方式打开文件
vim -d
比较多个文件
vim -m
只读方式打开文件
vim -o
单个或多个文件水平分割
vim -O
单个或多个文件垂直分割
vipw
带语法检查功能编辑/etc/passwd
wc
文本数据统计单词总数、行总数、字节总数和字符总数,以空格为分隔符
wc -l
统计行数
wc -w
统计单词总数
wc -c
统计字节总数
wc -m
统计字符总数
wc -L
显示文件中最长行的长度
xargs
将管道、标准输入或文件输出的数据转换成命令行参数(可解决参数过多问题)
xargs -n
指定单次转换的参数数量
3. 备份压缩
compress
把原文件压缩成后缀为.Z的文件并删除
compress -d
解压缩
compress -c
只把结果输出到标准输出,不压缩、不删除原文件
compress -v
显示详情
uncompress
解压缩.Z后缀的压缩文件
zcat
只查看压缩包内的文件内容,不解压缩
bzip2
压缩成后缀为.bz2的文件(gzip升级版)
bzip2 -k
保留原文件
bzip2 -d
解压缩
bzip -1~9
指定压缩比,默认为9
bunzip2
解压缩
bzcat
只查看压缩包内的文件内容,不解压缩
cpio >/<
通过重定向的方式将文件进行打包备份,还原恢复的工具
cpio -ov
打包
cpio -idv
解包(如果打包时带绝对路径,只能解包到绝对路径上)
cpio -o
将文件拷贝打包成文件或者将文件输出到设备上
cpio -i
解包,将打包文件解压或将设备上的备份还原到系统
cpio -t
预览,查看文件内容或者输出到设备上的文件内容
cpio -v
显示打包过程中的文件名称
cpio -d
解包生成目录,在cpio还原时,自动的建立目录
cpio -c
一种较新的存储方式
file-roller
图形化压缩、解压缩工具
gzip
把原文件压缩成后缀为.gz的文件
gzip -d
解压缩
gzip -c
将压缩或解压缩的结果输出至标准输出
gzip -1~9
指定压缩比(默认为6),值越大,压缩比越大,速度越慢
gunzip
对.gz后缀的压缩文件进行压缩
zcat
只查看压缩包内的文件内容,不解压缩
split
切割大的打包文件为多份小文件
split -b
指定小文件大小
split -d TAR_FILE PREFIX_NAME
指定小文件前缀
cat PART_FILES* > TAR_FILE
合并
tar
打包或解包
tar -cpvf
打包
tar -c
创建打包文件
tar -f
指定目标文件名
tar -v
过程
tar -p
保留原有属性
tar -t
预览
tar -xvf -C
解包
tar -x
解压缩(默认解压缩到当前目录下)
tar -C
指定解压缩目录
tar -z
打包后缀为.gz或.tgz的压缩文件(解包不需要带)
tar -j
打包后缀为.bz2的压缩文件(解包不需要带)
tar -J
打包后缀为.xz的压缩文件(解包不需要带)
tar -T FILELIST
指定输入文件列表
tar -X EXFILELIST
排除指定的文件列表
xz
把原文件压缩成后缀为.xz的文件(压缩比最高)
xz -k
保留原文件
xz -d
解压缩
xz -1~9
压缩比,默认为6
xzcat
只查看压缩包内的文件内容,不解压缩
zip
把原文件压缩成后缀为.zip的文件
zip -r
打包压缩目录
unzip
解包压缩
unzip -p
只查看压缩包内的文件内容,不解压缩
4. 文件传输
scp FILE IP_ADDRESS:/DIRECTORY
Linux之间复制文件和目录,默认复制到root家目录
二、系统相关
1. 系统管理
=
变量赋值
.
读取文件内容存放到内存
alias
查看所有命令别名的列表
alias NAME=‘VALUE’
临时定义命令别名
bash
运行bash程序、执行脚本
cat /etc/centos-release
查看发行版本
cat /etc/shells
显示当前系统所有shell类型
cat /proc/cpu
查看cpu信息
cat /proc/meminfo
查看内存信息
clock
修改、查看硬件时钟时间
clock -s
以硬件时钟为准,校正系统时钟
clock -w
以系统时钟为准, 校正硬件时钟
chkconfig
检查,设置系统的各种服务
chkconfig APPLICATION off
禁止开机自启动
command
执行同名命令别名的原始命令
date
修改、查看系统时钟时间
date +%F
以年-月-日格式显示date +%T
以时:分:秒格式显示date -d
以英文、字符串查找日期date -s
设置时间date --help
帮助用法
declare
声明变量
declare -x
设置或显示环境(全局)变量
declare -i
声明数值、字符串或运算式
echo $$
查看当前进程的进程编号
echo $?
查看上一命令的执行结果,成功为0,失败为非0
echo $HISTFILE
查看命令行历史文件
echo $HISTISIZE
查看命令行历史最多存储数
echo $LANG
查看当前系统语言编码
echo $PATH
查看环境变量
echo $PPID
查看父进程的进程编号
echo $PS1
查看当前命令提示符格式
echo $SHELL
查看当前环境使用的shell类型
echo $HOSTNAE
查看主机名
enable
查看运行、启动内部命令
enable -n
查看禁用、禁用内部命令
env
显示环境(全局)变量
exit
退出当前终端、终止shell脚本并返回自定义退出状态码
export
设置或显示环境(全局)变量
free
查看内存信息
free -h
以合适的单位显示内存使用情况
halt
关机(不断电)
hash
显示缓存到内存的命令
hash -d
清除指定命令的缓存
hash -l
显示命令缓存(包括命令的路径)
hash -p PATH NAME
将命令路径起别名
hash -t
显示指定命令的路径
hash -r
清楚所有缓存
history
命令行历史
!NUMBER
重复执行指定历史命令history -c
清除内存中的命令历史history -d
删除指定序号的命令历史history -a
把内存中的命令历史写入到命令历史文件history -r
把命令历史文件内容读到内存中的命令历史history -w
把命令历史写入到命令历史文件history -n
把命令历史文件中未读过的历史命令读到内存history -p
执行命令不记录到命令历史history -s
把命令写入到命令历史,但不执行
hostname
查看主机名
init 0
关机
init 3
切换字符模式
init 5
切换图形界面
killall
杀死进程
ldd
查看命令所调用的库文件
logout
退出当前终端
lsb_release -a
CentOS6查看操作系统版本
lscpu
查看CPU信息
ltrace
查看进程的库调用(library)
makewhatis
CentOS6制作whatis数据库
mandb
CentOS7制作whatis数据库
ntpdate
指定时钟服务器
poweroff
关机(即关机也断电)
printenv
显示环境(全局)变量
pstree
查看进程树
pstree -p
显示进程编号
PS1=
临时修改命令提示符格式
readonly
声明只读变量
reboot
重启系统
reboot -f
强制,不调用shutdownreboot -p
切断电源,关机
read
从标准输入读取数值
read -p
输入提示
read -s
静默输入
read -n
指定输入的字符长度
read -d
输入结束符
read -t
定义输入字符的等待时间
rpm -qa | wc -l
查看系统安装软件的个数
service
管理系统服务
service APPLICATION start
启动服务
service APPLICATION stop
停止服务
set
显示所有变量(局部变量、环境变量)及函数
set --
清空所有位置变量
shift
位置参数前移(默认一位)
shutdown
关机
shutdown -r
重启
shutdown -h
关机(不断电)
shutdown -c
取消目前已经进行中的关机动作
shutdown TIME [MESSAGE]
设置关机时间,默认+1;now(立即,相当于+0);hh:mm(绝对时间)
sosreport
收集系统日志信息
source
读取文件内容存放到内存
startx
启动图形界面功能
strace
查看进程的系统调用(system call)
systemctl
管理系统服务进程
systemctl start
启动服务进程
systemctl stop
停止服务进程
systemctl disable
禁止开机启动
test、[]、[[]]
检查某个条件是否成立
test -v
判断变量是否赋值
test -z
字符串是否为空
test -n
字符串是否为非空
test -a、test -e
判断文件是否存在
test -b
判断文件是否存在且为块设备文件
test -c
判断文件是否存在且为字符设备文件
test -d
判断文件是否存在且为目录文件
test -f
判断文件是否存在且为普通文件
test -h、test -L
判断文件是否存在且为符号链接文件
test -p
判断文件是否存在且为命名管道文件
test -S
判断文件是否存在且为套接字文件
test -r
判断文件是否存在且可读
test -w
判断文件是否存在且可写
test -x
判断文件是否存在且可执行
test -u
判断文件是否存在且拥有suid权限
test -g
判断文件是否存在且拥有sgid权限
test -k
判断文件是否存在且拥有sticky权限
test -s
判断文件是否存在且非空
test -t
判断文件描述符是否在指定终端打开
test -N
判断文件自从上次被读取后是否被修改过
test -O
判断当前有效用户是否为文件属主
test -G
判断当前有效用户是否为文件属组
timedatectl
CentOS7查看当前系统时区信息
timedatectl status
查看当前系统时区信息
timedatectl list-timezones
查看当前系统所有时区
timedatectl set-timezone
调整系统时区
type
查看命令类型
tzselect
CentOS6调整系统时区
unalias
取消命令别名
unalias -a
取消所有命令别名
uname -r
查看内核版本
unset
删除变量
whereis
查看外部命令的路径及其帮助文档路径
which
查看指定外部命令的最近路径
which --skip-alias
只显示指定外部命令的最近路径
which -a
查看指定外部命令的所有路径
xargs
给命令传递参数的一个过滤器,也是组合多个命令的一个工具
2. 磁盘管理
cd /misc/cd
光盘自动挂载
df
查看磁盘分区的使用情况
df -i
查看磁盘分区的节点编号使用情况
df -h
使用人类可读的格式
du -sh /*
查看所有一级目录大小
echo '- - -' > /sys/class/scsi_host/host2/scan
磁盘自动扫描
fdisk -l
查看磁盘分区
lsblk
查看块设备信息
ls /dev/sd*
查看分区
runlevel
查看当前工作模式
tune2fs -o acl SYSTEM_PARTITION
mount -o acl SYSTEM_PARTITION MOUNT_POINT
CentOS6设置指定分区支持ACL功能
3. 网络管理
ifconfig
查看网卡信息
ip a
查看网卡信息
ping
测试网络连通性
ping -c
设置次数
netstat
查看网络连接状态
netstat -n
使用IP地址
netstat -t
显示TCP传输协议的连线状况
nmap
网络扫描
nmap -v -sP
扫描特定网段
rz
windows发送文件到Linux
screen
创建多重视窗管理程序会话
screen -S
自定义创建新会话
screen -x
加入指定会话
screen -ls
显示所有已打开的会话
screen -r
恢复指定会话
systemctl restart network
重启网络服务
systemctl restart sshd
重启ssh远程访问服务
sz
Linux发送文件到Windows
curl
文件传输工具
4. 用户管理
adduser
创建用户
authconfig --passalgo= --update
修改用户密码的加密算法
--passalgo=md5
--passalgo=sha1
--passalgo=sha224
--passalgo=sha256
--passalgo=sha384
--passalgo=sha512
chage
交互式修改指定用户的密码的设置
chage -d 0
指定用户密码立即过期
chage -l
查看指定用户的密码策略
chage -E
设置用户密码过期时间
chage -I
设置用户密码宽限期
chage -m
设置用户密码最短有效期
chage -M
设置用户密码最长有效期
chage -W
提前多少天告警
chpasswd
批量修改用户密码
echo PASSWORD.TXT | chpasswd
根据用户密码列表文件批量修改用户密码
chsh -s SHELL USERNAME
修改指定用户的shell类型
chvt [1~6]
切换虚拟终端界面
echo $USER
查看用户名
echo PASSWORD | passwd --stdin USERNAME
通过标准输出接受用户密码
groupadd
创建用户组
groupadd
创建用户组
groupadd -g
指定GID
groupadd -r
创建系统组
groupdel
删除组
groupmems
更改、查看组成员
groupmems -g
指定组
groupmems -a
指定用户加入组
groupmems -d
从组中删除用户
groupmems -p
从组中清楚所有成员
groupmems -l
显示组成员列表
groupmod
修改组属性
groupmod -n
修改组名
groupmod -g
修改组id
groups
查看用户所属组列表
gpasswd
修改、增加用户组口令
gpasswd -a USERNAME
将指定用户添加到指定组中
gpasswd -d USERNAME
从指定组中移除指定用户
gpasswd -A USERNAME1,USERNAME2,……
设置有管理权限的用户列表
id
判断用户是否存在,查看用户id、组id、组列表、安全上下文
id -u
只显示用户id
id -g
只显示用户主组id
id -G
只显示用户附加组id
id -n
需要配合-u(只显示用户名)、-g(只显示用户主组名)、-G(只显示用户附加组名)使用
last
显示用户最近登录信息
newgrp
临时切换用户主组
newusers FILE
根据用户列表文件批量创建用户
passwd
修改用户密码
passwd -e
强制用户下次登录修改密码
passwd -l
锁定指定用户
passwd -d
删除指定用户密码
passwd -u
解锁指定用户
passwd -f
强制操作
passwd -n
指定最短使用期限
passwd -x
指定最大使用期限
passwd -i
设置用户宽限期
passwd -w
提前多少天开始告警
passwd --stdin
通过标准输出接受用户密码
tty
查看当前所在虚拟终端
useradd
创建用户
useradd -N
创建用户时不创建同名主组,该用户默认加入组ID为100(/etc/default/useradd所指定)的users组
useradd -u
创建用户并手工指定用户UID时不检查UID的唯一性
useradd -uo
创建用户时手工指定UID
useradd -g
创建用户时手工指定用户主组(组名、GID)
useradd -c
创建用户时手工指定用户的注释信息
useradd -d
创建用户时手工指定用户家目录路径(必须不存在)
useradd -s
创建用户时手工指定用户的shell类型
useradd -r
创建系统用户(不创建家目录和邮箱)
useradd -m
创建系统用户时创建家目录
useradd -M
创建普通用户时不创建家目录
useradd -G
创建用户时指定附加组(必须存在)
useradd -D
显示/etc/default/useradd内容( 新用户默认设置)
useradd -D -b
修改/etc/default/useradd中所设置的默认shell类型
useradd -D -s
修改/etc/default/useradd中所设置的默认家目录
useradd -D -g
修改/etc/default/useradd中所设置的默认主组
userdel
删除用户
userdel -r
删除用户并删除其家目录及邮箱目录
userdel -f
强制删除
usermod
用户属性修改
usermod -L
用户加锁,/etc/shadow密码栏增加!,无法登录系统,但可以通过进行用户切换
usermod -U
CentOS5用户解锁,/etc/shadow密码栏删除!,需要输入两次才能真正解锁,CentOS6和CentOS7无法解锁
usermod -u
修改用户UID
usermod -g
修改用户主组
usermod -G
修改用户附加组
usermod -aG
追加用户附加组
usermod -G ""
引号内为空,取消用户所有附加组
usermod -s
修改用户shell类型
usermod -s
修改用户描述信息
usermod -s
修改用户shell类型
usermod -dm
自动创建用户新家目录并移动原家目录数据
usermod -l NEWNAME OLDNAME
修改用户名
usermod -e YYYY-mm-dd
指定用户账号过期时间
usermod -f
指定用户账号宽限期,/etc/shadow倒数第三栏
w
显示当前所以的登录会话及所做的操作
who
查看当前所有的登录会话信息
whoami
显示当前用户名
who am i
显示当前用户的登录会话信息
su
切换用户,不完全切换,也称非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录
su -
登录式切换,完全切换,会读取目标用户的配置文件,切换至家目录,默认切换为root管理员
su - root -c 'CMD'
使用root管理员身份执行指定命令(用单引号括起来)
三、其他
1. 帮助
help
查看内部命令列表及帮助用法
info
帮助手册
man
帮助手册
man -f
查看命令简要说明
man -a
列出所有章节
man -w
查看帮助文件的路径
man bash
所有内部命令帮助手册
man 7 glob
文件通配符帮助
whatis
查看命令简要说明及对应man帮助章节
2. 杂
bc
计算器
ibase=
输入2、8、10、16进制数
obase=
输出2、8、10、16进制数
quit
退出
cal
查看月历
cal -y
查看整年月历
clear
清屏
expr
算数运算
expr +
加
expr -
减
expr \*
乘
expr /
整除
expr %
取模(余数)
expr **
乘方
let
算数运算
let +
加
let -
减
let *
乘
let /
除
let %
取模(余数)
let **
乘方
sleep
将目前动作延迟一段时间
wall
发广播
yes
不断输入y
3. 组合按键
Ctrl+a+d
剥离当前screen会话
Ctrl+Alt+F[1~6]
切换虚拟终端界面
Ctrl+c
取消和结束命令执行(比较强硬)
Ctrl+d
取消和结束命令执行
退出当前终端
Ctrl+g
从命令行历史搜索模式退出
Ctrl+l
清屏
Ctrl+q
允许屏幕输出
Ctrl+r
在命令行历史中搜索命令
Ctrl+s
阻止屏幕输出,锁定
Ctrl+z
挂起命令
Shift+PgUp
向上翻页
Shift+PgDn
向下翻页
Tab*2
补全
四、字符
1. 文件通配符
*
匹配零个或多个字符
?
匹配任何单个字符
~
当前用户家目录
~+
当前工作目录
~-
系统所记录上次所在的目录
[0-9]
匹配数字范围
[a-z]
字母
a、A、……、z、Z
[A-Z]
字母
A、b、……、z、Z
[ABCD]
匹配列表中的任何的一个字符
[^ABCD]
匹配列表中的所有字符以外的字符
[:digit:]
任意数字,相当于0-9
[:lower:]
任意小写字母
[:upper:]
任意大写字母
[:alpha:]
任意大小写字母
[:alnum:]
任意数字或字母
[:blank:]
水平空白字符
[:space:]
水平或垂直空白字符
[:punct:]
标点符号
[:print:]
可打印字符
[:cntrl:]
控制(非打印)字符
[:graph:]
图形字符
[:xdigit:]
十六进制字符
2. 正则表达式
2.1 字符匹配
.
匹配任意单个字符
\
转义符
[]
匹配指定范围内的任意单个字符
[.]
匹配.本身
[^]
匹配指定范围外的任意单个字符
[:alnum:]
字母和数字
[:alpha:]
任何英文大小写字符(A~Z,a~z)
[:lower:]
小写字母
[:upper:]
大写字母
[:blank:]
空白字符(空格和制表符)
[:space:]
水平和垂直的空格字符(比空白字符包含的范围广)
[:cntrl:]
不可打印的控制字符(退格、删除、警铃……)
[:digit:]
十进制数字
[:xdigit:]
十六进制数字
[:graph:]
可打印的非空白字符
[:print:]
可打印字符
[:punt:]
标点符号
2.2 次数匹配
*
匹配前面的字符任意次,包括0次
.*
任意长度的任意字符
\?
匹配前面字符的0或1次
\+
匹配前面字符至少1次
\{N\}
匹配前面的字符N次
\{M,N\}
匹配前面的字符至少M次,至多N次
2.3 位置锚定
^PATTERN$
用于模式匹配整行
^
行首锚定,用于模式的最左侧
$
行尾锚定,用于模式的最右侧
^$
空行
^[[:space:]]*$
空白行
\<PATTERN\>
匹配整个单词
\<
词首锚定,用于单词模式的左侧
\>
词尾锚定;用于单词模式的右侧
\b
词首词尾锚定,可用于单词模式的左右两侧
2.4 分组
\(\)
将一个或多个字符捆绑在一起,当作一个整体进行处理
\NUMBER
后向引用,引用前面指定分组中的模式所匹配的字符
\|
或者
3. 扩展正则表达式
3.1 字符匹配
.
任意单个字符
[]
指定范围的字符
[^]
不在指定范围的字符
3.2 次数匹配
*
匹配前面字符任意次
?
0或1次
+
1次或多次
{}
匹配指定次数
{M,N}
至少M次,至多N次
3.3 位置锚定
^
行首
$
行尾
\<PATTERN\>
匹配整个单词
\<
词首锚定,用于单词模式的左侧
\>
词尾锚定;用于单词模式的右侧
\b
词首词尾锚定,可用于单词模式的左右两侧
()
分组
\NUMBER
后向引用,引用前面指定分组中的模式所匹配的字符
|
或者
4. 条件判断
4.1 逻辑运算
&
与
&&
短路与
|
或
||
短路或
!
非
^
异或(二进制数对位值相同,结果为真;反之为假)
-a
并且
-o
或者
4.2 字符判断
=
字符串是否相同
!=
字符串是否不相同
==
左侧字符串是否被右侧通配符匹配
=~
左侧字符串是否被右侧匹配
4.3 数值判断
-gt
是否大于
-ge
是否大于等于
-eq
是否等于
-ne
是否不等于
-lt
是否小于
-le
是否小于等于
4.4 文件判断
-ef
文件1是否是文件2的硬链接
-nt
文件1的mtime是否新于文件2
-ot
文件1的mtime是否旧于文件2
5. 变量
$1、$2、……
位置变量
$0
命令本身
$*
传递给脚本的所有参数,全部参数合为一个字符串
$@
传递给脚本的所有参数,每个参数为独立字符串
$#
传递给脚本的参数的个数
$?
最近的命令退出状态
$_
上个命令最后一个参数
$-
一些功能的组合
h
哈希
i
当前属于交互式的shell
m
打开监控模式
B
大括号扩展
H
历史列表