1、普通基础命令
1)chmod命令 – 改变文件或目录权限
常用参数
-c 若该文件权限确实已经更改,才显示其更改动作
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
权限范围
u 目录或文件的当前用户
g 目录或文件的当前的群组
o 除了目录或文件的当前用户或群组之外的用户或群组
a 所有的用户及群组
权限代号
r 读权限,4表示
w 写权限,2表示
x 执行权限,1表示
- 删除权限,数字0表示
s 特殊权限
2)chown命令 – 改变文件或目录的用户和用户组
常用参数:
-R 对目前目录下的所有文件与目录进行相同的变更
-c 显示所属信息变更信息
示例:
chown -cR szb:szb file/directory
3)cp命令 – 复制文件或目录
常用参数:
-i 若目标文件已存在,则会询问是否覆盖
-r 递归复制文件和目录
-a 等价于“pdr”选项,复制的文件与原文件时间一样
-s 对源文件建立符号连接,而非复制文件
4)find命令 – 根据路径和条件搜索指定文件
find pathname -options [-print -exec -ok …]
命令参数:
pathname 查找的目录路径
-print 匹配的文件输出到标准输出
-exec …… {} \; 后面可跟用于进一步处理搜索结果的命令
-ok 类似-exec,执行每个命令前都会提示
命令选项:
-name 匹配名称
-iname 忽略大小写
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-type b/d/c/p/l/f 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件,字符c)
示例:
find / -perm 777
find -size +1k
find -name szb.txt -exec cat {} \;
hello-world
find /tmp -type f -exec rm {} \; //删除无用的临时文件
find /home -type f -size 0 -exec rm {} \; //删除 0 字节文件
5)head命令 – 显示文件开头的内容
默认打印前10行
常用参数:
-n <数字> 定义显示行数
-c <数字> 指定显示头部内容的字符数
示例:
打印后10行内容
head -n -10 file
6)less命令 - 分页显示文件内容
查看前不会加载整个文件,随意游览文件,more只能向前移动,不能向后移动
常用参数:
-N 显示每行的行号
示例:
分页显示指定命令的输出结果:
history | less
7)ln命令 - 为文件创建快捷方式
链接分类:软链接和硬链接
区别:
1)软链接:可以跨文件系统,可以为不存在的文件名进行链接,可以对目录进行链接,以路径方式存在
2)硬链接:以文件副本方式存在,但不占实际空间
注意:若是为多个文件目录创建链接,目的地是一个已经存在的目录,否则会报错
常用参数:
-b 为每个已存在的目标文件创建备份文件
-s 对源文件建立符号链接,而非硬链接
-v 详细信息模式,输出指令的详细执行过程
8)locate命令 - 快速查找文件或目录
updatedb 更新数据库
常用参数:
-d 指定数据库所在的目录
-l num(显示的行数)
-f 将特定的档案系统排除在外,比如proc
-r 正则运算式作为寻找条件
示例:
locate -r '^/var.*log$'
9)more命令 - 分页显示文本文件内容
常用参数:
+num 从第 num 行开始显示
-num 指定每屏显示的行数
-s 多个空行压缩成一行显示
-p 先清除屏幕再显示文本文件的剩余内容
-c 与-p相似,不滚屏,先显示内容再清除旧内容
10)mv命令 - 移动或改名文件
常用参数:
-i 若存在同名文件,则向用户询问是否覆盖
-f 覆盖已有文件时,不进行任何提示
-b 当文件存在时,覆盖前为其创建一个备份
11)rm命令 - 删除文件或目录
常用参数:
-f 强制删除(不二次询问)
-i 删除前会询问用户是否操作
-r/R 递归删除
rm -- -f* 删除以-f开头的文件
12)tail命令 - 查看文件尾部内容
常用参数:
-f 持续显示文件最新追加的内容
-n <N> 输出文件的尾部N(N位数字)行内容
13)jobs命令 – 显示shell的作业信息
常用参数:
-l 显示作业列表时包括进程号
-n 显示上次使用jobs后状态发生变化的作业
-p 显示作业列表时仅显示其对应的进程号
-r 仅显示运行的(running)作业
-s 仅显示暂停的(stopped)作业
14)touch命令 – 创建空文件与修改时间戳
常用参数:
touch [-acfm][-d][-r] [-t][--help][--version][文件或目录…]
-a 改变档案的读取时间记录
-m 改变档案的修改时间记录
-c 目标文件不存在,不创建新文件,与--no-create效果一样
-r 使用参考档的时间记录,与 --file 的效果一样
-d 设定时间与日期,可以使用各种不同的格式
示例:
修改指定文件的查看时间和修改时间:
touch -d "2022-10-08 15:44" file.log
15)vim命令 – 文本编辑器
模式:
命令模式(进入文件的默认模式,:wq退出)
插入//输入模式(iao字母进入)
底线命令模式(:)
常用参数:
-R 只读模式
+<行数> 从指定行开始
示例:
打开第一个匹配的行
vim +/filename szb.txt
16)whereis命令 – 显示命令及相关文件的路径
只能用于程序名的搜索,只搜索二进制文件
注意:刚添加的文件可能搜不到, 原因就是该数据库文件没有被更新。
常用参数:
-b 查找二进制程序或命令
-s 只查找源代码文件
-m 查找man手册文件
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件
17)which命令 – 查找命令文件
查找某个文件
which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜索硬盘中查询文件名称
查看PATH路径下的命令位置
常用参数:
-n 指定文件名长度(不含路径)
-p 指定文件名长度(含路径)
18)grep命令 – 强大的文本搜索工具
常用参数:
-i 忽略大小写
-A <显示行数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容
-B<显示行数> 除了显示符合样式的那一行之外,并显示该行之前的内容
-C<显示行数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容
-c 只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-r 递归搜索
-f 从文件中读取关键字
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式
规则表达式:
^ 开头
$ 结尾
. 匹配一个非换行符的字符
* 匹配一个或多个先前字符
.* 任意字符
[] 匹配指定范围内的字符
[^] 匹配不在指定范围内的字符
x\{m,n\} 重复字符x,至少m次,不多于n次
示例:
显示包含 ed 或者 at 字符的内容行
grep -E 'ed|at' test.txt
查找非x开关的行内容
grep'^[^x]' test.txt
19)wc命令 – 统计文件的行数 单词数 字节数 文件名
常用参数:
-l 统计行数
-w 统计单词数
-c 统计字节数
-m 统计字符数
20)cd命令 – 切换目录
常用参数:
~ 切换至当前用户目录
.. 切换至当前目录位置的上一级目录
- 进入上一次的工作路径
把上个命令的参数作为cd参数使用
cd !$
21)df命令 – 显示磁盘空间使用情况
默认以1kb展示
常用参数:
-a 显示所有系统文件
-h 以容易阅读的方式显示
-i 显示索引字节信息
-k 指定块大小为1KB
-l 只显示本地文件系统
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型
示例
以易读方式列出所有文件系统及其类型
df ‐haT
22)du命令 – 查看文件或目录的大小
常用参数:
-a 显示目录中所有文件大小
-k 以KB为单位显示文件大小
-m 以MB为单位显示文件大小
-g 以GB为单位显示文件大小
-h 以易读方式显示文件大小
-s 仅显示总计
-c 除了显示个别目录或文件大小,也显示文件目录总大小,默认
示例:
du -c --max-depth=1 /root
23)ls命令 – 显示指定工作目录下的文件及属性信息
常用参数:
-a 显示所有文件及目录 (包括以“.”开头的隐藏文件)
-A 同 -a ,但不列出 “.” (当前目录) 及 “..” (父目录)
-r 将文件以相反次序显示(默认依英文字母次序)
-S 根据文件大小排序
-t 根据最后的修改时间排序
-l 使用长格式列出文件及目录的详细信息
-h 以易读大小显示
示例:
列出文件绝对路径(不包含隐藏文件)
ls|sed "s:^: `pwd`/:"
24)mkdir命令 – 创建目录文件
常用参数:
-p 递归创建多级目录
-m 建立目录的同时设置目录的权限
25)pwd命令 – 查看当前工作目录路径或者软链接的实际路径
常用参数:
-L 显示逻辑路径
26)rmdir命令 – 删除空目录文件
常用参数:
-p 用递归的方式删除指定的目录路径中的所有父级目录,非空则报错
27)ifconfig命令 – 显示或设置网络设备参数信息
常用参数:
add<地址> 设置网络设备IPv6的IP地址
del<地址> 删除网络设备IPv6的IP地址
查看所有网络接口及其状态:ifconfig -a
使用 up 和 down 命令启动或停止某个接口:
ifconfig eth0 up 和 ifconfig eth0 down
对指定的网卡设备执行修改IP地址操作:
ifconfig ens160 192.168.10.20 netmask 255.255.255.0
对指定的网卡设备执行修改MAC地址操作
ifconfig ens160 hw ether 00:aa:bb:cc:dd:ee
对指定的网卡设备依次进行ARP协议关闭和开启操作
ifconfig ens160 -arp
ifconfig ens160 arp
28)iptables命令 – 防火墙策略管理工具
常用参数:
-t<表> 指定要操纵的表
-A 向规则链中追加条目
-D 从规则链中删除条目
-I 向规则链中插入条目
-R 替换规则链中的相应条目
-L 显示规则链中的已有条目
-F 清除规则链中的现有条目
-p<协议> 指定要匹配的数据包的协议类型
-s<源地址> 指定要匹配的数据包的源IP地址
-j<目标> 指定要跳转的目标
示例:
把来源 IP 为 192.168.1.101 访问本机 80 端口的包直接拒绝:
iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT
开启 80 端口,因为web对外都是这个端口
iptables -A INPUT -p tcp --dport 80 -j ACCEP
iptables save 命令,进行保存
29)ping命令 – 测试主机间网络连通性
常用参数:
-c 指定发送报文的次数
-i 指定收发信息的间隔时间
-W timeout 超时时间
示例:
测试与指定主机之间的网络连通性,发送3次请求包,每次间隔0.2秒,最长等待时间为3秒:
ping -c 3 -i 0.2 -W 3 192.168.10.10
30)free命令 – 显示系统内存使用量情况
常用参数:
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s 持续显示内存
-t 显示内存使用总合
示例:
以易读的单位显示内存使用量信息,每个10秒刷新一次:
free -hs 10
31)netstat命令 – 显示网络状态
常用参数:
-l 仅列出在监听的服务状态
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-a 显示所有连线中的Socket
-r 显示路由表信息
-n 直接使用IP地址,不通过域名服务器
-p 显示正在使用Socket的程序识别码和程序名称
示例:
查看系统都开启了哪些端口
netstat -lnp
查看网络连接状况
netstat -an
统计系统当前进程连接数
netstat -an | grep ESTABLISHED | wc -l
显示网卡当前状态信息:
netstat -i
32)telnet命令 – 控制远程设备
登录远程主机:
telnet 192.168.8.105
33)date命令 – 显示或设置系统日期与时间
常用参数:
时间格式MMDDhhmm[CC][YY][.ss],其中 MM 为月份,DD 为日,hh 为小时,mm 为分钟,CC 为年份前两位数字,YY 为年份后两位数字,ss 为秒数
-s datestr 将系统时间设为 datestr 中所设定的时间
-d datestr 显示 datestr 中所设定的时间 (非系统时间)
示例:
date +%Y-%m-%d:%H-%M-%S
2022-10-17:15-39-48
显示下一天日期
date +%Y%m%d --date="+1 day"
昨天日期
date +%Y-%m-%d:%H-%M-%S -d "last-day"
2022-10-16:15-42-16
34)kill命令 – 杀死进程
常用参数:
-l 列出系统支持的信号
-s 指定向进程发送的信号
-a 不限制命令名和进程号的对应关系
-p 不发送任何信号
-u 指定用户
示例:
强制结束某个指定的进程(数字为对应的PID值):
kill -9 1518
35)ps命令 – 显示进程状态
如果需要动态连续结果使用 top
进程有5种状态:
运行(正在运行或在运行队列中等待)
中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
常用参数:
-A 显示所有程序
a 显示所有进程
-a 显示同一终端下所有进程
e 显示环境变量
f 显示进程间的关系
r 只列出现行终端机正在执行中的程序
-aux 显示所有包含其它使用的进程
示例:
1)显示当前所有进程环境变量及进程间关系
ps -ef
2)显示当前所有进程
ps -A
3)与grep联用查找某进程
ps -aux |grep apache
36)rpm命令 – RPM软件包管理器
常用参数:
-i 安装软件包
-e 卸载软件包
-q 查询软件包
-U 升级软件包
-l 显示软件包的文件列表
-a 查询所有的软件包
示例:
正常安装软件包:
rpm -ivh cockpit-185-2.el8.x86_64.rpm
显示系统已安装过的全部RPM软件包:
rpm -qa
查询某个软件的安装路径:
rpm -ql
卸载某个通过RPM软件包安装的服务:
rpm -evh
升级某个软件包:
rpm -Uvh
37)top命令 – 实时显示系统运行状态
常用参数:
-n 设定显示的总次数,完成后将会自动退出
-d <秒> 改变显示的更新速度
前五行是当前系统情况整体的统计信息区。
第一行,任务队列信息,同 uptime 命令的执行结果
第二行,Tasks — 任务(进程)
第三行,cpu状态信息
第四行,内存状态
第五行,swap交换分区信息
第六行,空行。
第七行以下:各进程(任务)的状态监控,项目列信息
交互命令:
c 切换显示命令名称和完整命令行
m 以内存使用率排序
P cpu使用百分比大小进行排序
T 累计时间进行排序
38)yum命令 – 基于RPM的软件包管理器
常用参数:
install 安装rpm软件包
update 更新rpm软件包
remove 删除指定的rpm软件包
list 显示软件包的信息
search 检查软件包的信息
info 显示指定的rpm软件包的描述信息和概要信息
clean 清理yum过期的缓存
-y 对所有的提问都回答“yes”
-c 指定配置文件
39)bzip2命令 – bz2文件的压缩程序
常用参数:
-d 执行解压缩
-t 测试.bz2压缩文件的完整性
示例
检查文件完整性:
bzip2 -t a.txt.bz2
40)gzip命令 – 压缩和解压文件
常用参数:
-d 解开压缩文件
-f 强行压缩文件
-k 保留原文件
-l 列出压缩文件的相关信息
示例
显示压缩的比率:gzip -l *.gz
41)tar命令 – 压缩和解压缩文件
常用参数:
-c 建立新的备份文件
-z 通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-j 通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-v 显示操作过程
-f<备份文件> 指定备份文件
-x 从归档文件中提取文件
-- -exclude=<范本样式> 排除符合范本样式的文件
压缩:tar -zcvf backup1.tar.gz /etc
解压缩:tar -xvf backup1.tar.gz
42)unzip命令 – 解压缩zip格式文件
常用参数:
-l 显示压缩文件内所包含的文件
-d 解压缩到指定目录下
示例:
将压缩包文件解压到指定的目录中:
unzip latest.zip -d /home
43)lsattr命令 – 显示文件隐藏属性
常用参数:
Usage: lsattr [-RVadlv] [files...]
-R 递归地处理指定目录下的所有文件及子目录
-v 显示文件或目录版本
-a 列出目录中的所有文件,包括隐藏文件
-d 只显示目录名称
示例:
> lsattr /etc/passwd
-------------e-- /etc/passwd
> lsattr -l /etc/passwd
/etc/passwd Extents
> lsattr -v /etc/passwd
1420315079 -------------e-- /etc/passwd
44)chattr 命令 – 更改文件隐藏属性
常用参数:
-R 递归处理目录下的所有文件
-v 设置文件或目录版本
-V 显示指令执行过程
+ 开启文件或目录的该项属性
-- 关闭文件或目录的该项属性
= 指定文件或目录的该项属性
权限作用:
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
x 可以直接访问压缩文件中的内容
示例:
给指定文件添加隐藏属性:
> chattr +i test.sh
经典面试题
问题一:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示 ? 切换目录用什么命令?
答案:
绝对路径:如/etc/init.d
当前目录和上层目录:./ …/ 主目录:~/
切换目录:cd
问题二:怎么查看当前进程?怎么执行退出?怎么查看当前路径?
答案:
查看当前进程:ps 执行退出:exit
查看当前路径:pwd
问题三:怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?
答案:
清屏:clear
退出当前命令:ctrl+c 彻底退出执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名查看指定帮助:如 man adduser 这个很全 而且有例子;adduser –help 这个告诉你一些常用参数;info adduesr;
问题四:Ls 命令执行什么功能?可以带哪些参数,有什么区别?
答案:
ls 执行的功能:列出指定目录中的目录,以及文件哪些参数以及区别:a 所有文件 l 详细信息,包括大小字节数,可读可写可执行的权限等
问题五:建立软链接(快捷方式),以及硬链接的命令。
答案:
软链接:ln -s slink source 硬链接:ln link source
问题六:目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
答案:
创建目录:mkdir
创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件复制文件:cp 7. 文件权限修改用什么命令?格式是怎么样的?
文件权限修改:chmod
格式如下:
chmod u+x file 给 file 的属主增加执行权限 chmod 751 file 给 file 的属主分配读、写、执行(7)的权限,给 file 的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod u=rwx,g=rx,o=x file 上例的另一种形式 chmod =r file 为所有用户分配读权限
chmod 444 file 同上例 chmod a-wx,a+r file 同上例
$ chmod -R u+r directory 递归地给 directory 目录下所有文件和子目录的属主分配读的权限
问题七:查看文件内容有哪些命令可以使用?
答案:
vi 文件名 #编辑方式查看,可修改 cat 文件名 #显示全部文件内容 more 文件名 #分页显示文件内容 less 文件名 #与 more 相似,更好的是可以往前翻页 tail 文件名 #仅查看尾部,还可以指定行数 head 文件名 #仅查看头部,还可以指定行数
问题八:随意写文件命令?怎么向屏幕输出带空格的字符串,比如”hello world”?
答案:
写文件命令:vi
向屏幕输出带空格的字符串:echo hello world
问题九:终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下的哪个命令?
答案:
终端 /dev/tty
黑洞文件 /dev/null
问题十:移动文件用哪个命令?改名用哪个命令?
答案:
mv mv
问题十一:使用哪一个命令可以查看自己文件系统的磁盘空间配额呢?
答案:
使用命令 repquota 能够显示出一个文件系统的配额信息
2、脚本命令
1)getopts – 解析脚本选项参数的工具
用法:
getopts: usage: getopts optstring name [arg]
脚本位置参数会与optstring中的单个字母逐个匹配,如果匹配到就赋值给name,否则赋值name 为问号;
optstring中单个字母是一个选项,如果字母后面加冒号,表示该选项后面带参数,参数值并会赋值 给OPTARG变量;
optstring中第一个是冒号,表示屏蔽系统错误(test.sh: illegal option -- h);
允许把选项放一起,例如-ab