整理系统常用的快捷方式
- ctrl+c : 中断命令执行过程
- ctrl+l : 清屏操作
- ctrl+d : 注销用户
- tab : 补全目录路径或文件名称信息/命令
- ↑↓ : 调取之前输入过的历史命令
- ctrl+a : 快速将光标移动到行首
- ctrl+e : 快速将光标移动到行尾
- ctrl+←→ : 按照一个空格进行移动光标
- esc+. : 调取上一个命令最后一个信息
- ctrl+u : 将光标所在位置到行首内容进行剪切
- ctrl+k : 将光标所在位置到行尾内容进行剪切
- ctrl+y : 粘贴剪切的内容
- ctrl+s : 进入锁定状态
- ctrl+q : 解除锁定状态
- ctrl+r : 快速搜索历史命令
整理系统常用的操作命令
命令 | 效果 |
---|---|
shutdown命令 | 关机或重启操作 |
ls命令 | (list)按条件查看目录或文件 |
mkdir命令 | (make directory)创建新的目录 |
cd命令 | (change directory)切换工作目录 |
man命令 | (manual)查看命令的作用说明 |
touch命令 | 创建出一个空文件 |
echo命令 | 输出文本信息 |
cat命令 | 查看文件 |
cp命令 | (copy)复制数据信息(文件/目录)到其他位置后可以选择修改文件名或目录名 |
rm命令 | (remove)删除数据信息(文件/目录) |
mv命令 | (move)移动数据信息(文件/目录)到其他位置后可以选择修改文件名或目录名 |
runlevel命令 | 查看调整系统运行级别 |
alias命令 | 设置或查看系统别名 |
blkid命令 | 用于查看块设备UUID、Label、挂载、文件系统类型等信息 |
type命令 | 查看内置或外置命令方法 |
yum命令 | 安装软件命令 |
head命令 | 查看文件前面10行信息 |
tail命令 | 查看文件后面10行信息 |
which命令 | 在环境变量$PATH设置的目录里查找符合条件的文件 |
rpm命令 | rpm命令是RPM软件包的管理工具 |
vi命令 | vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器 |
grep命令 | (Global search Regular Expression and Print out the line)在文本文件中按照指定的正则进行全局搜索,并打印搜索出的行 |
ss命令 | (Socket Statistics)获取socket统计信息 |
netstat命令 | 显示网络相关信息 |
less命令 | 查看文件 |
more命令 | 查看文件,查看到结尾时自动退出 |
sed命令 | 擅长对文本行进行操作处理 |
awk命令 | 擅长对文本列进行操作处理 |
tr命令 | 输出替换后内容,不会修改原文件 |
file命令 | 辨识文件类型 |
ln命令 | (link)创建链接文件 |
find命令 | 查找文件 |
systemctl命令 | Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器 |
locate命令 | 查找文件,快速定位文件路径 |
tree命令 | 显示目录结构信息 |
tar命令 | 用来压缩和解压文件 tar本身不具有压缩功能,通过调用压缩功能实现 |
stat命令 | 查看文件的详细信息 |
date命令 | 查看时间信息 |
xargs命令 | 命令传递参数的一个过滤器,也是组合多个命令的一个工具,可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据,也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行 |
wc命令 | 计算文件的Byte数、字数、或是列数 |
chmod命令 | 只能文件属主或特权用户才能使用该功能来改变文件存取模式 |
umask命令 | 权限掩码,umask值表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值 |
useradd命令 | 创建用户命令 |
usermod命令 | 修改用户信息 |
userdel命令 | 删除用户信息 |
passwd命令 | 修改用户密码信息 |
groupadd命令 | 创建用户组 |
groupmod命令 | 修改用户组 |
groupdel命令 | 删除用户组 |
chown命令 | 修改文件属主和属组信息 |
id命令 | 查看用户信息 |
w命令 | 显示正在登陆系统的用户信息 |
su命令 | 切换用户命令 |
visudo命令 | 编辑/etc/sudoers只读文件,可以赋予其他用户权限 |
sudo命令 | 让普通用户执行root命令的一个工具 |
chattr命令 | 用于改变文件属性 |
lsattr命令 | 用于显示文件属性 |
crontab命令 | 定时任务服务 |
fdisk命令 | 管理小于2T的磁盘,所有的操作记录在内存中不会立刻生效,直到输入w |
parted命令 | 管理大于2T磁盘,分区后直接生效 |
partprobe命令 | 系统重新读取分区表,不重启服务器情况下重新读取分区列表 |
mkfs命令 | (Make FileSystem) 在特定的分区上建立linux文件系统(格式化操作) |
dd命令 | 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件 设备 标准输出 |
sort命令 | 可针对文本文件的内容,以行为单位来排序 |
du命令 | 显示目录或文件的大小 |
shutdown
命令
关机或重启操作
- shutdown : 系统给出对应提示并且在1分钟后关闭
- shutdown -c : 取消关机计划
- shutdown -h 5 : 系统给出对应提示并且在5分钟后关闭
- shutdown -r 5 : 系统给出对应提示并且在5分钟后重启
- shutdown -h now : 立即关闭系统
- shutdown -r now :立即重启系统
- shutdown -h 0 : 立即关闭系统
- shutdown -r 0 :立即重启系统
- shutdown -h 20:00 : 预定时间关闭系统(20点关机,如果现在超过20点,则明天20点)
其他相关命令
- halt : 立即关闭系统
- poweroff : 立即关闭系统
- reboot : 立即重启系统
ls
命令
(list)按条件查看目录或文件
- ls /etc/hosts : 检查文件是否存在
- ls /etc/ : 检查目录是否存在
- ls -a : 列出文件夹下所有的文件,包括以“.“开头的隐藏文件
- ls -d /etc : 查看目录属性信息
- ls -lh *.log : 列出文件的详细信息(.log结尾,*为通配符代表任意多个字符)
- ls -lt : 列出文件的详细信息并按照时间排序
- ls -ltr : 列出文件的详细信息并按照时间反向排序
其他相关命令
- ll : 查看当前文件夹下所有的文件和目录并显示权限大小
- lh : 查看当前文件夹下所有的文件和目录并显示权限大小
- pwd : 查看当前所在路径
mkdir
命令
(make directory)创建新的目录
- mkdir /1997sty : 在根目录下创建一个1997sty的目录
- mkdir -p /1997sty/1997/sty : 递归创建目录(-p:父目录不存在时,同时建立)
cd
命令
(change directory)切换工作目录
- cd /1997sty : 切换到/1997sty(绝对路径)
- cd .. : 返回到上一级目录(相对路径)
- cd ../../ : 返回到上两级目录(相对路径)
- cd ../1997sty : 返回到上一级目录并切换到1997sty(相对路径)
- cd - : 切换到上一个目录并输出目录绝对路径
- cd / : 切换到根目录
- cd ~ : 切换到家目录
man
命令
(manual)查看命令的作用说明
- man cd : 查看cd命令的说明
- man mkdir : 查看mkdir命令的说明
touch
命令
创建出一个空文件
- touch /1997sty/1997sty.txt : 创建一个文件名为1997sty.txt的文件
echo
命令
输出文本信息
- echo "hello world" : 输出
hello world
到屏幕上 - echo "hello world" > 1997sty.txt : 输出
hello world
写入到1997sty.txt
- echo "hello world" >> 1997sty.txt : 输出
hello world
追加到1997sty.txt
- echo {1..100} : 输出1-100
- echo {01..100} : 输出001-100
- echo {1..10..2} : 输出1,3,5,7,9
- echo {1,9,9,7} : 输出1,9,9,7
cat
命令
查看文件
- cat 1997sty.txt : 查看文件
1997sty.txt
- cat 1997sty.txt 1997sty_1.txt : 查看文件
1997sty.txt
,1997sty_1.txt
- cat -n 1997sty.txt : 查看文件
1997sty.txt
显示行号 - cat >> 1997sty.txt <<EOF : 追加添加多行文本到
1997sty.txt
文件添加完成后输入EOF
结束 - cat > 1997sty.txt <<1997STY : 写入添加多行文本到
1997sty.txt
文件添加完成后输入1997STY
结束
cp
命令
(copy)复制数据信息(文件/目录)到其他位置后可以选择修改文件名或目录名
- cp /1997sty/1997sty.txt /tmp : 复制
1997sty.txt
到/tmp
下 - cp -r /1997sty /tmp : 复制
/1997sty
目录到/tmp
下 - \cp -r /1997sty /tmp : 强制复制
/1997sty
目录到/tmp
下,并且不再确认
如果第二个路径最后一级如果不存在,则复制以后的文件或目录就被更名为这个名称 如果第二个路径最后一级如果存在,则复制以后的文件或目录就不会变更
rm
命令
(remove)删除数据信息(文件/目录)
- rm /tmp/1997sty.txt : 删除
/tmp
目录下的/1997sty.txt
文件,并确认 - \rm /tmp/1997sty.txt : 强制删除
/tmp
目录下的/1997sty.txt
文件,并且不再确认 - rm -f /tmp/1997sty.txt : 强制删除
/tmp
目录下的/1997sty.txt
文件,并且不再确认 - rm -r /1997sty : 强制删除
/1997sty
目录和目录下的所有文件和子目录,并确认 - rm -rf /1997sty : 强制删除
/1997sty
目录和目录下的所有文件和子目录,并且不再确认 - rm -rf / : 强制删除
/
目录和目录下的所有文件和子目录,并且不再确认(删根跑路)
mv
命令
(move)移动数据信息(文件/目录)到其他位置后可以选择修改文件名或目录名
- mv /1997sty/1997sty.txt /tmp : 移动
1997sty.txt
到/tmp
下 - mv /1997sty/1997sty01/ /tmp : 移动
1997sty01
目录到/tmp
下 - mv 1997sty.txt sty1997.txt :
1997sty.txt
重命名为sty1997.txt
如果第二个路径最后一级如果不存在,则复制以后的文件或目录就被更名为这个名称 如果第二个路径最后一级如果存在,则复制以后的文件或目录就不会变更
runlevel
命令
查看调整系统运行级别
- runlevel : 查看系统运行级别
系统运行级别
- 0 — 表示关机级别(不要将默认的运行级别设置成这个值)
- 1 — 单用户模式
- 2 — 多用户模式,不带NFS(Network File Syetem 网络文件系统)
- 3 — 多用户模式,完全的多用户模式(纯命令行模式)
- 4 — 没有被使用的模式(被保留模式)
- 5 — X11,完整的图形化界面模式
- 6 — 表示重启级别(不要将默认的运行级别设置成这个值)
临时调整运行级别
- init 0 : 调整运行级别为0,值范围 0,1,2,3,4,5,6
永久调整运行级别
inittab
系统运行级别文件(Centos6)
- vi /etc/inittab : 永久调整运行级别
修改系统运行级别命令(Centos7)
- systemctl get-default : 查看运行级别
- systemctl set-default runlevel3.target : 永久调整运行级别
- ls -l /usr/lib/systemd/system/runlevel*target : 查看运行级别文件
[root@1997sty ~]# ls -l /usr/lib/systemd/system/runlevel*target
lrwxrwxrwx. 1 root root 15 Mar 28 10:41 /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 Mar 28 10:41 /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 Mar 28 10:41 /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Mar 28 10:41 /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 Mar 28 10:41 /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 Mar 28 10:41 /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 Mar 28 10:41 /usr/lib/systemd/system/runlevel6.target -> reboot.target
alias
命令
设置或查看系统别名
- alias : 查看系统别名
- alias cathome='ls -l /home' : 设置一个别名为
cathome
的别名,执行的命令是ls -l /home
- unalias cathome : 取消
cathome
别名
怎么样操作可以让别名失效
- 取消别名命令
unalias
- 使用反斜线
\rm -rf /1997sty
(rm
命令通过别名设置为其他效果) - 绝对路径方式执行命令
/usr/bin/rm -rf /1997sty
(rm
命令通过别名设置为其他效果) xargs
命令后面命令忽略别名
blkid
命令
用于查看块设备UUID、Label、挂载、文件系统类型等信息
- blkid : 查看块设备UUID、Label、挂载、文件系统类型等信息
- blkid /dev/sda1 : 查看
sda1
的信息 - blkid -s TYPE : 输出指定信息
type
命令
查看内置或外置命令方法
- type cd : 查看cd命令
系统中将命令分为俩个大类
外置命令 需要进行安装
内置命令 所有系统都内置的命令
yum
命令
安装软件命令
- yum repolist : 查看可用的yum源信息
- yum list : 查看可以安装和以安装软件
- yum grouplist : 查看可以安装和以安装软件包组
- yum --help : 查看命令的参数帮助信息
- yum provides locate : 根据
locate
命令查找软件名 - yum groupinstall -y Development Tools : 安装
Development Tools
软件包组 - yum install vim : 使用yum安装vim
- yum install -y vim tree wget net-tools nmap bash-completion : 使用yum安装多个软件并且不用确认
- yum erase cowsay -y : yum卸载
cowsay
并移除依赖关系,可以使用rpm命令的保留依赖关系卸载(极其不建议)
yum安装软件排错流程
- 访问外网IP地址不通
网卡地址配置有问题
- 访问外网名称不通
DNS地址配置有问题
- 检查是否已经有下载的进程
ps -ef
找到进程后使用kill -9 PID
关闭对应进程 - yum源文件被修改调整
head
命令
查看文件前面10行信息
- head /etc/profile : 查看文件前面10行信息
- head -5 /etc/profile : 查看文件前面5行信息
tail
命令
查看文件后面10行信息
- tail /etc/profile : 查看文件后面10行信息
- tail -5 /etc/profile : 查看文件后面5行信息
- tail -f /etc/profile : 追踪查看文件内容的变化,文件被删除或改名就停止
- tail -F /etc/profile : 追踪查看文件内容的变化,文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
which
命令
在环境变量$PATH设置的目录里查找符合条件的文件
- which svn : 查找svn所在的目录
rpm
命令
rpm命令是RPM软件包的管理工具
- rpm -ivh sl : 直接安装sl
- rpm -ql tree : 查询tree
- rpm -e tree : 卸载tree
- rpm -qa : 列出所有安装过的包
- rpm -qf `which svn` : 返回svn软件包的全名
- rpm -e cowsay --nodeps : rpm卸载
cowsay
并保留依赖关系
vi
命令
vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器 所有命令区分大小写
- vi 1997sty : 编辑当前目录下
1997sty
文件
命令行模式
- G : 将光标移动到尾行行首
- gg : 将光标移动到首行行首
- 3gg : 将光标移动到第三行行首
- $ : 将光标移动到当前行的行尾
- 0 : 将光标移动到当前行的行首
- ^ : 将光标移动到当前行的行首
- x : 剪切光标右侧字符
- 3x : 剪切光标右侧三个字符
- dd : 剪切光标所在行
- 3dd : 剪切光标所在行开始向下三行
- dG : 剪切光标所在行至尾行
- p : 粘贴
- 3p : 粘贴三次
- yy : 复制光标所在行
- 3yy : 复制光标所在行开始向下三行
- u : 撤销上一次操作
- Ctrl + r : 还原上一次操作
- ↑ : 向上移动三个光标(其他方向键同理)
- 3↑ : 向上移动三格光标(其他方向键同理)
插入模式
- esc : 退出编辑模式
- i : 从光标所在位置进入编辑模式
- I : 从光标所在行的行首位置进入编辑模式
- o : 从光标所在行向下换行后进入编辑模式
- O : 从光标所在行向上换行后进入编辑模式
- a : 从光标所在位置向右移动一个字符进入编辑模式
- A : 从光标所在行的行尾位置进入编辑模式
- cc : 剪切当前行所有内容后进入编辑模式
- C : 从光标所在位置进入编辑模式并剪切光标右侧所有内容
底行模式
- : : 输入一些命令
- :set nu : 显示行号
- :set nonu : 取消显示行号
- :set ic : 忽略大小写
- :set ignorecase : 忽略大小写
- :set noic : 取消忽略大小写
- :set noignorecase : 取消忽略大小写
- ? : 输入搜索内容按回车进入搜索状态(向上搜索 n 依次向上)
- / : 输入搜索内容按回车进入搜索状态(向下搜索 n 依次向下)
- ?search\c : 输入搜索
search
忽略大小写按回车进入搜索状态(向上搜索 n 依次向上) - /search\c : 输入搜索
search
忽略大小写按回车进入搜索状态(向下搜索 n 依次向下) - :wq : 保存并退出
- :wq! : 强制保存并退出
- :q! : 强制退出
- :w : 保存
- :q : 退出
以下为新增部分
- yum install -y vim : 通过yum安装vim
- :2,4move9 : 将第二行到第四行的内容移动到第九行的之上
- :2,4copy9 : 将第二行到第四行的内容复制到第九行的之下
- :%s#1997sty#sty1997#g : 将文件中
1997sty
全部替换为sty1997
%
全部
s
substitute 替换
g
global 全局 不加该参数 只会替换当前行第一个匹配的字符串
- :2,4s#1997sty#sty1997#g : 将第二行到第四行中
1997sty
全部替换为sty1997
- :2,$s#oldgirl#oldboy#g : 将第二行到尾行中
1997sty
全部替换为sty1997
视图模式
- Ctrl + v : 进入视图模式
- ↑↓←→ : 可以在进入视图模式后移动光标选择区域
- A : 视图模式,从光标所在行的行尾位置进入编辑模式,编辑完成后按
Esc
应用到所有选中行 - C : 视图模式,从光标所在位置进入编辑模式并剪切光标右侧所有内容,编辑完成后按
Esc
应用到所有选中行 - I : 视图模式,从光标所在行的行首位置进入编辑模式,编辑完成后按
Esc
应用到所有选中行 - y : 视图模式,复制选中块
- p : 视图模式,将选中的内容替换为复制的内容
grep
命令
(Global search Regular Expression and Print out the line)在文本文件中按照指定的正则进行全局搜索,并打印搜索出的行
- cat 1997sty | grep "D" : 输出
1997sty
并在输出结果中查找,匹配"D"
的行并输出 - grep "D" 1997sty : 查找
1997sty
中,匹配"D"
的行并输出 - cat 1997sty | grep -in "d" : 输出
1997sty
并在输出结果中查找,匹配"D"
的行并输出,显示行号,忽略大小写
常用参数
- --color=auto : 对匹配到的文本着色显示
- --color : 对匹配到的文本着色显示
- -i : 忽略大小写
- -n : 显示行号
- -c : 统计匹配的行数
- -o : 每个符合条件的字符串单独显示一行
- -v : 输出不匹配的行
- -w : 不匹配字符串中包含这个单词
- -Ax : 在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after
- -Bx : 在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before
- -Cx : 在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context
- -q : 不输出任何信息,使用
echo $?
查看结果,0表示匹配,1表示没有匹配 - -P : 使用兼容perl的正则引擎
- -E : 使用扩展正则表达式,而不是基本正则表达式,在使用"-E"选项时,相当于使用egrep
ss
命令
(Socket Statistics)获取socket统计信息
- ss : 获取socket统计信息
常用参数
- -l : list 列表显示网络服务信息
- -n : number 以数字方式进行显示
- -u : udp 网络协议
- -t : tcp 网络协议
- -p : process 显示服务进程信息
netstat
命令
显示网络相关信息
-
如果无法使用命令,可以使用
yum install -y net-tools
安装 -
netstat : 显示网络相关信息
常用参数
- -l : list 列表显示网络服务信息
- -n : number 以数字方式进行显示
- -u : udp 网络协议
- -t : tcp 网络协议
- -p : process 显示服务进程信息
less
命令
查看文件
- less 1997sty : 查看文件
1997sty
操作命令
- q : 退出
- f : 向下一页
- ↓ : 向下一行
- b : 向上一页
- ↑ : 向上一行
- Space : 向下一页
- Enter : 向下一行
- ? : 输入搜索内容按回车进入搜索状态(向上搜索 n 依次向上)
- / : 输入搜索内容按回车进入搜索状态(向下搜索 n 依次向下)
more
命令
查看文件,查看到结尾时自动退出
- more 1997sty : 查看文件
1997sty
操作命令
- q : 退出
- f : 向下一页
- b : 向上一页
- Space : 向下一页
- Enter : 向下一行
sed
命令
- 擅长对行进行操作处理
- 擅长将文件的内容信息进行修改调整/删除
- 命令的匹配参数使用
''
修饰而不使用""
- 插入文本或替换文本可以使用
\n
和\t
执行参数
- -n : 取消默认输出
- -e : 可以指定多个命令
- -f : 指定命令文件
- -i : 将输出写入到原文件
- -r : 使用高级正则匹配
- -i.bak : 复制文件,文件名添加
.bak
再将输出结果写入到原文件 (该参数和其他参数同时使用时,需要写在最后一位)
- 注意 : 使用
-ni
参数时,n
参数会取消默认输出,i
参数只会将匹配操作以后输出的结果写入文件,如果不注意,可能结果会与预想的不同(输出结果即为写入文件内容)
[root@1997sty ~]# sed -ni '1c\100,oldgirl,UFO' person.txt
[root@1997sty ~]# cat person.txt
#可能预想结果
100,oldgirl,UFO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
#实际运行结果
100,oldgirl,UFO
匹配参数
左侧参数
- 2 : 匹配第二行
- 2,5 : 匹配第二行到第五行
- 2,$ : 匹配第二行到行尾
- /{}/ : 正则匹配行,高级正则匹配需要
-r
参数{}
内为匹配内容 - /{}/,/{}/ : 正则匹配左侧表达式的行到右侧表达式的行,左侧表达式匹配不到不匹配全部行,右侧表达式匹配不到则匹配剩余全部行,高级正则匹配需要
-r
参数{}
内为匹配内容
右侧参数
- a\{} : 从匹配行之后插入内容,
\
一般情况下可以省略{}
内为插入内容 - i\{} : 从匹配行之前插入内容,
\
一般情况下可以省略{}
内为插入内容 - c\{} : 替换匹配行内容,
\
一般情况下可以省略{}
内为替换内容 - d : 删除匹配内容
- !d : 删除不匹配内容
- p : 输出匹配内容
- !p : 输出不匹配内容
- ; : 在两条完整的匹配参数中间加入
;
来分隔 - s/{}/{}/g : 全局匹配替换
{}
内为匹配内容和替换内容 - s#{}#{}#g : 全局匹配替换
{}
内为匹配内容和替换内容
- 测试文本
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
新增操作
- sed '1i\100,oldgirl,UFO' person.txt : 在文件第一行之前插入
100,oldgirl,UFO
- sed '$a\108,oldgirl,UFO' person.txt : 在文件尾行之后插入
100,oldgirl,UFO
- sed -e '/oldboy/i\oldgirl' -e '/oldboy/a\olddog' person.txt : 在匹配
oldboy
行之前插入oldgirl
,在匹配oldboy
行之后插入olddog
,多个命令使用-e
追加
[root@1997sty ~]# sed '1i\100,oldgirl,UFO' person.txt
100,oldgirl,UFO
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed '$a\108,oldgirl,UFO' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
108,oldgirl,UFO
[root@1997sty ~]# sed -e '/oldboy/i\oldgirl' -e '/oldboy/a\olddog' person.txt
oldgirl
101,oldboy,CEO
olddog
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
oldgirl
106,oldboy,CIO
olddog
删除操作
- sed '3d' person.txt : 删除第三行内容
- sed '2,6d' person.txt : 删除第二行到第六行内容
- sed '/oldboy/d' person.txt : 删除匹配
oldboy
行内容 - sed '3d;6d' person.txt : 删除第三行和第六行内容
- sed '/zhaoyao/,/alex/d' person.txt : 删除匹配
zhaoyao
行到匹配alex
行内容,可以多次匹配,如果匹配alex
行不存在则输出剩余全部行
[root@1997sty ~]# sed '3d' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed '2,6d' person.txt
101,oldboy,CEO
[root@1997sty ~]# sed '/oldboy/d' person.txt
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
[root@1997sty ~]# sed '3d;6d' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
104,yy,CFO
105,feixue,CIO
[root@1997sty ~]# sed '/zhaoyao/,/alex/d' person.txt
101,oldboy,CEO
修改操作
- sed '1c\100,oldgirl,UFO' person.txt : 替换第一行内容为
100,oldgirl,UFO
- sed '2c\\n' person.txt : 替换第二行内容为
\n
- sed '2c\' person.txt : 删除第二行(如果替换内容为空则效果为删除,如果替换内容不为空则会追加
\n
) - sed 'c\' person.txt : 删除所有行(如果替换内容为空则效果为删除,如果替换内容不为空则会追加
\n
) - sed '1,3c\' person.txt : 删除第一行到第三行(如果替换内容为空则效果为删除,如果替换内容不为空则会追加
\n
) - sed 's/#o/?/g' person.txt : 匹配所有
#o
内容并将该内容替换为?
- sed 's#o#?#g' person.txt : 匹配所有
o
内容并将该内容替换为?
- sed 's#o#?#' person.txt : 匹配每行第一个
o
内容并将该内容替换为?
- sed 's#o#?#' person.txt : 匹配每行第一个
o
内容并将该内容替换为?
- sed -r 's/(.*),[a-zA-Z]+,[A-Z]+/&,\1/g' person.txt : 匹配所有
(.*),[a-zA-Z]+,[A-Z]+
内容并将该内容替换为&,\1
(&
为所有匹配内容,\1
为第一个()
内容) - sed -i.bak 's#o#?#g' person.txt : 匹配所有
o
内容并将该内容替换为?
,复制文件,文件名添加.bak
再将输出写入到原文件
[root@1997sty ~]# sed '1c\100,oldgirl,UFO' person.txt
100,oldgirl,UFO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed '2c\\n' person.txt
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed '2c\' person.txt
101,oldboy,CEO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed 'c\' person.txt
[root@1997sty ~]# sed '1,3c\' person.txt
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed 's/#o/?/g' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
[root@1997sty ~]# sed 's#o#?#g' person.txt
101,?ldb?y,CEO
102,zha?ya?,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,?ldb?y,CIO
[root@1997sty ~]# sed 's#o#?#' person.txt
101,?ldboy,CEO
102,zha?yao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
106,?ldboy,CIO
[root@1997sty ~]# sed -r 's/(.*),[a-zA-Z]+,[A-Z]+/&,\1/g' person.txt
101,oldboy,CEO,101
102,zhaoyao,CTO,102
103,Alex,COO,103
104,yy,CFO,104
105,feixue,CIO,105
106,oldboy,CIO,106
[root@1997sty ~]# sed -i.bak 's#o#?#g' person.txt
[root@1997sty ~]# ls person.txt*
person.txt person.txt.bak
查询操作
- sed -n '3p' person.txt : 取消默认输出,输出第三行内容
- sed -n '1,3p' person.txt : 取消默认输出,输出第一行到第三行内容
- sed -n '1p;3p' person.txt : 取消默认输出,输出第一行和第三行内容
- sed -n '/oldboy/p' person.txt : 取消默认输出,输出匹配
oldboy
行内容 - sed -n '/oldboy/,/Alex/p' person.txt : 取消默认输出,匹配
oldboy
行到匹配Alex
行内容,可以多次匹配,如果匹配Alex
行不存在则输出剩余全部行 - sed -n '/oldboy/p;/Alex/p' person.txt : 取消默认输出,匹配
oldboy
行和匹配Alex
行内容 - sed -n '1,3!p' person.txt : 取消默认输出,输出不是第一行到第三行内容
[root@1997sty ~]# sed -n '3p' person.txt
103,Alex,COO
[root@1997sty ~]# sed -n '1,3p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
[root@1997sty ~]# sed -n '1p;3p' person.txt
101,oldboy,CEO
103,Alex,COO
[root@1997sty ~]# sed -n '/oldboy/p' person.txt
101,oldboy,CEO
106,oldboy,CIO
[root@1997sty ~]# sed -n '/oldboy/,/Alex/p' person.txt
101,oldboy,CEO
102,zhaoyao,CTO
103,Alex,COO
106,oldboy,CIO
[root@1997sty ~]# sed -n '/oldboy/p;/Alex/p' person.txt
101,oldboy,CEO
103,Alex,COO
106,oldboy,CIO
[root@1997sty ~]# sed -n '1,3!p' person.txt
104,yy,CFO
105,feixue,CIO
106,oldboy,CIO
awk
命令
awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
执行参数
- -F : 修改字段分隔符,支持正则表达式
awk -F "正则表达式"
(默认是空格)
awk
内置变量
- [A][N][P][G]表示第一个支持变量的工具,[A]=awk、[N]=nawk、[P]=POSIXawk、[G]=gawk
- $n : 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段*
- $0 : 这个变量包含执行过程中当前行的文本内容*
- NF : 表示字段数,在执行过程中对应于当前的字段数[A]*
- NR : 表示记录数,在执行过程中对应于当前的行号[A]*
- FS : 字段分隔符(默认是任何空格)[A]*
- OFMT : 数字的输出格式(默认值是%.6g)[A]
- OFS : 输出字段分隔符(默认值是一个空格)[A]
- ORS : 输出记录分隔符(默认值是一个换行符)[A]
- RS : 记录分隔符(默认是一个换行符)[A]
- FILENAME : 当前输入文件的名[A]
- ARGV : 包含命令行参数的数组[N]
- ARGC : 命令行参数的数目[N]
- ERRNO : 最后一个系统错误的描述[N]
- RSTART : 由match函数所匹配的字符串的第一个位置[N]
- RLENGTH : 由match函数所匹配的字符串的长度[N]
- SUBSEP : 数组下标分隔符(默认值是34)[N]
- ENVIRON : 环境变量关联数组[P]
- FNR : 同NR,但相对于当前文件[P]
- ARGIND : 命令行中当前文件的位置(从0开始算)[G]
- CONVFMT : 数字转换格式(默认值为%.6g)[G]
- FIELDWIDTHS : 字段宽度列表(用空格键分隔)[G]
- IGNORECASE : 如果为真,则进行忽略大小写的匹配[G]
- 如果没有条件,默认条件为匹配所有行
- 操作的
{}
内可以写逻辑代码 - 条件部分更像一个筛选,操作部分则执行条件部分筛选剩下的文本
- 条件和操作部分的整体使用
''
修饰,操作部分定义变量和字符串使用""
修饰
条件
- NR==2 : 匹配第二行
- NR>=2, : 匹配第二行以后的行
- NR>2 : 第三行以后的行
- NR==2,NR==5 : 第二行到第五行
- NR==2;NR==5 : 第二行和第五行
- /{}/ : 正则匹配行,
{}
内为匹配内容 - !/{}/ : 正则不匹配行,
{}
内为匹配内容(反向匹配) - /{}/,/{}/ : 正则匹配左侧表达式的行到右侧表达式的行,左侧表达式匹配不到不匹配全部行,右侧表达式匹配不到则匹配剩余全部行,
{}
内为匹配内容 - $1~/{}/ : 第一列正则匹配行,
{}
内为匹配内容 - $1!~/{}/ : 第一列正则不匹配行,
{}
内为匹配内容(反向匹配) - $1>1000 : 第一列大于
1000
的行 - $1=="root" : 第一列为
root
的行
操作
- BEGIN{} : BEGIN语句块 在awk开始从输入流中读取行 之前 被执行,这是一个可选的语句块,比如变量初始化、打印输出表格的表头等语句通常可以写在BEGIN语句块中,该语句块左侧不能有模式语句如果有需要使用
;
隔开 - {} : pattern语句块 中的通用命令是最重要的部分,它也是可选的如果没有提供pattern语句块,则默认执行
{ print }
,即打印每一个读取到的行,awk读取的每一行都会执行该语句块 - END{} : END语句块 在awk从输入流中读取完所有的行 之后 即被执行,比如打印所有行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块,该语句块左侧不能有模式语句如果有需要使用
;
隔开
- 测试文本
Zhang Dandan 41117397 :250:100:175
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
查询信息
- awk 'NR==2{print $0}' awk_test.txt : 输出第二行的所有内容(
{print $0}
可以省略) - awk 'NR>2{print $0}' awk_test.txt : 输出第三行以后的所有内容
- awk 'NR>=2{print $0}' awk_test.txt : 输出第二行以后的所有内容
- awk 'NR==2,NR==5' awk_test.txt : 输出第二行到第五行的所有内容
- awk 'NR==2;NR==5' awk_test.txt : 输出第二行和第五行的所有内容
- awk 'NR==2{print $1};NR==5' awk_test.txt : 输出第二行第一列和第五行的所有内容
- awk '$2~/Xiaoyu/' awk_test.txt : 输出第二列匹配
Xiaoyu
行的所有内容 - awk '{print $NF}' awk_test.txt : 输出所有行的最后一列内容
$NF
表示最后一列NF
表示列数 - awk -F "[ :]+" '{print $4}' awk_test.txt : 以
[ :]+
正则匹配的内容为分隔符,输出第五列内容 - awk '/Xiaoyu/;BEGIN{FS="[: ]+"}{print $4}' awk_test.txt : 先将
FS
设为[: ]+
,输出匹配Xiaoyu
行的所有内容,再输出第四列内容,效果等同于awk '/Xiaoyu/{print $0};BEGIN{FS="[: ]+"}{print $4}' awk_test.txt
(FS
为内容分隔符)
[root@1997sty ~]# awk 'NR==2{print $0}' awk_test.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@1997sty ~]# awk 'NR>2{print $0}' awk_test.txt
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
[root@1997sty ~]# awk 'NR>=2{print $0}' awk_test.txt
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
[root@1997sty ~]# awk 'NR==2,NR==5' awk_test.txt
Zhang Xiaoyu 390320151 :155:90:201
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
[root@1997sty ~]# awk 'NR==2;NR==5' awk_test.txt
Zhang Xiaoyu 390320151 :155:90:201
Liu Bingbing 41117483 :250:100:175
[root@1997sty ~]# awk 'NR==2{print $1};NR==5' awk_test.txt
Zhang
Liu Bingbing 41117483 :250:100:175
awk '$2~/Xiaoyu/' awk_test.txt
[root@1997sty ~]# awk '$2~/Xiaoyu/' awk_test.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@1997sty ~]# awk '{print $NF}' awk_test.txt
:250:100:175
:155:90:201
:250:60:50
:250:80:75
:250:100:175
:50:95:135
:250:168:200
:175:75:300
:250:100:175
[root@1997sty ~]# awk -F "[ :]+" '{print $4}' awk_test.txt
250
155
250
250
250
50
250
175
250
[root@1997sty ~]# awk '/Xiaoyu/;BEGIN{FS="[: ]+"}{print $4}' awk_test.txt
250
Zhang Xiaoyu 390320151 :155:90:201
155
250
250
250
50
250
175
250
排除信息
- awk '$2!~/Xiaoyu/' awk_test.txt : 输出第二列不匹配
Xiaoyu
行的所有内容(反向匹配)
[root@1997sty ~]# awk '$2!~/Xiaoyu/' awk_test.txt
Zhang Dandan 41117397 :250:100:175
Meng Feixue 80042789 :250:60:50
Wu Waiwai 70271111 :250:80:75
Liu Bingbing 41117483 :250:100:175
Wang Xiaoai 3515064655 :50:95:135
Zi Gege 1986787350 :250:168:200
Li Youjiu 918391635 :175:75:300
Lao Nanhai 918391635 :250:100:175
统计信息
- awk '{i++}END{print i}' awk_test.txt : 每读取一行
i
自增,结束后输出结果(统计行数)
[root@1997sty ~]# awk '{i++}END{print i}' awk_test.txt
9
替换信息
- awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt : 第二列匹配
Xiaoyu
行,正则匹配:
并替换为$
,范围是$NF
列,输出$NF
列(gsub第三个参数不填,默认为$0
)
[root@1997sty ~]# awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' awk_test.txt
$155$90$201
tr
命令
输出替换后内容,不会修改原文件
- tr '1' 'x' < 1997sty : 将
1997sty
文件中的1
替换为x
,输出替换后的结果,不修改原文件 - tr 'a-z' 'A-Z' < 1997sty : 将
1997sty
文件中的小写字母替换为大写字母,输出替换后的结果,不修改原文件
file
命令
辨识文件类型
- file 1997sty : 查看
1997sty
的文件类型
ln
命令
(link)创建链接文件
- ln -s 1997sty 1997sty_link : 创建一个
1997sty
文件的软链接1997sty_link
- ln 1997sty 1997sty_link : 创建一个
1997sty
文件的硬链接1997sty_link
软、硬链接说明
- 软链接:不可以删除源文件,删除源文件导致链接文件找不到,出现文件红色闪烁
- 硬链接:可以删除源文件,链接文件可以正常打开,索引信息相同
find
命令
查找文件
- find /root : 查找
/root
目录下的文件或目录,并显示文件路径 - find /root -type f -name '1*' : 查找
/
目录下,类型为普通文件,名字为1*
(*
匹配任何字符)开头的文件或目录,并显示文件路径 - find /root : 查找
/root
目录下的文件或目录,并显示文件路径 - find /root -name '1*' : 查找
/root
目录下的文件,名字为1*
开头的文件或目录,并显示文件路径 - find /root -iname '*sty' : 查找
/root
目录下的文件,名字为*sty
开头的文件或目录忽略大小写,并显示文件路径 - find /root -maxdepth 1 -name '*sty' : 查找
/root
目录下的文件,查找深度为递归当前一级目录,名字为*sty
开头的文件或目录,并显示文件路径 - find /root -maxdepth 3 -name '*sty' : 查找
/root
目录下的文件,查找深度为递归当前三级目录,名字为*sty
开头的文件或目录,并显示文件路径 - find /root -size +100 : 查找
/root
目录下大于100K的文件 - find /root -size -100 : 查找
/root
目录下小于100K的文件 - find /root -size +1M : 查找
/root
目录下大于1M的文件 - find -type f -name "*.txt" -exec cp {} txtdir/ \; : 查找当前目录下
.txt
结尾的文件,将找出的文件进行批量复制到/txtdir目录中
-exec
参数后面跟的是command命令,它是以;
为结束标志的,所以分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加\
,{}
表示的是代表前面find查找出来的文件名
- find -type f -name "*.txt" -delete : 查找当前目录下
.txt
结尾的文件,将找出的文件进行删除 - find -type f -name "*.txt" | xargs rm -f : 查找当前目录下
.txt
结尾的文件,将结果通过xargs
命令转换为单行并执行删除命令 - find -type f -perm 777 : 查找当前目录下权限为777的文件(匹配三组权限位,完全匹配才算命中)
- find -type f -perm -644 : 查找当前目录下权限大于644的文件(匹配一组权限位,只要其中一组权限位匹配才算命中)
- find -type f -perm /622 : 查找当前目录下权限满足622的文件(匹配一个权限位,只要其中一个权限位匹配才算命中)
- find -amin +1 : 查找当前目录下,访问时间1分钟前的文件
- find -atime +1 : 查找当前目录下,访问时间1天前的文件
- find -amin -1 : 查找当前目录下,访问时间1分钟内的文件
- find -atime -1 : 查找当前目录下,访问时间1天内的文件
-amin +1 访问时间1分钟前 -atime +1 访问时间1天前
-mmin +1 修改时间1分钟前 -mtime +1 修改时间1天前
-cmin +1 改动时间1分钟前 -ctime +1 改动时间1天前
-amin -1 访问时间1分钟内 -atime -1 访问时间1天内
-mmin -1 修改时间1分钟内 -mtime -1 修改时间1天内
-cmin -1 改动时间1分钟内 -ctime -1 改动时间1天内
执行参数
- -maxdepth : 查找目录层级的深度
- -inum : 根据文件inode信息查找
- -exec : 对查找出的数据进行相应处理
- -perm : 根据权限查找数据信息
- -iname : 忽略名称大小写
- -delete : 删除查找的内容
-size
文件大小单位
b
for 512-byte blocks (this is the default if no suffix is used)c
for bytesw
for two-byte wordsk
for Kilobytes (units of 1024 bytes)M
for Megabytes (units of 1048576 bytes)G
for Gigabytes (units of 1073741824 bytes)
systemctl
命令
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器
- systemctl : 查看管理服务程序的运行状态
- systemctl start sshd : 启动
sshd
服务 - systemctl stop sshd : 停止
sshd
服务 - systemctl restart sshd : 重启
sshd
服务 - systemctl status sshd : 查看
sshd
服务详细的运行状态 - systemctl disable sshd : 设置
sshd
服务开机不运行 - systemctl enable sshd : 设置
sshd
服务开机运行 - systemctl is-active sshd : 检查确认
sshd
服务是否运行 - systemctl is-enabled sshd : 检查确认
sshd
服务是否开机运行
locate
命令
查找文件,快速定位文件路径
- Centos7中默认不存在该命令,需要进行安装
yum install -y mlocate
- 安装完成后需要执行一下命令来建立索引,如果要搜索刚刚创建的文件,需要先执行以下命令创建索引后再搜索
updatedb
- locate 1997sty : 搜索包含
1997sty
的文件和目录,并打印输出
tree
命令
显示目录结构信息
- Centos7中默认不存在该命令,需要进行安装
yum install -y tree
- tree /root : 显示
/root
目录中的所有数据和所有结构信息 - tree -L 2 / : 查看
/
目录结构层级信息 - tree -d /root : 显示
/root
目录中所有结构信息
tar
命令
用来压缩和解压文件 tar本身不具有压缩功能,通过调用压缩功能实现
- tar -zcvf 1997sty.tar.gz 1997sty : 创建
1997sty.tar.gz
压缩文件,内容为1997sty
文件或目录 - tar -zcvf 1997sty.tar.gz 1997sty 1997sty.bak : 创建
1997sty.tar.gz
压缩文件,内容为1997sty
,1997sty.bak
文件或目录 - tar -zxvf 1997sty.tar.gz : 提取
1997sty.tar.gz
压缩文件到当前目录 - tar -tf 1997sty.tar.gz : 直接查看压缩包里面的数据
- tar -zcvf 1997sty.tar.gz ./dirtest --exclude 1997sty.bak : 创建
1997sty.tar.gz
压缩文件,内容为dirtest
目录,并且排除1997sty.bak文件(对需要排除的文件路径,尽量使用相对路径描述,否则可能排除失败) - tar -zcvf 1997sty.tar.gz ./dirtest --exclude-from notar : 创建
1997sty.tar.gz
压缩文件,内容为dirtest
目录,并且排除notar文件中的记录的文件名(对记录排除信息的文件路径,尽量使用相对路径描述,否则可能排除失败) - find /root -name '*.txt' | xargs tar -zcvf 1997sty.tar.gz : 查找
/root
目录下的文件,名字为*.txt
的文件或目录,并将结果通过xargs
命令转为单行传递给tar
命令进行创建1997sty.tar.gz
压缩文件 - tar -zcvf 1997sty.tar.gz `find /root -name '*.txt'` : 查找
/root
目录下的文件,名字为*.txt
的文件或目录,并将结果传递给tar
命令进行创建1997sty.tar.gz
压缩文件
绝对路径压缩说明
tar: Removing leading
/
from member names
tar: 从成员名中删除开头的
/
如果使用绝对路径,在解压时会将所有路径还原到当前路径下,所以推荐使用相对路径
tar -zcvf 1997sty.tar.gz /root/dirtest/1997sty
执行参数
- -z : 支持gzip解压文件*
- -c : 建立新的压缩文件*
- -x : 从压缩的文件中提取文件*
- -v : 显示操作过程*
- -f : 指定压缩文件*
- -j : 支持bzip2解压文件*
- -t : 显示压缩文件的内容*
- -A : 新增压缩文件到已存在的压缩
- -B : 设置区块大小
- -b : 设置区块数目
- -C : 切换到指定目录
- -d : 记录文件的差别
- -k : 保留原有文件不覆盖
- -l : 文件系统边界设置
- -m : 保留文件不被覆盖
- -r : 添加文件到已经压缩的文件
- -u : 添加改变了和现有的文件到已经存在的压缩文件
- -W : 确认压缩文件的正确性
- -Z : 支持compress解压文件
- --help : 显示帮助信息
- --version : 显示版本信息
stat
命令
查看文件的详细信息
- stat 1997sty : 查看
1997sty
的详细信息
date
命令
查看时间信息
- date : 查看时间信息
- date "+%F" : 以其他格式查看时间信息
- date -s "20201212" : 设置时间为20201212
- date -d "+10year" : 查看10年以后时间信息
year 年 month 月 day 日 hour 时 min 分 sec 秒
执行参数
- %F : 完整日期;与%Y-%m-%d相同
- %H : 小时(00..23)
- %I : 小时(01..12)
- %k : 小时(0..23)
- %l : 小时(1..12)
- %M : 分钟(00..59)
- %p : 显示本地 AM 或 PM
- %r : 直接显示时间 (12 小时时制,格式为 hh:mm:ss [AP]M)
- %s : 从 1970 年 1 月 1 日 00:00:00 UTC 到当前为为止的秒数
- %S : 秒(00..61)
- %T : 直接显示时间 (24 小时制)
- %X : 相当于 %H:%M:%S
- %Z : 显示时区 %a** : 星期几(Sun..Sat)
- %A : 星期几 (Sunday..Saturday)
- %b : 月份 (Jan..Dec)
- %B : 月份 (January..December)
- %c : 直接显示期与时间
- %d : 日 (01..31)
- %D : 直接显⽰⽇期 (mm/dd/yy)
- %h : 同 %b
- %j : 一年中的第几天 (001..366)
- %m : 月份 (01..12)
- %U : 一年中的第几周 (00..53) ( 以 Sunday 为一周的第几天的情形)
- %w : 一周中的第几天 (0..6)
- %W :一年中的第几周 (00..53) ( 以 Monday 为几周的第几天的情形)
- %x : 直接显示日期 (mm/dd/yy)
- %y : 年份的最后两位数字 (00.99)
- %Y : 完整年份 (0000..9999)
date
命令其他使用方法
- cp 1997sty 1997sty`date +%F` : 复制
1997sty
文件,并在后面追加时间信息
时间同步
- 使用
ntpdate
命令同步时间 Centos7默认没有该命令需要安装
yum install -y ntpdate
#安装完成后执行以下命令
ntpdate ntp1.aliyun.com
xargs
命令
命令传递参数的一个过滤器,也是组合多个命令的一个工具,可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据,也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行
- xargs < 1997sty : 查看
1997sty
文件,并将结果通过xargs
命令单行输出 - xargs -n3 < 1997sty : 查看
1997sty
文件,并将结果通过xargs
命令每行输出三行结果
wc
命令
计算文件的Byte数、字数、或是列数
- wc -l 1997sty : 显示
1997sty
文件行数
chmod
命令
只能文件属主或特权用户才能使用该功能来改变文件存取模式
- chmod 777 1997sty : 对当前目录下的
1997sty
文件赋予777权限 - chmod a=rwx 1997sty : 对当前目录下的
1997sty
文件赋予777权限 - chmod u-w 1997sty : 对当前目录下的
1997sty
文件的属主减去写权限 - chmod g-w 1997sty : 对当前目录下的
1997sty
文件的属组减去写权限 - chmod a-w 1997sty : 对当前目录下的
1997sty
文件的属主属组其他用户减去写权限 - chmod a=rwx,o= 1997sty : 对当前目录下的
1997sty
文件的属主属组其他用户赋予777权限,其他用户没有权限 - chmod -R 777 1997sty : 对当前目录下的
1997sty
目录,子目录,文件递归修改为777权限
执行参数
- -R : 对当前目录下所有文件和目录递归修改权限
权限参数
- a : 所有用户
- u : 所属用户
- g : 所属组
- o : 其他用户
- = : 等于权限
- + : 增加权限
- - : 减去权限
- r : 读权限(4)
- w : 写权限(2)
- x : 执行权限(1)
umask
命令
权限掩码,umask值表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值
- umask : 查看umask值(root用户默认为0022 普通用户为0002)
- umask 000 : 临时设置umask值为000
如果要永久设置umask值,需要/etc/profile
中以下内容并修改后重新加载文件
# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
文件目录初始权限计算
- 并不是666-033=633 而是掩去umask值的权限位 剩下没有掩去的权限位就是文件目录的初始权限
- 文件默认最大权限为666 umask值为022 结果为644
(-rw-rw-rw-)–(-----w--w-)=(-rw-r--r--)
- 文件默认最大权限为666 umask值为033 结果为644
(-rw-rw-rw-)–(-----wx-wx)=(-rw-r--r--)
- 目录默认最大权限为777 umask值为022 结果为755
(-rwxrwxrwx)–(-----w--w-)=(-rwxr-xr-x)
- 目录默认最大权限为777 umask值为033 结果为744
(-rwxrwxrwx)–(-----wx-wx)=(-rwxr--r--)
useradd
命令
创建用户命令
- useradd 1997sty : 创建一个
1997sty
用户 - useradd 1997sty -M -s /sbin/nologin : 创建一个
1997sty
用户,不创建家目录,指定shell登录方式为/sbin/nologin
(无法登录的用户) - useradd 1997sty -u 2000 : 创建一个
1997sty
用户,指定用户uid为2000 - useradd 1997sty -g 1997sty_1 -G 1997sty_2 : 创建一个
1997sty
用户,指定用户所属组为1997sty_1
,指定用户附属组为1997sty_2
- useradd 1997sty -c "manager" : 创建一个
1997sty
用户,注释信息为manager
指定用户shell登录方式
/bin/bash
通用的解释器/usr/bin/sh
等价于/bin/bash/usr/bin/bash
等价于/bin/bash/sbin/nologin
无法登录系统/usr/sbin/nologin
无法登录系统
执行参数
- -M : 不创建家目录
- -s : 指定用户shell登录方式
- -u : 指定用户uid信息
- -g : 指定用户所属主要组信息
- -G : 指定用户所属附属组信息
- -c : 指定用户注释信息
usermod
命令
修改用户信息
- usermod 1997sty -s /sbin/nologin : 修改
1997sty
用户,指定shell登录方式为/sbin/nologin
(无法登录的用户) - usermod 1997sty -u 3000 : 修改
1997sty
用户,指定uid为3000
指定用户shell登录方式
/bin/bash
通用的解释器/usr/bin/sh
等价于/bin/bash/usr/bin/bash
等价于/bin/bash/sbin/nologin
无法登录系统/usr/sbin/nologin
无法登录系统
执行参数
- -s : 指定用户shell登录方式
- -u : 指定用户uid信息
- -g : 指定用户所属主要组信息
- -G : 指定用户所属附属组信息
- -c : 指定用户注释信息
userdel
命令
删除用户信息
- userdel 1997sty : 删除
1997sty
用户 - userdel -r 1997sty : 删除
1997sty
用户以及用户的家目录
passwd
命令
修改用户密码信息
- passwd : 修改当前用户密码
- passwd 1997sty : 修改
1997sty
用户密码
非交互式设置密码
- echo 123456|passwd --stdin 1997sty : 修改
1997sty
用户密码
企业中密码管理
- 密码要复杂12位以上字母数字及特殊符号
- 保存好密码信息
keepass
密码保险柜,本地存储密码lastpass
密码保险柜,在线存储密码 - 大企业 用户和密码统一管理 相当于活动目录AD openldap域 用户信息统一保存在一个用户管理服务器中 用户的家目录中的文件 用户密码 用户名称
- 动态密码:动态口令,第三方提供自己开发也很简单
groupadd
命令
创建用户组
- groupadd 1997sty_group : 创建
1997sty_group
用户组 - groupadd -g 1234 1997sty_group : 创建
1997sty_group
用户组,gid为1234
groupmod
命令
修改用户组
- groupmod -n group_1997sty 1997sty_group : 修改
1997sty_group
用户组名为group_1997sty
- groupmod -g 1234 1997sty_group : 修改
1997sty_group
用户组gid为1234
groupdel
命令
删除用户组
- groupdel 1997sty_group : 删除
1997sty_group
用户组
chown
命令
修改文件属主和属组信息
- chown 1997sty /root/1997sty : 修改
1997sty
文件属主信息为1997sty
- chown 1997sty.1997sty /root/1997sty : 修改
1997sty
文件属主和属组信息为1997sty
- chown -R 1997sty.1997sty /root/1997sty : 修改
1997sty
目录,子目录和目录内文件的属主和属组信息为1997sty
id
命令
查看用户信息
- id : 查看当前用户信息
- id root : 查看
root
用户信息
w
命令
显示正在登陆系统的用户信息
- w : 显示正在登陆系统的用户信息
16:23:53 up 4 days, 1:00, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 13:41 1.00s 0.22s 0.22s -bash
参数说明
- 登录用户
- 登录方式 pts/x 远程登录系统 tty1 本地登录
- 登录到服务器的地址
- 登录时间
- IDLE 空闲时间
- 用户操作系统 消耗的CPU资源时间
- 用户操作系统 消耗的CPU资源时间
- 用户进行的操作
发送文本给其他登录用户
- echo "发送该文本到其他登录用户的命令行" >/dev/pts/1 : 发送该文本到其他登录用户的命令行
su
命令
切换用户命令
- su 1997sty : 切换到
1997sty
用户 - su - 1997sty : 切换到
1997sty
用户,并且更改所有变量(使用env
命令查看)
[root@1997sty ~]# su - 1997sty
上一次登录:一 11月 25 18:23:58 CST 2019pts/2 上
[1997sty@1997sty ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/1997sty/.local/bin:/home/1997sty/bin
[1997sty@1997sty ~]$ exit
登出
[root@1997sty ~]# su 1997sty
[1997sty@1997sty root]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
visudo
命令
编辑
/etc/sudoers
只读文件,可以赋予其他用户权限
1997sty ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm
该行文本赋予了1997sty
用户useradd
,rm
命令root
级别的权限,修改完成后:wq
保存退出(位于文本第91行)
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
1997sty ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm
配置方法
#配置单个或多个命令
1997sty ALL=(ALL) /usr/sbin/useradd, /usr/bin/rm
#授权单个命令目录或多个命令目录,并排除visudo命令
/usr/sbin/*, !/usr/sbin/visudo , /usr/bin/*
#不需要输入用户密码,可以直接sudo方式执行命令
NOPASSWD: /usr/sbin/*, !/usr/sbin/visudo , /usr/bin/*
sudo
命令
让普通用户执行root命令的一个工具
- sudo useradd 1997stysudo : 使用
sudo
命令创建一个1997stysudo
用户(普通用户执行该命令且被赋予该root权限) - sudo rm -rf /root/1997sty : 使用
sudo
命令强制删除1997sty
文件(普通用户执行该命令且被赋予该root权限) - sudo -l : 使用
sudo
命令查看被赋予的root
权限(普通用户执行该命令且被赋予该root权限)
sudo
命令近期第一次使用时提示以下信息并要求输入密码
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) Respect the privacy of others.
#1) 尊重别人的隐私。
#2) Think before you type.
#2) 输入前要先考虑(后果和风险)。
#3) With great power comes great responsibility.
#3) 权力越大,责任越大。
[sudo] password for 1997sty:
User oldboy may run the following commands on 1997sty:
(ALL) /usr/sbin/useradd, /usr/bin/rm
chattr
命令
用于改变文件属性
- chattr +i /etc/passwd :
/etc/passwd
不得任意更动 - chattr -i /etc/passwd :
/etc/passwd
可以任意更动
执行参数
- a : 让文件或目录仅供附加用途。
- b : 不更新文件或目录的最后存取时间。
- c : 将文件或目录压缩后存放。
- d : 将文件或目录排除在倾倒操作之外。
- i : 不得任意更动文件或目录。
- s : 保密性删除文件或目录。
- S : 即时更新文件或目录。
- u : 预防意外删除。
lsattr
命令
用于显示文件属性
- lsattr /etc/passwd : 查看
/etc/passwd
属性
crontab
命令
定时任务服务
- crontab -l : 用户定时任务查看
- crontab -e : 用户定时任务编辑
定时规则
# 每分钟
* * * * *
# 每小时第20分钟
20 * * * *
# 每小时第10分钟和第20分钟
10,20 * * * *
# 每小时第10分钟到第20分钟
10-20 * * * *
# 每10分钟
*/10 * * * *
# 每个小时10分钟后的每两分钟
10/2 * * * *
# 每天14点的每分钟
* 14 * * *
# 每天14点的每分钟
0 14 * * *
# 每月4日
* * 4 * *
# 每年4月
* * * 4 *
# 每个星期六
* * * * 6
fdisk
命令
管理小于2T的磁盘,所有的操作记录在内存中不会立刻生效,直到输入
w
- fdisk -l : 查看所有磁盘
已知磁盘
/dev/sdb
对磁盘进行分区操作
- d : 删除分区
- g : 创建一个新的空GPT分区表(处理大于2T的磁盘)
- l : 列出已知的分区类型
- m : 打印此菜单
- n : 添加新分区
- o : 创建新的空DOS分区表(处理小于2T的磁盘)
- p : 打印分区表
- q : 不保存更改就退出
- t : 更改分区的系统id
- u : 改变分区的方式/是否按照扇区进行划分
- w : 将表写入磁盘并退出
[root@1997sty ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x50b1173a 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):m
命令操作
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
命令(输入 m 获取帮助):
添加新分区,最多可以创建4个主分区或者3个主分区和1个扩展分区
- p primary (0 primary, 0 extended, 4 free)
- p 主分区(0 主分区,0 扩展分区, 4个可用)
- e extended
- e 扩展分区
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
删除分区,如果只有1个分区就会直接删除
命令(输入 m 获取帮助):d
分区号 (1,2,默认 2):2
分区 2 已删除
添加扩展分区,需要添加逻辑分区才可以使用
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e
分区号 (2-4,默认 2):
起始 扇区 (2099200-20971519,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-20971519,默认为 20971519):+3G
分区 2 已设置为 Extended 类型,大小设为 3 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (2101248-8390655,默认为 2101248):
将使用默认值 2101248
Last 扇区, +扇区 or +size{K,M,G} (2101248-8390655,默认为 8390655):
将使用默认值 8390655
分区 5 已设置为 Linux 类型,大小设为 3 GiB
将表写入磁盘并退出
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x7a1accec
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 16779263 4194304 5 Extended
/dev/sdb4 16779264 16781311 1024 83 Linux
/dev/sdb5 8392704 14684159 3145728 83 Linux
/dev/sdb6 14686208 16779263 1046528 83 Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
parted
命令
管理大于2T磁盘,分区后直接生效
已知磁盘
/dev/sdc
对磁盘进行分区操作
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
---- 创建新的磁盘标签(分区表)print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
---- 显示分区表、可用设备、可用空间、所有找到的分区或特定分区mkpart PART-TYPE [FS-TYPE] START END make a partition
---- 创建一个分区quit exit program
---- 退出程序rm NUMBER delete partition NUMBER
---- 删除分区 NUMBER
[root@1997sty ~]# parted /dev/sdc
GNU Parted 3.1
使用 /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help
align-check TYPE N check partition N for TYPE(min|opt) alignment
help [COMMAND] print general help, or help on COMMAND
mklabel,mktable LABEL-TYPE create a new disklabel (partition table)
mkpart PART-TYPE [FS-TYPE] START END make a partition
name NUMBER NAME name partition NUMBER as NAME
print [devices|free|list,all|NUMBER] display the partition table, available devices, free space, all found partitions, or a particular partition
quit exit program
rescue START END rescue a lost partition near START and END
resizepart NUMBER END resize partition NUMBER
rm NUMBER delete partition NUMBER
select DEVICE choose the device to edit
disk_set FLAG STATE change the FLAG on selected device
disk_toggle [FLAG] toggle the state of FLAG on selected device
set NUMBER FLAG STATE change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]] toggle the state of FLAG on partition NUMBER
unit UNIT set the default unit to UNIT
version display the version number and copyright information of GNU Parted
(parted)
修改磁盘分区类型
(parted) mklabel gpt
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? y
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
磁盘分区
(parted) mkpart primary 0 2100G
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? i
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3221GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 17.4kB 2100GB 2100GB primary
partprobe
命令
系统重新读取分区表,不重启服务器情况下重新读取分区列表
- partprobe : 系统重新加载分区表
- partprobe /dev/sdb : 系统重新加载
/dev/sdb
分区表
mkfs
命令
(Make FileSystem) 在特定的分区上建立linux文件系统(格式化操作)
mkfs.xfs /dev/sdc1
: 在/dev/sdc
建立xfs文件系统mkfs /dev/sdc1
: 在/dev/sdc
建立ext2文件系统mkfs -t xfs /dev/sdb4
: 在/dev/sdb4
建立xfs文件系统
dd
命令
可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件 设备 标准输出
- dd if=/dev/zero of=/tmp/file1000M bs=10M count=100 : 从
/dev/zero
输入信息,输出信息到/tmp/file1000M
,每次输入10M,进行100次
常用参数
- if=文件名 : 输入文件名,默认为标准输入即指定源文件
- of=文件名 : 输出文件名,默认为标准输出即指定目的文件
- ibs=bytes : 一次读入bytes个字节,即指定一个块大小为bytes个字节
- obs=bytes : 一次输出bytes个字节,即指定一个块大小为bytes个字节
- bs=bytes : 同时设置读入/输出的块大小为bytes个字节
- cbs=bytes : 一次转换bytes个字节,即指定转换缓冲区大小
- skip=blocks : 从输入文件开头跳过blocks个块后再开始复制
- seek=blocks : 从输出文件开头跳过blocks个块后再开始复制
- count=blocks : 仅拷贝blocks个块,块大小等于ibs指定的字节数
sort
命令
可针对文本文件的内容,以行为单位来排序
- sort -n -k2 num.txt : 对第二列,依照数值的大小排序,并输出
- sort -n num.txt : 依照数值的大小排序,并输出
常用参数
- -b : 忽略每行前面开始出的空格字符
- -c : 检查文件是否已经按照顺序排序
- -d : 排序时,处理英文字母、数字及空格字符外,忽略其他的字符
- -f : 排序时,将小写字母视为大写字母
- -i : 排序时,除了040至176之间的ASCII字符外,忽略其他的字符
- -m : 将几个排序好的文件进行合并
- -M : 将前面3个字母依照月份的缩写进行排序
- -n : 依照数值的大小排序
- -o : 将排序后的结果存入指定的文件
- -r : 以相反的顺序来排序
du
命令
显示目录或文件的大小
- du : 查看当前目录下的文件和目录大小
- du -s / : 查看
/
目录的大小 - du -sh / : 查看
/
目录的大小,以K,M,G为单位,提高信息的可读性
常用参数
- -s : 显示该文件或目录的信息
- -h : 以K,M,G为单位,提高信息的可读性
0 条评论