【Linux 常用命令】
跳到导航
跳到搜索
系统版本
- 查看系统的发行版本:
cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core)
- 查看系统的内核版本:
uname -r 5.2.8-1.el7.elrepo.x86_64
systemctl
systemctl 是 CentOS 7 的服务管理工具中主要的工具,它融合之前 service 和 chkconfig 的功能于一体。
常用命令:
# 启动一个服务: systemctl start firewalld.service # 关闭一个服务: systemctl stop firewalld.service # 重启一个服务: systemctl restart firewalld.service # 显示一个服务的状态: systemctl status firewalld.service # 在开机时启用一个服务: systemctl enable firewalld.service # 在开机时禁用一个服务: systemctl disable firewalld.service # 查看服务是否开机启动: systemctl is-enabled firewalld.service # 查看已启动的服务列表: systemctl list-unit-files|grep enabled # 查看启动失败的服务列表: systemctl --failed
防火墙
- firewalld 的基本使用:
# 启动 systemctl start firewalld # 关闭 systemctl stop firewalld # 查看状态 systemctl status firewalld # 开机禁用 systemctl disable firewalld # 开机启用 systemctl enable firewalld
- (“firewalld”或“firewalld.service”)
- 配置 firewalld-cmd:
# 查看版本: firewall-cmd --version # 查看帮助: firewall-cmd --help # 显示状态: firewall-cmd --state # 重新载入防火墙配置 firewall-cmd --reload # 添加端口 firewall-cmd --zone=public --add-port=80/tcp --permanent # 删除端口 firewall-cmd --zone= public --remove-port=80/tcp --permanent # 查看端口 firewall-cmd --zone= public --query-port=80/tcp # 查看所有打开的端口: firewall-cmd --zone=public --list-ports # 查看区域信息: firewall-cmd --get-active-zones # 查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0 # 拒绝所有包: firewall-cmd --panic-on # 取消拒绝状态: firewall-cmd --panic-off # 查看是否拒绝: firewall-cmd --query-panic
- “--permanent”:永久生效,没有此参数重启后失效。
文件(夹)命令
文件夹常用的命令:查看信息(ls)、复制(cp)、移动(mv)、删除(rm)、创建/修改文件(touch)
ls
ls 用于查看文件(夹)的信息 默认显示的只有:非隐藏文件的文件名、以文件名进行排序及文件名代表的颜色显示
ls 选项与参数:
cp
cp 选项与参数:
mv
mv 选项与参数:
rm
rm 选项与参数:
- 删除某个文件外的其他文件:
yes | rm -rf `ls | grep -v ".well-known "`
touch
touch 选项与参数:
通道命令
压缩/解压
Linux 下常见的压缩包格式有 5 种: zip、tar.gz、tar.bz2、tar.xz、tar.Z;
- 其中:tar 是种打包格式,gz / bz2 后缀才是指代压缩方式(gzip / bzip2);
- 压缩率一般来说:tar.bz2 > tar.gz > zip > tar;压缩率越高,压缩以及解压的时间也就越长。
支持的格式
格式 | 命令 |
---|---|
常用格式 | |
.zip |
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
|
.tar |
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
|
.gz |
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
|
.tar.gz和.tgz |
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
|
.bz2 |
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
|
.tar.bz2 |
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
|
.bz |
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
|
.tar.bz |
解压:tar jxvf FileName.tar.bz
|
.Z |
解压:uncompress FileName.Z
压缩:compress FileName
|
.tar.Z |
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
|
其他格式 | |
.rar |
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
|
.lha |
解压:lha -e FileName.lha
压缩:lha -a FileName.lha FileName
|
.rpm |
解包:rpm2cpio FileName.rpm | cpio -div
|
.deb |
解包:ar p FileName.deb data.tar.gz | tar zxf -
|
tar
常用参数说明:
参数 | 描述 | |
---|---|---|
操作类型 | -c | 建立压缩档案 |
-x | 解压 | |
-t | 查看内容
# 查看test包中有哪些文件,但不解压
tar -tvf test.tar
| |
-r | 向压缩归档文件末尾追加文件
# 在test.tar包中增加文件
tar -rf test.tar testfile
| |
-u | 更新原压缩包中的文件
# 更新压缩包中的test文件
tar -uf test.tar --add-file=test
| |
文件格式 | -z | 有 gzip 属性的(gzip 格式,以“.tar.gz”/“.tgz”为扩展名) |
-j | 有 bzip2 属性的(以“.tar.bz2”/“.tar.bz”为扩展名) | |
-Z | 有 compress 属性的(以“.Z”为扩展名) | |
其他参数 | -v | 显示详细过程 |
-f | 指定档案名字
| |
-O | 将文件解开到标准输出 | |
可选参数 | ||
--add-file | 向包中添加文件
# 更新压缩包中的test文件
tar -uf test.tar --add-file=test
| |
--delete | 删除包中文件
# 从test.tar中删除test1文件
tar --delete -f test.tar test1
| |
--exclude | 排除文件
#打包test目录下所有文件,排除以.log结尾的文件
tar -zcvf test.tar.gz --exclude=test/*.log test/*
| |
--remove-files | 移除源文件
# 压缩后删除源文件
tar -zcvf test.tar.gz test.log --remove-files
| |
--strip-components | 去除目录
# 解压时去掉一层目录
tar -xvf test.tar.gz --strip-components=1
|
- 关于 tar 的详细命令可以使用以下命令获取:
tar --help
- 事实上, 从 1.15 版本开始 tar 解压时可以自动识别压缩的格式,故不需人为区分压缩格式就能正确解压:
tar -xvf filename.tar.gz tar -xvf filename.tar.bz2 tar -xvf filename.tar.xz tar -xvf filename.tar.Z
zip/unzip
zip 和 unzip 命令主要用于处理zip包。
参数说明:
参数 | 描述 |
---|---|
压缩 | |
-d | 从压缩文件内删除指定的文件。 |
-f | 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 |
-j | 只保存文件名称及其内容,而不存放任何目录名称。 |
-r | 递归处理,将指定目录下的所有文件和子目录一并处理。 |
-u | 更换较新的文件到压缩文件内。 |
-v | 显示指令执行过程或显示版本信息。 |
-y | 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。 |
- <压缩效率> | 压缩效率是一个介于 1-9 的数值。 |
解压 | |
-l | 显示压缩文件内所包含的文件 |
-j | 只保存文件名称及其内容,而不存放任何目录名称。 |
-o | 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该 |
-v | 显示指令执行过程或显示版本信息。 |
-d | 指定解压目录,目录不存在会创建 |
示例:
- 压缩:
#打包test目录下的文件 zip -r test.zip test/ #打包test目录下文件,且压缩包不带test目录 zip -rj test.zip test/ # 指定压缩率打包文件:数值(1-9)越大,压缩率越高,耗时越长 zip -r8 test.zip test/* # 打包符号链接文件 zip -ry test.zip test # 向压缩包中增加或更新文件test2 zip -u test.zip test2 # 压缩时加密,密码为66666 zip -r test.zip test1 test -P 66666 # 删除压缩包的特定文件 test zip -d test.zip test
- 解压:
# 查看压缩包中的文件信息 # 1、可以看到压缩包中的文件名,日期等信息 unzip -l test.zip # 2、查看更多信息,例如crc校验信息等 unzip -v test.zip # 解压压缩包,到dir目录 unzip -o test.zip -d dir # 解压包中指定的文件(如果不知道需要解压的文件名,可先查看包中的文件) # 1、解压包中的 1.log 文件到 dir 目录 unzip -o test.zip "1.log" -d dir # 2、解压包中所有的 log 文件 unzip -o tet.zip "*.log" -d dir # 解压时去掉目录结构 zip -oj test.zip -d ./temp # 解压jar包 unzip -o java.jar -d dir
gzip
tar命令带有 -z 参数,并且打包成 tar.gz 文件时,便调用 gzip 进行了压缩。
- gzip对文本的压缩率约有 60%~70%,压缩包文件常以 gz 为后缀。
参数说明:
参数 | 描述 |
---|---|
-k | 保留源文件 |
-d | 解开压缩文件 |
-r | 递归处理,将指定目录下的所有文件及子目录一并处理 |
-v | 显示指令执行过程 |
示例:
# 使用 -k 参数保留源文件
# 1、对当前目录下所有文件进行压缩,每个文件一个gz包
gzip -k ./*
# 2、递归压缩
gzip -rkv ./*
# 解压
gzip -dv test.gz
bzip2
tar 命令使用 -j 参数将文件打包为 tar.bz2 时,便调用了 bzip2 进行压缩。
- bzip2 压缩或解压后,会将源文件删除。
示例:如果需要保留源文件,可使用 -k 参数
# 压缩test文件
bzip2 -zk test
# 解压
bzip2 -dk test.bz2
rar/unrar
rar 和 unrar 命令并非 linux 发行版自带命令,需要另外安装。
示例:
# 压缩:将test文件压缩为test.tar
rar a test.tar test
# 解压 test.tar
rar e test.rar
# 解压 test.tar
unrar x test.rar
其他命令
命令 | 说明 |
---|---|
start X | 进入图形界面 |
shutdown -h now | 立即关机
|
shutdown -r now | 立即重启 |
logout | 注销 |
man 命令 | 显示命令的用法 |
history | 显示命令历史记录
执行历史命令:
|
env | 显示当前系统的环境变量 |
- “tab”键:双击命令提示,单机补全(当前目录下有的)文件名称。
超级管理员
当前用户下使用超级管理员(root):
su - root
关机
- shutdown -h now
- poweroff
Note:
- 用poweroff,三个机器(问题与系统无关,centos、Debian、suse)都出现了
“System has not been booted with systemd as init system (PID 1). Can't operate.”
- 需要“sudo poweroff -f”才能关键
清屏
在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?
- clear:这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。
- Ctrl+l(小写的L):这是一个清屏的快捷键,工作中用得最多的一种清屏方式。【效果同 clear】。
- reset:这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。
- 值得一提的是 reset 命令在你的终端控制错乱时非常有用。
- 如:“输入字符不出现在光标的位置的情况。还有当你敲击回车键时,新提示符并没有出现在新行上,而是出现在老提示符的前面”。此时reset命令就能用来修正这些问题。
- 值得一提的是 reset 命令在你的终端控制错乱时非常有用。
- printf "\033c":这个命令它才是真正的清空了终端屏幕,它的功能跟 DOS 里 CMD.EXE 提供的 CLS 效果很相似。
关于“printf "\033c"”
这个命令究竟是做什么的?它的工作原理是什么?
\033 == \x1B == 27 == ESC
即这个命令变成了 <ESC>c,它是 VT-XXX 中表示“Full Reset (RIS)”的转义码。
它的另一种实现方式也可以这样:
- 键盘上:“Ctrl+v--->Esc-->输入c再回加”。
- (现今我们使用的所有的终端都是VT兼容的)
- 但如果你发现自己使用的是一个非常奇怪的终端(如putty),那这个命令可能用不了。
- printf 是 bash 里内置的命令,内置命令的优先级比其它可执行文件要高。
为命令设置快捷方式
在 PATH 路径下,如 /usr/bin/ 目录下。新建一个名为 cls 的文件,加上执行权限,写入如入内容:
[root@iZbp168 bin]# vim cls
#!/bin/bash
#
printf "\033c"
这样每次需要清屏的时候,只需要输入cls命令就可以了。