一、文件相关
1. 文件管理
>
创建空文件、覆盖文件内容、标准输出重定向
>>
创建空文件(更为安全的做法)、标准输出追加重定向
basename
去掉路径,只取文件名
cat
查看文件内容
cat -A
展开所有
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
查看对应软链接对应文件的文件类型
getfacl
查看指定文件或目录的访问控制列表设置
getfacl FILE/DIRECTORY | setfacl --set-file=- NEW_FILE/DIRECTORY
复制其他文件的ACL权限给指定文件getfacl -R FILE > ACL.txt
备份ACLgetfacl -p
不去除路径前的/
hexdump
查看2进制文件的16进制编码
hexdump -C
每个字节显示为16进制和相应的ASCII字符
l*
只显示当前目录的所有隐藏文件(包括子目录和父目录)
ll
查看文件信息
ll --time=
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)ll /proc/$$fd
查看被打开的文件所对应的文件描述符
ln
创建硬链接
ln -s
创建软链接(符号链接)
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
查看当前系统中被删除但还未释放空间的文件
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
查看文件的atime(访问内容时间)、mtime(修改内容时间)和ctime(改变属性时间)
mkdir
创建目录
mkdir -p
存在不报错,自动创建所需的各目录mkdir -v
显示创建过程mkdir -m
指定权限
mv
移动或重命名文件、目录
mv -i
交互式操作mv -f
强制mv -t
先指定目的目录,再指定源
rmdir
删除空目录
rmdir -p
递归删除父空目录rmdir -v
显示删除过程
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
以权限法显示初始权限
2. 字符处理
2>
标准错误输出重定向
2>>
标准错误输出追加重定向
>|
强制覆盖
&>
把所有输出重定向到文件
&>>
把所有输出重定向追加到文件
<
标准输入重定向
<<终止符
多行重导向
|
管道符,把一个命令的标准输出发送给另一个命令作为标准输入
|&
把一个命令的标准输出和标准错误发送给另一个命令,CentOS5及以前的版本不支持-
将管道符前的命令传送给管道符后的命令,直接代替前一个命令的标准输出
chfn
添加/etc/passwd中指定用户的描述信息
echo $RANDOM
生成0~32767的随机数
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中指定用户的行
grpck
检查/etc/group内容和格式的完整性并补充说明
mail
收邮件
mail -s SUBJECT USER
指定邮件的主题.
结束邮件正文编辑
nano
字符文本编辑工具
openssl rand -base64 NUMBER
生成指定个数的随机字符
pwck
检查/etc/passwd内容和格式的完整性并补充说明
pwconv
开启用户的投影密码,/etc/passwd不显示用户密码
pwunconv
关闭用户投影密码,把用户密码从/etc/shadow,重回存到/etc/passwd
reset
重置字符,遇到乱码时可以执行该命令重置系统字符
seq
生成从n到N的数字,默认从1开始
seq -s
指定分隔符,默认为回车
tee
重定向到多个目标
tee -a
追加
tr
转换字符
tr -c、tr -C
取反tr -d
删除tr -s
压缩连续重复的字符tr -t
使字符串1的长度和字符串2的长度一致tr --help
帮助
vigr
带语法检查功能编辑/etc/group
vipw
带语法检查功能编辑/etc/passwd
3. 备份压缩
tar
打包或解包
4. 文件传输
scp FILE IP_ADDRESS:/DIRECTORY
Linux之间复制文件和目录,默认复制到root家目录
二、系统相关
1. 系统管理
.
读取文件内容存放到内存
alias
查看所有命令别名的列表
alias NAME=‘VALUE’
临时定义命令别名
cat /etc/centos-release
查看发行版本
cat /etc/shells
显示当前系统所有shell类型
cat /proc/cpu
查看cpu信息
cat /proc/meminfo
查看内存信息
clock
修改、查看硬件时钟时间
clock -s
以硬件时钟为准,校正系统时钟
clock -w
以系统时钟为准, 校正硬件时钟
command
执行同名命令别名的原始命令
date
修改、查看系统时钟时间
date +%F
以年-月-日格式显示date +%T
以时:分:秒格式显示date -d
以英文、字符串查找日期date -s
设置时间date --help
帮助用法
echo
显示字符
echo -e
启用\字符的解释功能
echo $HISTFILE
查看命令行历史文件
echo $HISTISIZE
查看命令行历史最多存储数
echo $LANG
查看当前系统语言编码
echo $PATH
查看环境变量
echo $PS1
查看当前命令提示符格式
echo $SHELL
查看当前环境使用的shell类型
echo $HOSTNAE
查看主机名
enable
查看运行、启动内部命令
enable -n
查看禁用、禁用内部命令
exit
退出当前终端
free
查看内存信息
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查看操作系统版本
ltrace
查看进程的库调用(library)
makewhatis
CentOS6制作whatis数据库
mandb
CentOS7制作whatis数据库
ntpdate
指定时钟服务器
poweroff
关机(即关机也断电)
PS1=
临时修改命令提示符格式
reboot
重启系统
reboot -f
强制,不调用shutdownreboot -p
切断电源,关机
rpm -qa | wc -l
查看系统安装软件的个数
shutdown
关机
shutdown -r
重启shutdown -h
关机(不断电)shutdown -c
取消目前已经进行中的关机动作shutdown TIME [MESSAGE]
设置关机时间,默认+1;now(立即,相当于+0);hh:mm(绝对时间)
sosreport
收集系统日志信息
source
读取文件内容存放到内存
startx
启动图形界面功能
strace
查看进程的系统调用(system call)
timedatectl
CentOS7查看当前系统时区信息
timedatectl status
查看当前系统时区信息timedatectl list-timezones
查看当前系统所有时区timedatectl set-timezone
调整系统时区
type
查看命令类型
tzselect
CentOS6调整系统时区
unalias
取消命令别名
unalias -a
取消所有命令别名
uname -r
查看内核版本
whereis
查看外部命令的路径及其帮助文档路径
which
查看指定外部命令的最近路径
which --skip-alias
只显示指定外部命令的最近路径which -a
查看指定外部命令的所有路径
xargs
给命令传递参数的一个过滤器,也是组合多个命令的一个工具
2. 磁盘管理
cd /misc/cd
光盘自动挂载
df
查看磁盘分区的使用情况
df -i
查看磁盘分区的节点编号使用情况
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
测试网络连通性
rz
windows发送文件到Linux
screen
创建多重视窗管理程序会话
screen -S
自定义创建新会话screen -x
加入指定会话screen -ls
显示所有已打开的会话screen -r
恢复指定会话
sz
Linux发送文件到Windows
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
指定GIDgroupadd -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
只显示用户idid -g
只显示用户主组idid -G
只显示用户附加组idid -n
需要配合-u(只显示用户名)、-g(只显示用户主组名)、-G(只显示用户附加组名)使用
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
创建用户时手工指定UIDuseradd -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
修改用户UIDusermod -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
清屏
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
补全
四、文件通配符
*
匹配零个或多个字符
?
匹配任何单个字符
~
当前用户家目录
~+
当前工作目录~-
系统所记录上次所在的目录
[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:]
十六进制字符