文章目录
- 基本
- echo
- 关机、重启命令
- 上传下载工具rz/sz
- <、>、>>
- ls
- 管道
- clear
- cd
- pwd
- 文件处理类命令
- mkdir
- rmdir
- touch
- cp
- mv
- 文件查看类命令
- cat
- more
- less
- head
- tail
- 用户管理命令
- useradd
- passwd
- usermod
- userdel
- groupadd
- groupdel
- 文件属性类命令
- chmod
- chown
- chgrp
- ln
- 文件压缩类命令
- tar
- gzip
- unzip
- 文本处理类
- awk
- sed
- cut
- tr
- 查找类
- find
- grep
- 正则表达式
- 工具类命令
- cal
- date
- wc
- sort
- which / whereis
- su
- sudo
- rpm/yum/apt-get
- win-linux格式转换
- 防火墙操作
- vi编辑器
- **普通模式**
- **插入模式**
- **末行模式**
- vi与shell交互
- vi文件冲突
- 网络管理
- ping
- traceroute
- netstat
- 网络相关配置文件
- service
- chkconfig
- systemd
- systemctl
- 开机自启动
- 重启虚拟机网络
- 常用符号含义
- 常用符号含义
基本
echo
作用:在终端上显示文本字符串或变量的值
格式:echo [选项] 字符串
选项:-n
:不在输出的末尾添加换行符。
[root@localhost ~]# name=alice
[root@localhost ~]# echo hello,$name
hello,alice
关机、重启命令
【普通用户不允许关机和重启】
- shutdown
shutdown [OPTIONS] [TIME] [MESSAGE]
shutdown –h now "close" (-h=halt) //立即关机,显示close
shutdown -r now (r=reboot) //重启
- init(改变系统的运行级别,从而实现关机或重启)
init 0 //关机
init 6 //重启
- halt( 直接停止所有处理并关闭系统 )
halt -p
- poweroff(类似halt)
poweroff -p
- reboot(等同shutdown -r)
reboot
上传下载工具rz/sz
rz:receive——从windows上传文件到这个linux虚拟机
sz [文件路径]:send——从linux虚拟机下载文件到windows的rzsz文件夹
<、>、>>
<:输入重定向
把右边的输入作为左边的输入
cat < input.txt
结果:展示input.txt内容
>:输出重定向,把左边的结果输出到右边文件。
如果文件存在,则覆盖其内容;如果文件不存在,则创建该文件。
ls > filelist.txt
将ls的输出 写到filelist内
>>:追加
文件末尾添加
echo abc >> list.txt
ls /usr /abc 列出/usr/abc目录的内容
ls /usr /abc >ok.txt 将列出的目录内容输出到ok.txt
ls /usr /abc 1>ok.txt :1>和>等价,和上一条效果一样
ls /usr /abc 2>err.txt :2>将标准错误输出重定向到文件err.txt
ls /usr /abc 1>ok.txt 2>err.txt : 将 /usr/abc
目录的内容写入 ok.txt
文件,任何错误信息(如果有)会写入 err.txt
文件。
ls /usr /abc 2>/dev/null :/dev/null
是一个特殊文件,写入其中的数据会被丢弃。
ls /usr /abc 1>/dev/null 2>&1 :1>
将标准输出重定向到 /dev/null
,所以 /usr/abc
目录的内容会被丢弃。
2>&1
表示将标准错误输出重定向到标准输出的目标,即 /dev/null
。
ls
作用:显示某个目录下的文件内容,可以显示文件和子目录的名称及其相关信息。
格式:ls [选项] [文件或目录]
选项:
-a
:显示所有文件,包括以 . 开头的隐藏文件。(all)
-l
:以长格式列出文件的详细信息。(list)
-h
:与 -l 选项一起使用,以人类可读的格式显示文件大小(如 KB、MB)。(human)
-R
:递归地列出子目录中的内容。 (recursive递归)
-t
:根据修改时间排序,最近修改的文件排在最前面。
-r
:逆序排列。(reverse)
-S
:根据文件大小排序,最大的文件排在最前面。
-i
:显示文件的 inode 号码。
-d
:仅显示目录自身的信息,而不显示其内容。
-1
:每行只显示一个文件名
[root@localhost ~]# ls -hl
total 4.0K
drwxr-xr-x 2 root root 6 May 24 16:18 disktmp
-rw-r--r-- 1 root root 1.1K May 26 17:27 exam8.txt
drwxr-xr-x 3 root root 53 May 26 17:12 nginx
drwxr-xr-x 2 root root 66 May 8 11:01 shell
drwxr-xr-x 2 root root 82 May 24 15:44 tmp
ls -ail
:显示当前目录的所有文件(包括隐藏文件)及其详细信息和 inode 号。
ls -lR /etc
:递归地列出 /etc
目录及其子目录中的所有文件和目录的详细信息。
ls -lS /var/log
:列出 /var/log
目录中的文件和目录,并根据文件大小从大到小排序
管道
把前一个命令的输出作为下一个命令的输入,实现将多个命令连接起来
格式:命令1 | 命令2 | 命令3 …
例子:cat /etc/passwd | grep root | wc -l
效果:cat /etc/passwd:显示了该目录下的文件内容; grep root :读取前一个命令中的文件内容,搜索并输出包含“root”的所有行;wc -l:计算前一个命令传过来的包含root的所有行,计算出行数
综合效果:读取文件内容,计算包含root的行数,并最后输出行数
clear
清空屏幕
cd
作用:切换目录
cd ~
进入主目录 或者cd
以root身份进入主目录就是root
cd ..
返回上一级目录
cd ../..
返回上两级目录
cd -
进入上一个访问的目录
cd /
快速进入根目录
cd ~/projects/my_project
pwd
作用:显示当前路径 print work directory
[root@localhost disktmp]# pwd
/root/disktmp
文件处理类命令
mkdir
作用:创建新目录(文件夹)
格式:mkdir [选项] 目录名
mkdir dir1 dir2
:在当前目录下创建dir1和dir2
mkdir dir4/dir5
:创建dir4下的dir5目录,要求dir4必须已经存在,不然会报错
mkdir -p dir4/dir5
:递归创建目录,在当前目录下创建dir4然后在dir4下创建dir5,如果dir4已存在dir5不存在,创建dir5,不会报错
rmdir
作用:删除目录。只能删除空目录
格式:rmdir [选项] 目录名
rmdir -p dir1/dir2
:递归删除当前目录下的dir1和他的子目录dir2
touch
作用:创建空文件和更新文件的时间戳
格式:touch [选项] 文件名
选项:-a
:改变档案的读取时间记录
-m
:改变档案的修改时间记录
-r
:使用参考档的时间记录
-d
:设定时间与日期,可以使用各种不同的格式
touch file1.txt file2.txt file3.txt
: 创建三个空文件,如果这些文件不存在
touch myfile.txt
:更新文件的时间戳,如果文件不存在,则创建该文件
touch -t [[CC]YY]MMDDhhmm[.ss] file
:自定义时间戳
touch -t 202405261230.00 myfile.txt
: 将 myfile.txt文件的时间戳设置为 2024 年 5 月 26 日 12:30:00。如果文件不存在,则会创建一个新的空文件。
touch -r referencefile.txt newfile.txt
: 将 后面文件的时间戳设置为与 前面文件相同
cp
作用:文件或目录的复制
格式:cp [选项] 源文件 目标文件
或 cp [选项] 源文件... 目标目录
选项:-a :复制目录时,保留链接、文件属性,并复制目录下的所有内容
-f :覆盖已存在的目标文件而不进行提示
-p :除复制文件的内容外,还把修改时间和访问权限也复制到新文件中(保留文件属性)
-r :递归复制目录中的所有内容,包括子目录
cp file1.txt file2.txt
: 将file1.txt复制一份并重命名为file2.txt,如果file2.txt已经存在,可以选择overwrite
cp file1.txt file2.txt /home/root/aaa
:将当前目录下的file1file2复制到后面的路径文件夹中
cp -r source_directory target_directory
将原路径下所有内容复制到目标路径
cp -f file1.txt file2.txt
file1复制到file2,如果file2有内容强制覆盖不提示
mv
作用:移动文件或目录(重命名)
格式:mv [选项] 源文件 目标文件
或 mv [选项] 源文件... 目标目录
选项:-i 目标路径如果同名,先询问是否覆盖
-f 覆盖已经存在的目标文件而不给提示
-n 不要覆盖任何已存在的文件或目录
mv file1.txt file2.txt
:将前重命名为后
mv file1.txt aaa/bbb
:将file1移动到目标路径目录
文件查看类命令
cat
作用:显示文件的内容、连接文件并输出到终端上。“concatenate”(连接)
选项:-n 给每行编号,-b 除了空白行,给每行编号
- 显示单个文件:
cat /etc/shells
这会在终端中显示 `/etc/shells` 文件的内容。
【etc文件夹存储系统配置文件】
- 连接两个文件一起显示
cat file1.txt file2.txt
这会先显示 `file1.txt` 的内容,然后显示 `file2.txt` 的内容。
- 重定向输出到新文件
cat file1 file2 > newfile
示例:
cat file1.txt file2.txt > combined.txt
这会将 `file1.txt` 和 `file2.txt` 的内容连接起来,并将结果保存到 `combined.txt`
- 追加文件内容
cat file1 >> existingfile
【使用 >> 可以将内容追加到现有文件的末尾,而不是覆盖它】
示例:
cat additional.txt >> combined.txt
这会将 `additional.txt` 的内容追加到 `combined.txt` 的末尾。
可选选项
cat -n /etc/shells //文件的每一行加上行号并显示
cat -s file.txt //将连续的空白行压缩成一行
cat -v file.txt //显示不可打印字符(例如,制表符和换行符)
more
作用:逐屏显示长文件内容,可以方便地查看长文本文件,一次显示一屏内容
格式:more [选项] 文件名
选项:+数字
从第n行开始显示 -10
一次显示前10行
-s
把连续的多行空行显示为一行
-d
显示行号
基本操作
空格键:显示下一屏内容。
回车键:向下滚动一行。
/pattern:向前搜索匹配 pattern
的字符串。
n 键:跳转到下一个匹配 pattern
的字符串。
q 键:退出查看
【注意点:一次性加载。只能往下翻。】
less
作用:逐屏查看文件内容。相比于 more
命令,less
提供了更强大的功能和更多的选项
格式:less [选项] 文件名
选项:-e
当文件显示结束后,自动退出-f
强迫打开特殊文件-i
忽略搜索时的大小写-N
显示每行的行号-s
显示连续空行为一行
基本操作
q
:退出
空格
:下一页
回车
下一行
上下移动键
上下移动
注意点:支持上下翻。按需加载。
head
作用:显示文件的开头的内容。在默认情况下显示文件的前10行内容
格式:格式: head [选项] 文件名
-q
隐藏文件名
-v
显示文件名
-c<数目>
显示的字节数
-n<行数>
显示的行数
head -n 5 file1
:显示 file1的前 5 行内容
head -c 20 file1
: 显示 file1的前 20 个字节的内容
tail
作用:显示文件的结尾的内容。在默认情况下显示文件的最后10行内容
格式: tail [选项] 文件
-f 当文件变化时输出文件新增内容
-c<数目> 显示的字节数
-n<行数> 显示的行数
-v 显示详细的处理信息
tail file1
:显示 file1
的最后 10 行内容
tail -n 5 file1
:显示 file1
的最后 5 行内容
tail -c 50 file1
:显示 file1
的最后 50 个字节的内容
tail -f file1
:以“跟随”模式显示 file1
的内容。它会显示文件末尾的内容,并在文件更新时持续输出新增的内容。这个选项常用于查看日志文件。
用户管理命令
useradd
作用:新增用户
格式: useradd [选项] 用户名
root用户
-d dirName | 指定用户主目录。默认将会在/home目录下新建一个与用户名相同的用户主目录 |
---|---|
-s shellName | 指定用户登录时使用的shell。默认为/bin/sh |
-g groupName | 指定用户所属的组名。创建用户时默认创建一个与用户名同名的组 |
-G groupList | 一个用户可以属于一个组,也可以属于多个组。用户创建时属于的组称为主组,其他的叫附属组 |
-u uid | 指定新用户的UID。新用户默认UID为当前最高UID值+1 |
useradd -d /home/customdir -s /bin/zsh username
创建一个名为 username的用户,主目录设为/home/customdir,登录 shell 设置为 /bin/zsh。
passwd
作用:修改密码
格式:passwd [选项] [用户名]
普通用户只能修改自己密码,root可以修改其他人
passwd
:选项用户名都不输入,默认是修改当前登录用户的密码
passwd user1
-
高级应用-无交互设置密码
echo xxx | passwd --stdin root
:将 root用户的密码设置为 xxx,并且不会提示交互输入。
--stdin
:从标准输入中读入新的密码
usermod
作用:修改现有用户账户属性
格式:usermod [选项] 用户名
root权限下:
- -d dirName :指定用户主目录。默认将会在/home目录下新
建一个与用户名相同的用户主目录
-
-s shellName :指定用户登录时使用的shell。默认为/bin/sh
-
-g groupName :指定用户所属的组名。创建用户时默认创建一个与用户名同名的组
-
-G groupList :一个用户可以属于一个组,也可以属于多个组。用户创建时属于的组称为主组,其他的叫附属组。
-
-u uid :指定新用户的UID。新用户默认UID为当前最高UID值+1
usermod -u 2048 user2
:将用户 user2 的用户ID (UID) 修改为2048
usermod -d /home/user2048 user2
:将用户 user2 的主目录更改为 /home/user2048
userdel
作用:删除用户(root权限下)
格式:userdel [-r] 用户名
-r
:删除用户账户的同时,删除用户的主目录及主目录下的所有文件和目录。
groupadd
作用:增加用户组(root权限下)
格式:groupadd [-g] 组名
groupadd user3
groupadd -g 1024 user1024
增加组并设置user1024用户的gid为1024
groupdel
作用:删除用户组(root权限下)
格式:groupdel 组名
groupdel user3
:删除user3组
文件属性类命令
chmod
(change mode)
作用:更改文件或目录的权限
格式:chmod [-R] 权限模式 路径
权限模式的两种表示方式:
-
数字模式:使用三个八进制数字表示文件的权限,每个数字表示一组权限:用户、组 和其他人。
其中,4表示读r,2表示写w,1表示执行x,可以通过和组合的方式组合权限。
如741表示:用户权限可读可写可执行,组权限可读,普通权限可执行
-
符号模式:使用符号来表示权限的添加或删除
符号模式的格式为 [ugoa] [±=] [rwx],其中:
- u(用户),g(组),o(其他人),a(所有人)
- +(添加权限),-(删除权限),=(设置权限)
- 如:u+x:添加用户的执行权限
chmod u+x file.txt
:为 file.txt 的用户添加执行权限
chmod g-w file.txt
: 移除file.txt对组的写权限
chmod -R 755 /path/to/directory
:递归地将 /path/to/directory 及其所有子目录和文件的权限设置为 755。
chmod a=rwx,u-x,g-wx,o-rwx a.txt
:将a.txt设置所有用户读写执行权限,移除用户(文件所有者)的执行权限,移除组的写执行权限,移除其他用户的读写执行权限
最终权限:用户rw-
组r- -
其他用户- - -
ls -l a.txt
-rw-r----- 1 username groupname size date time a.txt
chmod 640 a.txt
:用户-wx, 组-w- , 其他用户无权限
chown
(change owner)
作用:更改文件或目录的所有者和所属组(root权限)
格式:chown[-R]用户名[ :组名 ]路径
chown wilson a.txt
:将a.txt的所属用户改为wilson
chown wilson:wilson a.txt
:将a.txt的所属用户改为wilson组里的wilson用户
chown -R wilson dir1
递归将dir1目录下所有文件的所有者蛇者为wilson
chgrp
(change group)
作用:改变指定目录或文件的所属组。(root权限)
格式:chgrp [-R] 组名路径
chgrp wilson a.txt
chgrp -R wilson dir1
ln
作用:创建文件的快捷方式
格式:ln [-s] 源路径 目标路径
-
硬链接:指向同一文件数据块的多个文件名
-
所有硬链接共享相同的 inode 号,因此它们是完全等价的。
-
给文件一个副本(别名),同时建立两者之间的连接关系,修改其中一个,与其连接的文件同时被修改,如果删除其中一个,其余的文件不受影响。磁盘上只有一份数据。
-
硬链接是存在同一个文件系统中
-
-
软链接(符号链接):指向另一个文件或目录的特殊文件
-
软链接的方式则是产生一个特殊的文件,该文件的内容是指向另一个文件的位置。
-
它只是一个快捷方式,删除了源文件,这个连接文件就没用了。
-
软链接可以跨越不同的文件系统
-
ln file1.txt link1.txt
:创建名为link1.txt的硬链接指向file1
ln -s /path/to/file1.txt symlink1.txt
:创建名为symlink1的软连接指向该路径
文件压缩类命令
tar
作用:备份文件
格式:tar [选项] 压缩文件名 路径
-c 创建备份 create
-C path 切换到指定目录
-f 指定备份文件
-t 测试备份文件
-v 显示指令执行过程 -verbose
-x 从备份中还原文件 -extract
-z 通过gzip指令处理备份文件 -gzip
tar cvf dir1.tar dir1
:将dir1压缩命名为dir1.tar
tar xvf dir1.tar
:从 dir1.tar
存档文件中提取所有文件和目录,解压(x) 到当前目录。
tar xvf dir1.tar -C /tmp
:从 dir1.tar
存档文件中提取所有文件和目录,解压到 /tmp
目录。
tar zcvf dir1.tar.gz dir1
:创建一个名为 dir1.tar.gz
的压缩 tar 存档文件,包含 dir1
目录及其内容。
tar zxvf dir1.tar.gz
:从 dir1.tar.gz
压缩 tar 存档文件中提取所有文件和目录,解压到当前目录。
gzip
作用:用于压缩文件(不包括目录)
格式:gzip [选项] 文件…
-d 解开压缩文件
-l 列出压缩文件的相关信息
-r 递归处理指定目录
-v 显示指令执行过程
-t 测试压缩文件是否有误
gzip dir1
:将dir1压缩为.gz后缀文件
gzip -drv dir1
:递归解压dir1.gz文件
unzip
作用:用于解压缩zip文件(zip -r myfolder.zip myfolder)
格式:unzip [选项] 路径
-n 解压时不要覆盖原有文件
-l 列出压缩文件的相关信息
-d dir 指定解压时存放的目录
-v 显示指令执行过程
-t 测试压缩文件是否有误
unzip a.txt.zip
:将 a.txt.zip
压缩文件解压缩到当前目录
unzip -d /tmp a.txt.zip
将 a.txt.zip
压缩文件解压缩到指定(-d)的 /tmp下
文本处理类
awk
作用:强大的文本数据处理工具
格式:awk [选项] ‘脚本命令’ 文件名
cat 文件名 | awk [选项] '脚本命令’
选项:
-F fs 指定分隔符fs,fs可以使字符串或正则表达式
-v 赋值一个用户定义变量
-f scriptfile 从脚本文件中读取awk命令
-
cat /etc/passwd | awk -F: ‘{print $1,$5}’
:将 /etc/passwd 文件的内容作为输入传递给 awk,使用 awk 命令来处理输入内容,-F:指定字段分隔符为
:
,然后打印每行的第一个字段(用户名)和第五个字段(用户描述)。 -
awk -F: ‘{print $1,$5}’ /etc/passwd
直接使用 awk命令处理 /etc/passwd文件,指定字段分隔符为
:
,然后打印每行的第一个字段(用户名)和第五个字段(用户描述)。 -
cat /etc/passwd | awk -va=1 -F: ‘{print $1,$4+a}’
将 /etc/passwd文件的内容作为输入传递给 awk。使用 awk 命令来处理输入内容,
-va=1
定义变量a
的值为 1,-F:
指定字段分隔符为 : ,然后打印每行的第一个字段(用户名)和第四个字段加上变量a
的值。这里如果$4是数字,显示的是加法加上1的值,如果不是,显示0
sed
(stream editor)
作用:自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等,但不改变原文件
格式:sed [选项] 处理格式路径
a 在指定行号之后插入
c 整行替换
s 匹配替换
i 在指定行号位置插入
d 删除
sed ‘1a Hello Unix’ test.txt
:对test.txt在第一行之后插入一行hello unix
sed ‘2c Hello Unix’ test.txt
:将第 2 行替换
sed ‘s/l/L/’ test.txt
:匹配替换(s),将每行中第一次出现的l变为L
sed ‘s/l/L/g’ test.txt
:匹配替换(s),将每行中所有出现的l变为L
sed ‘1i Hello Unix’ test.txt
在第一行之前(1i)插入,也可以说插入到第一行
sed ‘1d’ test.txt
:删除第一行
sed ‘d’ test.txt
:删除所有行
以上默认不修改源文件
如需修改原文件,使用-i
选项
sed -i ‘2c Hello Unix’ test.txt
:第二行整行替换,并且源文件修改
cut
作用:从指定文件中过滤或提取特定内容,并显示在当前屏幕上
格式:cut [选项] 路径
-b 以字节为单位进行分割
-c 以字符为单位进行分割
-d 自定义分隔符,默认为制表符
-f 与-d一起使用,指定显示哪个区域
cut -d: -f 1,3,5 /etc/passwd
:定义分隔符为-d,提取分隔后的第1,3,5字段
cut -c 2-5 /etc/passwd
:提取第2-5个字符
tr
(text replacer)
作用:用于转换或删除文件中的字符
格式:tr [-d] 字符串1 字符串2
cat /etc/passwd | tr 'a-z' 'A-Z'
将显示 /etc/passwd文件的内容作为输入,将其中的小写字母转为大写字母,并输出屏幕
tr 'a-z' 'A-Z' < /etc/passwd
将文件作为tr命令的输入,将其中小写字母全换成大写字母并输出屏幕
tr -d 'a-c' < test.txt
将文件作为tr命令的输入,将其中的a,b,c字符删除
只是输出改变,一般不改变源文件
查找类
find
作用:查找文件或者目录
格式:find 路径 [选项] 表达式
-amin n 在过去n分钟内被读取过的文件
-atime n 在过去n天内被读取过的文件
-cmin n 在过去n分钟内被修改过的文件
-ctime n 在过去n天内被修改过的文件
-type c 文件类型是c的文件
-perm p 文件权限为p的文件
-name n 文件名为n的文件
find . -name “*.conf”
:查找(当前目录及其子目录).
中所有以 .conf 结尾的文件
find / -perm 765 -name “*.txt”
:在根目录/
下查找权限为 765
的所有以 .txt
结尾的文件
find /etc -type f -exec ls -l ‘{}’ \;
: 在 /etc目录中查找所有普通文件(-type f),并显示它们的详细信息(对所有找到的文件执行(-exec) ls -l ‘{}’
命令,{}是一个占位符,表示find命令找到的每一个文件的路径, \;
是告诉-exec选项命令结束的标志。)
grep
(Global Regular Expression Print)
作用:查找文件里符合条件的字符串
格式:
grep [选项] pattern文件…
cat 文件… | grep [选项] pattern
-i 忽略字符大小写的差别
-v 显示不包含匹配文本的所有行
-n 显示匹配行及行号
grep ‘root’ /etc/passwd
:在 /etc/passwd文件中查找包含 “root” 的行
cat /etc/passwd | grep ’root’
:使用 cat 命令将文件的内容作为输入传给grep,使用 grep过滤包含 “root” 的行
cat /etc/passwd | grep -v ‘root’
:使用 cat 命令将文件的内容作为输入传给grep,使用 grep过滤不包含(-v) “root” 的行
cat /etc/passwd | grep -i ‘net’
:使用 cat 命令将文件的内容作为输入传给grep,使用 grep过滤包含net 的行,且不区分net的大小写
正则表达式
^ | 锚定行的开始 如:^grep 匹配所有以grep开头的行 |
---|---|
$ | 锚定行的结束 如: grep$ 匹配所有以grep结尾的行 |
. | . 匹配一个非换行符的字符 如: gr.p 匹配gr后接一个任意字符,然后是p |
* | 匹配零个或多个先前字符 如: *grep 匹配所有一个或多个空格后紧跟grep的行。 .* 一起用代表任意字符 |
[] | 匹配一个指定范围内的字符,如’[Gg]rep’匹配Grep和grep |
[^] | 匹配一个不在指定范围内的字符,如: [^A-FH-Z]rep 匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行 |
\(…\) | 标记匹配字符,如’\(love\)’ ,love被标记为1 |
\< | 锚定单词的开始,如:'\<grep’匹配包含以grep开头的单词的行 |
\> | 锚定单词的结束,如’grep\>'匹配包含以grep结尾的单词的行 |
x\{m\} | 重复字符x,m次,如: '0\{5\}'匹配包含5个o的行 |
x\{m,\} | 重复字符x,至少m次,如: 'o\{5,\}'匹配至少有5个o的行 |
x\{m,n\} | 重复字符x,至少m次,不多于n次,如: 'o\{5,10\}'匹配5–10个o的行 |
\w | 匹配文字和数字字符,也就是[A-Za-z0-9],如: 'G\w*p’匹配以G后跟零个或多个文字或数字字符,然后是p |
\W | \w的反置形式,匹配一个或多个非单词字符,如点号句号等 |
\b | 单词锁定符,如: '\bgrep\b’只匹配grep |
工具类命令
cal
(calender)
作用:打印日期
选项:
-3 显示最近三个月的日历
-s 将星期天作为月的第一天
-m 将星期一作为月的第一天
-y 显示当年日历
cal 2 2022
打印2022年2月日历
date
作用:显示或设定系统的日期与时间
格式:date [选项] 时间格式
%H 小时(00…23)
%M 分钟(00…59)
%S 秒(00…60)
%Y 完整月份(0000…9999)
%m 月份(01…12)
%d 日(01…31)
[root@localhost ~]# date +'%Y-%m-%d %H:%M:%S'
2024-06-02 15:40:30
一定要有前面的+
wc
word count:默认统计文件内的行、字、字节数
格式:wc [选项] 文件路径
-c 按字节统计(characters)
-l 按行数统计 (lines)
-m 按字符统计(multibyte)
-w 按单词统计(words)
[root@localhost ~]# wc /etc/passwd
20 31 923 /etc/passwd
cat /etc/passwd | wc -l
sort
作用:对内容排序
格式:sort [选项] 文件路径
-f 排序时,将小写字母视为大写字母
-n 按照数值大小排序
-u 去重排序
-o file 将排序后的结果存入指定的文件
-r 以相反的顺序来排序
sort /etc/passwd
:默认是按字典顺序排序
sort -r /etc/passwd
:字典反序排序
sort -o out.txt -n /etc/passwd
:按照数值大小排序,并将排序后结果保存到out.txt
which / whereis
作用:查找文件,适用于快速确定某个命令的位置以及检查命令是否存在。
格式: which / whereis 命令
su
作用:变更为其他使用者的身份。除 root外,需要键入该使用者的密码
格式: su [选项] [用户名]
su
:默认变root
su tak
:变tak普通用户
su -c ls tak
:以tak用户运行ls命令
su - tak -c ls
:变更账号为tak的使用者运行ls命令,并执行指令(ls)后再变回原来使用者
两者区别:前者只切换用户执行命令,不加载目标用户的环境。后者切换用户执行命令,并加载目标用户的完整环境。
sudo
作用:以系统管理者的身份执行指令
格式: sudo 命令
CentOS7默认没有普通用户具有sudo权限
添加sudo权限
修改 /etc/sudoers
步骤
su #切换到root用户
ls -l /etc/sudoers #查看文件权限
chmod u+w /etc/sudoers #添加写权限
vi /etc/sudoers #打开并搜索root行
# 用户名 ALL=(ALL) ALL #添加内容,保存退出
chmod u-w /etc/sudoers #删除写权限
exit #切换回当前用户
rpm/yum/apt-get
rpm命令
RedHat系列包(redhat、centos、fedora) 使用rpm命令
rpm -qa | -i | -e
rpm -qa
:查询所有已安装的包
yum命令
安装更新卸载使用yum
yum [ install | remove | list | search ] 包名
yum install nano
安装nano编辑器
apt-get命令
Debian、Ubuntu系列包管理使用apt-get
apt-get install | remove | list | search
win-linux格式转换
- Windows 换行结束符号有两个控制字符,一个是归位字符
(carriage return, ^M),另一个是换行字符( new line, ^J )
- Linux中只使用一个换行字符\n (功能同^J )
unix2dos|dos2unix filename
#格式转换后覆盖更新原文件
unix2dos|dos2unix –n filename newFilename
#格式转换后
存为新文件
防火墙操作
关闭防火墙
systemctl status firewalld
#查看防火墙状态
systemctl disable firewalld
#取消开机自启动
systemctl stop firewalld
#关闭防火墙
vi编辑器
普通模式
- 默认模式,用于导航和执行命令。
- 启动
vi
后默认进入此模式。 - 可以在此模式下使用导航键、删除、复制、粘贴等命令。
h(左), j(下), k(上), l(右) | 键盘上下左右键 |
---|---|
$ | 移动到行未 |
0 | 移动到行首 |
gg | 定位第一行行首 |
G | #定位末行行首 |
nG | 定位到第n行行首 |
n+ | 向下移动n行 |
n- | 向上移动n行 |
Ctrl + b | 上翻一页 |
Ctrl + f | 下翻一页 |
x / nx | 删除一/n个字符 |
dd / ndd | 删除一/n行 |
u | 撤销上一步操作 |
U | 撤销对当前行的所有操作 |
yy / nyy | 复制一/n行 |
p | 粘贴到光标所在位置下一个字符位置 |
r / nr | 替换光标所在字符(相同字符)自动退出 |
R | 进入替换模式替换光标所在字符,直到按下Esc不会自动退出 |
ZZ | 与末行模式下 :wq 效果一样 |
gg + dG | 定位第一行行首删除所有内容 |
插入模式
-
用于插入和编辑文本。
-
从普通模式按
i
、I
、a
、A
、o
或O
等键进入插入模式。 -
按
Esc
键返回普通模式。i 在光标左侧插入 a 在光标右侧插入 o 在光标所在行的下一行插入 s 删除光标所在字符后插 I 在光标所在行首插入 A 在光标所在行尾插入 O 在光标所在行的上一行插入 S 删除光标所在行
末行模式
-
用于执行文件操作和一些高级命令。
-
从普通模式按
:
进入命令行模式。 -
输入完命令后按
Enter
执行,自动返回普通模式。:q 正常退出 :q! 强制退出(如果文件有修改未保存需要强制退出) :w 写入文件 :w filename 另存为 :wq 写入后退出 :wq! 写入后强制退出 :x :wq一样 :set nu 或 :set number 显示所有行号 :nu 或 :number 显示光标所在行号 :set nonu 或 :set nonumber 取消行号显示 /<pattern> 从光标所在位置往下搜索 ?<pattern> 从光标所在位置往上搜索 n/N 向下/向上搜索下/上一个匹配项 : s/x/y 把光标所在行第一个匹配的x替换为y :n,m s/x/y 把第n行到m行中每行中第一个匹配的x替换为y :% s/x/y 把当前文件中所有行的第一个匹配的x替换为y g : 全局 => 把每一行中所有的匹配项都替换 : s/x/y/g
:n,m s/x/y/g
:% s/x/y/g:n,m d 删除第n行到m行之间的内容
vi /path/to/file
打开文件默认定位第一行
vi +n filename
打开文件光标置于第n行
vi + filename
打开文件后把光标置于最后一行
vi filename1 filenam2 filename3…
多个文件一起打开,在末行模式使用:e filename
切换
vi与shell交互
在末行模式下用“!”符号来访问Linux的Shell
:!cat /etc/passwd | more
:! /bin/bash
vi文件冲突
每次打开文件是会创建一个名为*.swp的临时文件
当多界面编辑、vi异常退出时会导致异常,删除*.swp即可
网络管理
安装网络管理工具:yum install -y net-tools
列出各个已定义的网络接口的配置情况:ifconfig
禁用、激活网络接口 :
ifconfig eth0 up
ifconfig eth0 down
注意:修改网络接口配置会导致SSH客户端断开
修改网络接口配置
临时:ifconfig <设备名> <IP> netmask <掩码>
修改网络接口配置会导致SSH客户端断开
重启网络控制程序后或重启系统后失效
修改后不一定可以上网
VMware网络模式
每个虚拟机指定上网模式,IP的分配方式
- NAT(常用):利用宿主机网卡进行转发
- 桥接模式:局域网内有独立IP,与宿主机同等地位
- 仅主机模式:只能与宿主机通讯,适用于网络测试/攻防
ping
作用:网络连通性测试
格式:ping [选项] <目的主机名或IP地址>
-c <完成次数> | 设置完成要求回应的次数 |
---|---|
-s <数据包大小> | 设置数据包的大小 |
-t <存活数值> | 设置存活数值TTL的大小 |
-v | 详细显示指令的执行过程 |
traceroute
作用:显示数据包到主机间的路径
格式:traceroute <选项> <目的主机IP或域名>
-i | 使用ICMP回应取代UDP资料信息 |
---|---|
-m <存活数值> | 设置检测数据包的最大存活数值TTL的大小 |
-n | 直接使用IP地址而非主机名称 |
-p <通信端口> | 设置UDP传输协议的通信端口 |
-v | 详细显示指令的执行过程 |
netstat
作用:用于显示网络状态
格式: netstat [选项]
-a或–all | 显示所有连线中的Socket |
---|---|
-A<网络类型>或–<网络类型> | 列出该网络类型连线中的相关地址 |
-c或–continuous | 持续列出网络状态 |
-e或–extend | 显示网络其他相关信息 |
-l或–listening | 显示监控中的服务器的Socket |
-n或–numeric | 直接使用IP地址,而不通过域名服务器 |
-p或–programs | 显示正在使用Socket的程序识别码和程序名称 |
-t或–tcp | 显示TCP传输协议的连线状况 |
-u或–udp | 显示UDP传输协议的连线状况 |
-v或–verbose | 显示指令执行过程 |
网络相关配置文件
/etc/sysconfig/network | 最基本的网络信息,系统启动时读取该文件 |
---|---|
/etc/sysconfig/network-scripts/ | 此目录下的文件是系统启动时用来初始化网络的一些信息,例如:第一块以太网卡对应的文件为ifcfg-eth0 |
/etc/host.conf | 域名解析的配置文件 |
/etc/hosts | 域名或主机名与IP地址的映射文件 |
/etc/resolv.conf | 域名服务器配置文件 |
/etc/protocols | 定义使用的网络互联协议及协议号 |
/etc/services | 设定主机的不同端口的网络服务 |
/etc/sysconfig/network
该文件用来指定服务器上的网络配置信息, 包含了控制和网络有关的文件和守护程序的行为的参数
常见的几个配置项如下:
- NETWORKING:值为yes或no,表示主机是否支持网络功能
- HOSTNAME:主机名(即域名)
- GATEWAY: 默认网关
- FORWARD_IPV4: 设置本机是否允许转发IPV4的数据包
- DOMAINNAME: 此台主机所属的网络域
- GATEWAYDEV: 连接网关的设备,例如eth0,如果是拨号用户则设为ppp0
/etc/sysconfig/network-scripts/ifcfg-*
ifcfg-*
- DEVICE=eth0 //设备名称
- ONBOOT=yes //启动时是否启动该设备
- BOOTPROTO=none //启动协议,none表示使用用户设置的ip地址,dhcp表示从dhcp获得ip地址,static表示静态
- IPADDR=192.168.14.11 //IP地址
- NETMASK=255.255.255.0 //子网掩码
- GATEWAY=XX.XXX.XXXX //网关
- DNS1=xx.xxx.xxx.xx //DNS服务器
/etc/host.conf
域名解析配置文件
- order hosts, bind先查询解析/etc/hosts文件,然后是DNS服务器
- multi on指定的计算机是否可以有多个IP地址
- nospoof on不允许对该服务器进行IP地址欺骗
/etc/protocols
定义协议定义文件
协议名称 协议号 别名
网络服务列表文件 /etc/services
列出了列出了Linux系统支持的服务名称、服务使用的端口号和协议类型、服务的别名、功能注释等
service
作用:用于对系统服务进行管理
格式:service 服务名 [ start | stop | restart | status ]
service sshd restart
service atd status
chkconfig
作用:用于检查和设置系统的各种服务,设置启动项
格式:chkconfig [选项] 服务名 [状态]
–add | 添加指定的新服务 |
---|---|
–del | 删除指定服务 |
–level<运行级别编号> | 改变服务的运行级别及启动信息 |
–list | 显示所有或指定服务,以及他们在每个运行级别是否启动 |
提供了一个维护/etc/rc[0~6] d 文件夹的命令行工具,它减轻了系统直接管理这些文件夹中的符号连接的负担
chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接,需要重启才能生效
chkconfig --list
chkconfig --add mysql
chkconfig --level 2345 mysql on
systemd
CentOS 7 开始使用systemd替换了SysV
Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务
systemd不仅仅只是个初始化系统,它还包括了还包括了管理系统各种的方面的 daemon
现在的大多数Linux发行版本都进行了这个更新
systemctl
主要负责控制systemd系统和服务管理器
是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令
service 对比
systemctl start network.service
systemctl restart sshd
daemon命令 | systemctl命令 | 说明 |
---|---|---|
service [服务] start | systemctl start [unit type] | 启动服务 |
service [服务] stop | systemctl stop [unit type] | 停止服务 |
service [服务] restart | systemctl restart [unit type] | 重启服务 |
chkconfig 对比
systemctl enable nginx.service
systemctl disable sshd
daemon命令 | systemctl命令 | 说明 |
---|---|---|
chkconfig [服务] on | systemctl enable [unit type] | 设置服务开机启动 |
chkconfig [服务] off | systemctl disable [unit type] | 设备服务禁止开机启动 |
开机自启动
/etc/rc.d/rc.local
1.赋予脚本可执行权限chmod +x /opt/script/autostart.sh
- 在 /etc/rc.d/rc.local 末尾增加想要执行的脚本内容
su - user -c '/opt/script/autostart.sh’
- 给 /etc/rc.d/rc.local 赋予可执行权限
chmod +x /etc/rc.d/rc.local
chkconfig
-
将脚本移动到 /etc/rc.d/init.d目录下
mv /opt/script/autostart.sh /etc/rc.d/init.d
-
赋予脚本可执行权限
chmod +x /etc/rc.d/init.d/autostart.sh
-
添加脚本到开机自动启动项目中
cd /etc/rc.d/init.d
chkconfig --add autostart.sh
chkconfig autostart.sh on
systemctl
默认情况下,服务通过yum install时,会自动配置好unit文件
默认在 /usr/lib/systemd/system 目录下
以Jenkins为例
# systemctl enable jenkins.service
# systemctl start jenkins.service
重启虚拟机网络
重启网络 :systemctl restart network
常用符号含义
【不严谨,仅用于帮助理解】
a
:通常表示“all”,即所有的。例如:
ls -a
:显示所有文件,包括隐藏文件。grep -a
:将二进制文件作为文本文件搜索。
c
:通常与“count”或“change”相关。例如:
wc -c
:统计字符数。cp -c
:检查文件是否真正被复制(部分系统)。
e
:通常与“echo”或“execute”相关。
f
:通常表示“file”或“force”的相关选项,表示强制、指定。例如:
rm -f
:强制删除文件。tar -f
:指定归档文件。
g
:有时表示“global”或“group”的相关选项,表示全局、组。例如:
grep -g
:使用基本正则表达式(部分系统)。chmod -g
:修改组权限。
h
:通常表示“human-readable”或“help”。例如:
ls -h
:以人类可读的格式显示文件大小。
i
:通常与“interactive”或“ignore”相关。例如:
rm -i
:在删除每个文件前进行提示。grep -i
:忽略大小写地搜索。
l
:通常表示“long”或“list”的相关选项。例如:
ls -l
:以长格式列出文件的详细信息。ps -l
:以长格式显示进程信息。
m
:通常与“modification”或“message”相关。例如:
chmod -m
:设置文件权限(部分系统)。echo -m
:显示消息(部分系统)。
n
:通常表示“number”或“no”的相关选项。例如:
grep -n
:显示匹配行的行号。ls -n
:显示用户和组的数字ID而不是名称。
o
:通常与“output”或“only”相关。例如:
ls -o
:显示详细信息时省略组信息。tar -o
:指定输出文件。
p
:通常与“path”或“print”相关。例如:
find -print
:显示找到的文件。mkdir -p
:创建目录,包括必要的父目录。
q
:通常表示“quiet”或“quick”的相关选项。例如:
grep -q
:安静模式,不输出任何信息。tar -q
:快速创建归档文件。
r
:通常表示“recursive递归”或“reverse逆序”的相关选项。例如:
cp -r
:递归复制目录。ls -r
:逆序排列。
s
:通常表示“size”的相关选项。例如:
ls -s
:显示文件大小。
t
:通常与“time”或“type”相关。例如:
ls -t
:根据修改时间排序。file -t
:显示文件类型。
u
:通常表示“user”或“update”的相关选项。例如:
chmod -u
:修改用户权限。rsync -u
:仅更新较新的文件。
x
:通常与“extract”或“exclude”相关。例如:
tar -x
:解压归档文件。grep -x
:精确匹配整个行。
常用符号含义
【不严谨,仅用于帮助理解】
a
:通常表示“all”,即所有的。例如:
ls -a
:显示所有文件,包括隐藏文件。grep -a
:将二进制文件作为文本文件搜索。
c
:通常与“count”或“change”相关。例如:
wc -c
:统计字符数。cp -c
:检查文件是否真正被复制(部分系统)。
e
:通常与“echo”或“execute”相关。
f
:通常表示“file”或“force”的相关选项,表示强制、指定。例如:
rm -f
:强制删除文件。tar -f
:指定归档文件。
g
:有时表示“global”或“group”的相关选项,表示全局、组。例如:
grep -g
:使用基本正则表达式(部分系统)。chmod -g
:修改组权限。
h
:通常表示“human-readable”或“help”。例如:
ls -h
:以人类可读的格式显示文件大小。
i
:通常与“interactive”或“ignore”相关。例如:
rm -i
:在删除每个文件前进行提示。grep -i
:忽略大小写地搜索。
l
:通常表示“long”或“list”的相关选项。例如:
ls -l
:以长格式列出文件的详细信息。ps -l
:以长格式显示进程信息。
m
:通常与“modification”或“message”相关。例如:
chmod -m
:设置文件权限(部分系统)。echo -m
:显示消息(部分系统)。
n
:通常表示“number”或“no”的相关选项。例如:
grep -n
:显示匹配行的行号。ls -n
:显示用户和组的数字ID而不是名称。
o
:通常与“output”或“only”相关。例如:
ls -o
:显示详细信息时省略组信息。tar -o
:指定输出文件。
p
:通常与“path”或“print”相关。例如:
find -print
:显示找到的文件。mkdir -p
:创建目录,包括必要的父目录。
q
:通常表示“quiet”或“quick”的相关选项。例如:
grep -q
:安静模式,不输出任何信息。tar -q
:快速创建归档文件。
r
:通常表示“recursive递归”或“reverse逆序”的相关选项。例如:
cp -r
:递归复制目录。ls -r
:逆序排列。
s
:通常表示“size”的相关选项。例如:
ls -s
:显示文件大小。
t
:通常与“time”或“type”相关。例如:
ls -t
:根据修改时间排序。file -t
:显示文件类型。
u
:通常表示“user”或“update”的相关选项。例如:
chmod -u
:修改用户权限。rsync -u
:仅更新较新的文件。
x
:通常与“extract”或“exclude”相关。例如:
tar -x
:解压归档文件。grep -x
:精确匹配整个行。