可通过键入
man man
查看man命令介绍
(1)作用:查看帮助手册
(2)语法:man+(选项)+参数
(3)章节:
1.用户命令手册
2.系统调用手册
3.库调用手册
4.设备文件手册
5.配置文件或者某些文件的格式
6.游戏
7.惯例和协议等杂项
8.系统管理工具
9.内核例程
(4)常用选项:
-f:显示给定关键字的简短描述信息
-k:根据关键字搜索帮助手册
-w:显示手册文件所在位置
(5)示例:
man cp
man -f sleep
man 3 sleep
man 5 passwd
man -w ls
man -k disk
(1)作用:info命令是Linux下info格式的帮助指令。阅读 info 格式的文档。
(2)语法:info [选项] 参数
(3)常用选项:
-w:显示info文档的物理位置
-f:指定要访问的info文件
-n:在首个浏览过info文件中指定节点
(4)常用操作
N键:显示(相对于本节点的)下一节点的文档内容。
P键:显示(相对于本节点的)上一节点的文档内容。
I键:返回上一个访问节点的页面内容
B/E:一个节点内容的开始/结束。
H:打开info教程。
D:回到info初始节点。
回车:跳转到连接文本。
SPACE键:向前滚动一页。
BACKUP或DEL键:向后滚动一页。
Q:退出info。
(5)示例:
info pwd
info -w pwd
(1)作用:查询一个命令执行什么功能,并将查询结果打印到终端上(等同于man -f)
(2)语法:whatis 命令
(3)示例:
whatis sleep
(1)作用:
(2)语法:touch [选项] FILE
(3)选项:
- a 改变档案的读取时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-h 影响每个符号链接,而不是任何引用的文件(仅在可以更改符号链接时间戳的系统上有用)
-m 改变档案的修改时间记录。
-r 使用参考档的时间记录,与 
–file 的效果一样。
-t 设定档案的时间记录,格式与 date 指令相同。
–help 列出指令格式。
–version 列出版本讯息
(4)示例:
touch file.txt
修改已有文件的时间戳为当前系统时间(包括修改时间及访问时间)
与之前创建完相比较,时间更新
修改文件的access时间
touch -a file.txt
touch -m file.txt
touch -c nofile.txt
touch --no-creat nofile.txt
touch file.txt -r ref_file.txt
touch -d "tomorrow" file.txt
改为2022年5月20日13点14分00秒:
touch -t 2205201314.00 file.txt
(1)作用:创建目录
注意:默认状态下,如果要创建的目录已经存在,则提示已存在,而不会继续创建目录,新建的目录与它所在目录下的文件有重名也不行
(2)语法 :mkdir [选项] DIRECTORY
(3)选项:
-p:递归创建多级目录
-m:建立目录的同时设置目录的权限
-v :显示目录的创建过程
(4)示例:
mkdir dir1
mkdir dir2 dir3 dir4
mkdir dir{5..7}
mkdir -p dir7/dir8/di9
mkdir -m 700 dir1/dir10
默认创建的目录权限为775
更改目录权限为700
mkdir -v dir{11..16}
显示创建dir11到dir16的过程:
(1)作用:删除文件或目录
(2)语法:rm [选择] [file]
(3)选项:
-f:忽略不存在的文件,不会出现警告信息
-i:删除前会询问用户是否操作
-r/R:递归删除
-v:显示指令的详细执行过程
(4)示例
rm file.txt
rm -r dir
rm -f dir
说明:一般与-r配合使用,可以不用考虑删除的是文件还是目录
rm -i file1.txt file2.txt
(1)作用:删除空目录
(2)语法:rmdir [选项] DIRECTORY
(3)选项:
-p:用递归的方式删除指定目录路径中所有的父级目录,非空则报错-v:显示命令的详细执行过程
(4)示例:
rmdir dir
rmdir -p dir1/dir2/dir3
rmdir -v dir
(1)作用:
①移动文件
②重命名文件
(2)语法:
mv [OPTION]… [-T] SOURCE DEST
mv [OPTION]… SOURCE… DIRECTORY
mv [OPTION]… -t DIRECTORY SOURCE…
(3)选项
-i:若存在同名文件,则向用户询问是否覆盖
-f:覆盖已有文件时,不进行任何提示
-b:当文件存在时,覆盖前为其创建一个备份
-u:当源文件比目标文件新,或者目标文件不存在时,才执行移动操作
(4)示例
mv file.txt ./dir
mv file.txt newfile.txt
mv dir1 dir2
mv -i file1.txt file2.txt
mv -b file1.txt file2.txt
箭头所指为之前的file2文件的备份
mv -u newfile.txt ./dir
发现无法将newfile.txt移动到./dir下并且覆盖./dir下已经存在的newfile.txt
只有更新/mv目录下的时间戳才可以移动:
(1)作用:复制文件或目录
(2)语法:
cp [OPTION]… [-T] SOURCE DEST
cp [OPTION]… SOURCE… DIRECTORY
cp [OPTION]… -t DIRECTORY SOURCE…
(3)选项:
-f:若目标文件已经存在,则会直接覆盖
-i:若目标文件已经存在,则会询问是否覆盖
-a:通常在复制目录时使用,它保留连接,文件属性,并复制目录下所有内容
-r:递归复制文件和目录
-b:覆盖已经存在的文件或目录前将目标文件备份
-v:详细显示cp命令执行过程
(4)示例:
cp file1.txt file2.txt
cp -r dir1 dir2
cp -i file1.txt file2.txt
cp -b file1.txt file2.txt
cp -a dir1 dir2
(1)作用:切换目录
(2)语法:cd [参数] 目录
(3)几个特殊目录
~:用户家目录
.:当前目录
..:当前目录的上一级目录
/:根目录
-:上一次所在目录
(4)相对路径与绝对路径
绝对路径:起始路径为/称为绝对路径
相对路径:起始地址不为/的称为相对路径
(5)示例
cd dir
cd ../..
cd
cd ~
cd -
(1)作用:显示当前目录
(2)语法:pwd
(3)示例
pwd
(1)作用:显示目录信息
(2)语法: ls [OPTION]… [FILE]…
(3)选项:
-a:显示所以文件及目录(包括一“.”开头的隐藏文件)
-l:使用长格式列出文件及目录信息
-r:将文件以相反次序显示(默认以英文字母次序)
-t:根据最后的修改时间排序
-h:以人类可读的格式显示数字大小
-A:同-a,但不列出.(当前目录)以及..(父目录)
-S:根据文件大小排序
-R:递归列出所以目录
-F:在列出的文件名称后加一符号;例如,可执行文件加“*”,目录加“/”
(4)示例
ls -a
ls -l
ls -lR
ls -l *f
ls -ltr
ls -AF
-A 不显示.
(当前目录)以及..
(父目录)
ls -lh
(1)作用:以树状图列出目录内容
(2)语法:tree[选项]
(3)选项:
-a:显示所有文件和目录-L:层级显示-t:用文件和目录的更改时间排序-r:用文件和目录的更改时间倒序排序-f:在每个文件或目录之前,显示完整的相对路径名称-d:显示目录名称而非内容
(4)示例:
tree
tree -a
tree -d
tree -L 1
tree -p
tree -t
tree -r
tree -f
(1)作用显示文件或文件系统详细信息
(2)语法:stat [OPTION]… FILE…
(3)选项:
-L:支持符号链接-f:显示文件系统的信息-t:以简洁的方式输出
(4)三种时间:
Access time:访问时间 (当文件被读取,被修改是改变)Modify time:修改时间(修改文件时改变)Change time:状态改变时间(修改文件,文件属性变换时改变)
(5)示例:
stat file1.txt
stat -f file1.txt
stat -t file1.txt
(1)作用:用字符串替代的方式批量改变文件名
(2)语法: rename ‘s/old-name/new-name/’ files
old-name:原字符串,原文件需要替换的字符串new-name:目标字符串,将要替换的目标字符串files:指定要改变文件名的文件列表
(3)选项
-n:模拟运行,实际没有进行重命名
-v:输出每步执行信息
-f:强制改写
(4)通配符
?:可替代单个字符
*:可替代多个字符
(5)示例
rename 's/.txt/.doc/' myfile.txt
rename -n 's/file/file0/' file*
rename -v 's/file/file0/' file*
(1)作用:提取文件路径中的文件名
(2)语法:
basename NAME [SUFFIX]
basename OPTION… NAME…
(3)选项:
-a:支持处理多个文件
-s:删除指定货后缀
(4)示例
basename /etc/passwd
basename /usr/local
basename -a /etc/passwd /usr/local
basename -s .conf /etc/sysctl.conf
basename /etc/sysctl.conf .conf
(1)作用:去除文件名中的非路径部分,及提取文件名中的路径部分
(2)语法:dirname [OPTION] NAME…
(3)示例:
dirname /usr/bin/cat
dirname /home/zh1/commands/
(1)作用:来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性。
(2)语法: chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files…
(3)选项:
-R:递归处理,将指令目录下的所有文件及子目录一并处理;-v<版本编号>:设置文件或目录版本;-V:显示指令执行过程;+<属性>:开启文件或目录的该项属性;-<属性>:关闭文件或目录的该项属性;=<属性>:指定文件或目录的该项属性。
(4)属性:
A:即Atime,告诉系统不要修改对这个文件的最后访问时间
S:即Sync,一旦应用程序对这个文件执行了写操作,系统立刻把修改的结果写到磁盘
a:即Append Only,若是文件有此属性:只允许在这个文件之后追加数据,不允许覆盖或截断这个文件,若是目录有此属性,只允许在这个目录下建立和修改文件,而不允许删除任何文件
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;当dump程序执行时,该文件或目录不会被dump备份
i:不得任意更动文件或目录;不允许对文件进行任何操作,对于目录,只能修改目录下的文件,不允许建立和删除文件
s:彻底删除文件,不可恢复
S:即时更新文件或目录;
u:预防意外删除。当一个应用程序请求删除这个文件,系统会保留其数据以便以后能够恢复删除。
t:文件系统支持尾部合并
X:可以直接访问压缩文件的内容
(5)示例:
sudo chattr +i file.txt
sudo chattr -i file.txt
sudo chattr +a file.txt
sudo chattr -R +i dir
(1)作用:查看文件的第二扩展文件系统属性
(2)语法:lsattr(选项)(参数)
(3)选项:
-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
-R:递归的操作方式;
-V:显示指令的版本信息;
-a:列出目录中的所有文件,包括隐藏文件。
(4)示例
lsattr -v dir
lsattr -v file.txt
(1)作用:识别文件类型
(2)语法:file[选项]文件
(3)选项:
-b:列出文件类型,不显示文件名称-c:详细显示指令执行过程-f:指定名称文件,显示多个文件类型信息-L:直接显示符号连接所指向的文件类别-m:指定魔法数字文件-z:尝试解读压缩文件内容-i:显示MIME类别
(4)示例:
file file.txt
file dir
file /dev/sda
file -b file.txt
file -i file.txt
file /dev/cdrom
file -L /dev/cdrom
(1)作用:为防止文件传输过程中损坏或被植入病毒,官方会生成根据文件内容生成md5值,用来核验
(2)语法: md5sum [OPTION]… [FILE]…
(3)选项:
-b:以二进制模式读取文件
-t:以文本模式读取文件内容
-c:根据已生成的md5值,对现存文件进行校验
--status:校验完成后,不生产错误或正确的提升信息,可以通过命令的返回值判断
(4)示例:
md5sum file.txt
md5sum -b file.txt
md5sum -t file.txt
md5sum file.txt > file.md5
此时定向的md5值记录了file.txt的相关信息,可以定位到file.txt,故可以用来判断file.txt文件是否被修改
md5sum -c file.md5
当修改file.txt文件后再次校验,发现无法匹配,说明文件被修改
md5sum -c --status file.md5echo $?
(1)作用:搜索指定文件
(2)语法:find pathname -option [-print ] [ -exec | -ok command ] {} ;
-pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command { };,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
(3)选项:
① 查找名称查找文件的基本查找命令
-name filename :查找名为filename的文件。
-iname filename :与-name相同,查找名为filename的文件,但忽略大小写。
-type:按照文件类型查找,可以是以下类型:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。s -socket文件
② 根据他们的权限查找文件
-perm :按执行权限来查找(mode为完全匹配, -mode为包含即可)
-empty :查找长度为零(即空文件)的文件
③ 基于所有者和组的搜索文件
-user username :文件属主来查找
-group groupname :按组来查找
-nogroup :查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser :查无有效属主的文件,即文件的属主在/etc/passwd中不存(孤儿文件 没有所有者的文件)
④ 根据日期和时间查找文件和目录
-mtime -n +n :按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n :按文件访问时间来查,-n指n天以内,+n指n天以前
-ctime -n +n :按文件创建时间来查找文件,-n指n天以内,+n指n天以前
⑤ 根据大小查找文件
-size [+/-]n
按照文件大小查询文件,+n表示文件大小大于n,-n表示文件大小小于n。常用单位:k, M, G
(4)示例:
find / -name *.conf
sudo find /etc -size +1k
sudo find /home -user zh1
find ../ -type f
find ../ -perm 664 -exec ls -l {} \;
find ../ -iname "*.txt"
find -mtime -7
(1)作用:查找命令文件所在位置
(2)语法:which [-a] filename …
(3)示例:
查找命令所在位置
which ls
which bash
which fdisk
(1)作用:查找命令的二进制程序,源代码文件和man手册页
(2)语法: whereis [options] [-BMS directory… -f] name…
(3)选项:
-b:查找二进制程序或命令-B:从指定目录下查找二进制程序或命令-m:查找man手册文件-M:从指定目录下查找man手册文件-s:只查找源代码文件-S:从指定目录下查找源代码文件
(4)示例:
whereis ls
whereis -b ls
whereis -m ls
(1)作用:快速查找文件或目录,同whereis命令一样,在数据库中查找,而非在磁盘上找,这个数据库每天会更新一次,故有可能无法找到最近添加或删除的文件,故查找前,需要更新数据库:sudo updatedb
(2)语法:locate [选项][文件]
(3)选项:
-i:忽略大小写
-c:输出匹配条目的数量
-p:忽略空格
(4)示例:
locate file.txt
locate /etc/shs
locate whereis
locate -i /home/zh1/commands/locate/f
(1)作用:改变文件或目录的用户和用户组
(2)语法:chown [选项] 所属主:所属组 文件
(3)选项:
-R:对目前目录下的所有文件与目录进行相同的变更
-c:显示所属信息变更信息
(4)示例:
首先创建用户和组:
(创建组和用户分别为:sudo groupadd zh2
,sudo useradd -m -g zh2 zh2
)
创建zh2用户,该用户组为zh2,并在/home目录下创建zh2目录
sudo chown zh2:zh2 file.txt
sudo chown zh2 file.txt
sudo chown :zh2 file.txt
sudo chown -c zh2:zh2 file.txt
sudo chown -R zh2:zh2 dir
(1)作用:改变文件或目录权限
(2)语法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…
(3)修改权限的两种模式:
① 符号模式:
② 数字模式
(4)选项:
-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
(5)示例:
chmod a+r file.txt
chmod -R a+r *
chmod u+x file.txt
chmod ug+w,o-w file.txt
chmod a+r,a+w,a+x file.txt
chmod 777 file.txt
chmod 755 file.txt
chmod u+r,u+w,u+x,go = rx
chmod u=rw,go= file.txt
(1)作用:更改文件用户组
(2)语法:chgrp [参数][目录]
(3)选项:
-v:显示指令执行过程
-R:递归处理,将指定目录下的所有文件及子目录一并处理
--reference:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同
(4)示例:
sudo chgrp zh2 file.txt
sudo chgrp -v zh1 file.txt
sudo chgrp --reference=reffile.txt file.txt
sudo chgrp -R zh2 dir
(1)作用:文本搜索工具
(2)语法:grep [选项] 文件
(3)选项:
-i:忽略大小写
-c :只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 显示不包含匹配文本的所有行
-w 匹配整词
-x 匹配整行
-r 递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式
(4)示例:
grep zh1 /etc/passwd
sudo grep zh1 /etc/passwd /etc/shadow
sudo grep -h zh1 /etc/passwd /etc/shadow
grep -r hellp *
sudo grep -c zh1 /etc/passwd /etc/shadow
grep -i ZH1 /etc/passwd
grep -n zh1 /etc/passwd
grep -v zh1 /etc/passwd
grep -l hello *
grep -x hello file.txt
grep -x hello file1.txt
grep -q hello file1.txtecho $?grep -q hello file2.txtecho $?
(1)作用:查找指定的字符串
(2)语法:egrep [选项] [文件]
(3)选项:同grep
(4)示例:
file.txt内容:
linux hello
55 66 77 888
li nux
linuxlinux
linuxlinuxlinux
#world
abab
ababab
abc
abd
abe
egrep 'a+' file.txt
egrep 'linux|66' file.txt
egrep '(linux)' file.txt
egrep '(linux)+' file.txt
egrep '^#' file.txt
egrep 'linux$' file.txt
egrep '(ab){3}' file.txt
egrep '(linux){3}' file.txt
egrep 'ab[cd]' file.txt
(1)作用:在终端上显示文件内容
(2)语法:cat [OPTION]… [FILE]…
(3)选项:
-n 显示行数(空行也编号)
-s 去除重复的空行
-b 显示行数(空行不编号)
-E 每行结束处显示$符号
-T 将TAB字符显示为 ^I符号
(4)示例:
cat file.txt
cat file1.txt file2.txt
cat -n file.txt
cat -s file.txt
cat -E file.txt
cat -T file.txt
cat file1.txt > file3.txt #如果file3.txt不存在,则创建,并且内容会被覆盖
cat file1.txt >>file3.txt# 如果file3.txt不存在,则创建,并且内容会被追加到末尾
cat file1.txt file2.txt > combinedfile.txt
cat > file5.txt
(1)作用:分页显示文本文件内容,不支持上翻
(2)语法:more [options] file…
(3)基本操作:
回车:下滚一行
空格:下翻一页
(4)选项:
-num 指定每屏显示的行数
+num 从第num行开始显示
-p 先清除屏幕再显示文本文件的剩余内容
-c 与-p相似,不滚屏,先显示内容再清除旧内容
-s 多个空行压缩成一行显示
(5)示例:
more ~/.bashrc
more -c -10 ~/.bashrc
more -s ~/.bashrc
more +10 ~/.bashrc
(1)作用:分页显示文本内容,支持上翻下翻
(2)语法:less [参数] 文件
(3)快捷操作:
空格键 下翻一页
回车键 下滚一行
j 下滚一行
k 上滚一行
b 回翻一页
f 下翻一页
q 退出
/word 搜索word关键词
(4)示例:
less ~/.bashrc
less ~/.bashrc ~/.bash_history # :n - 浏览下一个文件 :p - 浏览前一个文件
history | less
(1)作用:显示文件开头的内容
(2)语法:head [OPTION]… [FILE]…
(3)选项:
-c <数字> 指定显示头部内容的字符数
-n <数字> 定义显示行数
(4)示例:
head ~/.bashrc
head -n 5 ~/.bashrc
head -n -6 ~/.bashrc
head -c 20 ~/.bashrc
head -c -30 ~/.bashrc
(1)作用:查看文件尾部内容
(2)语法:tail [OPTION]… [FILE]…
(3)选项:
-c N 输出文件尾部的 N(N为整数)个字节内容
-f 动态显示文件最新追加的内容
-n N 输出文件的尾部N(N位数字)行内容
(4)示例:
tail ~/.bashrc
tail -n 20 ~/.bashrc
tail +20 ~/.bashrc
tail -c 10 ~/.bashrc
tail -f file1.txt# 脚本
while true ; do echo hello >> file1.txt ;sleep 1;done
(1)作用:反向显示文件内容
(2)语法:tac [选项] [文件]
(3)示例:
tac file.txt
(1)作用:添加行号
(2)语法:nl [OPTION]… [FILE]…
(3)选项:
-b a 也给空行添加行号(类似 cat -n)
-b t 空行不显示行号
-n 列出行号表示的方法:-n ln 行号在屏幕的最左方显示-n rn 行号在自己栏位的最右方显示,且不加0-n rz 行号在自己栏位的最右方显示,且加0
-w 行号栏位的占用的位数
(4)示例:
nl file.txt
nl -b a file.txt
nl -b a -n rz file.txt
nl -b a -n rz -w 3 file.txt
(1)作用:统计文本信息
(2)语法:wc [OPTION]… [FILE]…
(3)选项:
-w 统计字数,或--words:只显示字数。一个字被定义为由空格、跳格或换行字符分隔的字符串-c 统计字节数,或--bytes或--chars:只显示Bytes数-l 统计行数,或--lines:只显示列数-m 统计字符数-L 打印最长行的长度(不包含不可见字符)
(4)示例:
file.txt:
123456789
hello world
wc file.txt
wc -w file.txt
wc -m file.txt
wc -c file.txt
wc -l file.txt
wc -L file.txt
cat file.txt | wc -l
(1)作用:文件分割
(2)split [OPTION]… [FILE [PREFIX]]
(3)选项:
-l 行数/-<行数> 指定每多少行切成一个小文件
-b<字节> 指定每多少字节切成一个小文件
-d 使用数字作为后缀
-a 指定后缀长度(默认为2)
[输出文件名] 设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号
(4)示例:
split -2 file1.txt
split -b 50 file1.txt
split -b 50 -d -a 3 file1.txt
split -b 50 -d -a 3 file1.txt split_file
(1)作用:从文件中提取文本的一部分
(2)语法:cut OPTION… [FILE]…
(3)选项:
-b 以字节为单位进行分割 ,仅显示行中指定字节范围的内容
-c 以字符为单位进行分割 , 仅显示行中指定范围的字符
-d 自定义分隔符,默认为制表符”TAB”
-f 显示指定字段的内容 , 与-d一起使用
-n 取消分割多字节字符
--complement 取被选择的字节、字符或字段的补集
--out-delimiter 指定输出内容是的字段分割符
(4)示例:
NO Name Genger Score
01 Lili f 99
02 Tim m 88
03 Tom m 100
04 Seven m 70
cut -f 2 file1.txtcut -f 1 file1.txt
cut -f 2 --complement file1.txt
NO;Name;Genger;Score
01;Lili;f;99
02;Tim;m;88
03;Tom;m;100
04;Seven;m;70
cut -f 2 -d";" file2.txt
cut -b 2-4,6 file3.txt
cut -c1-3 file3.txt
cut -c -2 file3.txt
cut -c 4- file3.txt
(1)作用:合并两个或多个文件
(2)语法:paste [OPTION]… [FILE]…
(3)选项:
-d 默认域的分隔符是空格或tab键,设置新的域分隔符
-s 将每个文件粘贴成一行
- 从标准输入中读取数据
(4)示例:
paste file1.txt file2.txt # 默认以列的形式拼接
paste file2.txt file1.txt # 文件键入的顺序不一样,结果不一样
paste file2.txt file1.txt file3.txt # 多文件拼接
paste -d ";" file1.txt file2.txt
paste -s file1.txt file2.txt
ls | paste -d" " - - - -
(1)作用:对文本内容进行排序
(2)语法:sort [选项] 文件
(3)选项:
-n 依照数值的大小排序
-t <分隔字符> 指定排序时所用的栏位分隔字符
-k 指定需要排序的栏位
-r 以相反的顺序来排序
(4)示例:
sort file1.txt
sort -r file1.txt
sort -n file2.txt # 按数字大小升序排
sort -n -r file2.txt # 按数字大小降序排
sort -t";" -k 3 -n file3.txt
(1)作用:去除文件中的重复行
(2)语法:uniq [OPTION]… [INPUT [OUTPUT]]
(3)选项:
-c 打印每行在文本中重复出现的次数
-d 只显示有重复的纪录,每个重复纪录只出现一次
-u 只显示没有重复的纪录
(4)示例:
uniq file.txt
uniq -c file.txt
uniq -d file.txt
uniq -u file.txt
(1)作用:比较文件的差异
(2)语法:diff [OPTION]… FILES
(3)选项:
-y 以并列的方式显示文件的异同之处
-c 显示全部内容,并标出不同之处
-u 以合并的方式来显示文件内容的不同
-W 设置宽度
(4)显示提示:
a - add 增加内容
c - change 改变内容
d - delete 删除了内容
| 前后2个文件内容有不同
< 后面文件比前面文件少了1行内容
> 后面文件比前面文件多了1行内容
+比较的文件的后者比前着多一行
- 比较的文件的后者比前着少一行
! 比较的文件两者有差别的行
(5)示例:
diff file1.txt file2.txt
diff -y -W50 file1.txt file2.txt
diff -c file1.txt file2.txt
diff -u file1.txt file2.txt
diff file1.txt file2.txt > file.patch
patch file1.txt file.patch
(1)作用:连接两个文件
(2)语法:join [OPTION]… FILE1 FILE2
(3)选项:
-a1或-a2 除了显示共同域的纪录之外,-a1显示第一个文件没有共同域的纪录,
-a2显示第二个文件中没有共同域的纪录
-o 设置结果显示的格式
-t 改变域的分隔符
-v1或-v2 不显示共同域的纪录之外,-v1显示第一个文件没有共同域的纪录,
-v2显示第二个文件中没有共同域的纪录
-j 指定一个域作为匹配字段
(4)示例:
file1.txt:
1 Tim 99
2 Jim 100
3 Seven 98
4 Blck 87
5 Lili 78
file2.txt:
1 Tim male aa
2 Jim male bb
3 Seven male cc
4 Blck male dd
6 Lila fmale ee
join file1.txt file2.txt
join -a1 file1.txt file2.txt
join -a2 file1.txt file2.txt
-全连接(显示左边和右边所有记录)
join -a1 -a2 file1.txt file2.txt
join -o 1.2 1.3 2.3 file1.txt file2.txt
join -t' ' file1.txt file2.txt
join -v 1 file1.txt file2.txt
join -j 2 file1.txt file2.txt
(1)作用:转换或删除文件中的字符
(2)语法:tr [OPTION]… SET1 [SET2]
(3)选项:
-c 反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d 删除字集合中出现的所有字符
-s 缩减连续重复的字符成指定的单个字符
(4)可以使用的字符类
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
(5)示例:
tr "[a-z]" "[A-Z]" < file.txt # 文件重定向
配合管道
cat file.txt | tr A-Z a-z # 配合管道
echo "hello world" | tr [:lower:] [:upper:] # 使用字符类
大小写互换
echo "Hello World" | tr '[A-Za-z]' '[a-zA-Z]' # 大小写互换
删除字符
删除小写字母
echo "abcABdefCD" | tr -d "[a-z]"
echo "abc123def888hello" | tr -d 0-9
echo -e "\thello world " | tr -d "[ \t]"
echo -e "abc123*&\n def888" | tr -d -c '0-9 \n'
删除重复字符,只保留一个
压缩重复的空白行
echo -e "1\n\n2\n\n\n3" | tr -s '\n'
echo "Hellooo Worldddddddd" | tr -s "[ od]"
echo "2022 11 16" | tr -s " " "-"
echo -e "hello\tworld" | tr -s "\t" " "
(1)作用:文本和数据进行处理的编程语言
(2)语法:awk ‘条件1 {动作1} 条件2 {动作2} …’ file.txt
(3)选项:
-F 指定输入时用到的字段分隔符
-v 自定义变量
-f 从脚本中读取awk命令
-m 对val值设置内在限制
(4)内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
(5)示例:
df -h | awk '{print$1"\t"&3}'
awk -F: '{print$1"\t"$3}' /etc/passwd
awk -F: '$3>=500' /etc/passwd
awk -F: '/zh1/' /etc/passwd
awk -F: '/zh1/{print$7}' /etc/passwd
head /etc/passwd | awk -F: 'BEGIN{print"name\tuid"}{print$1"\t"$3}END{print"from file /etc/passwd"}'
(1)作用:批量编辑文本文件
(2)语法:sed [选项] [动作] 文件名
(3)选项:
-n 仅显示script处理后的结果
-e 以选项中指定的script来处理输入的文本文件
-i 此选项会直接修改源文件,要慎用
(4)动作:
a :新增
c :取代
d :删除
i :插入
p :打印
s :取代
(5)示例:
hello world
hello linux
linux linux
bcabc
1234
sed -n '2p' file.txt
sed -n '3,5p' file.txt
sed -n '/nux/p' file.txt
sed '2,4d' file.txt
sed '/nux/d' file.txt
sed '2a nice' file.txt
sed '2i 123456' file.txt
sed '2c abcdefg' file.txt # 第2行替换为abcdefg
sed '2,4c love' file.txt # 第2到4行替换为love
sed 's/linux/love/g' file.txt
sed '3s/linux/love' file.txt
sed 's/linux//g;s/world/Tim/g' file.txt
sed -i '2s/linux/WORLD/g' file.txt
(1)作用:查看磁盘使用空间
(2)语法:
du [OPTION]… [FILE]…
du [OPTION]… --files0-from=F
(3)选项:
-a 显示目录中所有文件大小
-h 以易读方式显示文件大小
(4)示例:
du
du -h dir
du -ah
du file.txt
du -s dir
du --max-depth = 0 dir
du -sh dir
(1)作用:显示磁盘空间使用情况
(2)语法:df [OPTION]… [FILE]…
(3)选项:
-a 显示所有文件系统,包含所有的具有 0Blocks 的文件系统
-h 以容易阅读的方式显示
-i 显示inode信息
-t <文件系统类型> 只显示指定类型的文件系统
-T 输出时显示文件系统类型
(4)示例:
df
df -h
df -h /home
df -t squashfs
df -i
df -ah
(1)作用:强制将更改的内容立刻写入磁盘,在Linux系统当中对文件的内容进行处理时,先将其内容写入缓冲区,等到适当时候在写入磁盘,可提高系统的运行效率。
(1)作用:把文件系统挂载到目录
(2)语法:mount [参数] [设备] [挂载点]
(3)选项:
-o 挂载方式:loop:用来把一个文件当成硬盘分区挂接上系统ro:采用只读方式挂接设备rw:采用读写方式挂接设备iocharset:指定访问文件系统所用字符集
-t 指定挂载类型
(4)示例:
mount
mount -t tmpfs
sudo fdisk -l
sudo mount /dev/sdb /mnt/udisk # 首先在/dev/sdb /mnt/创建udisk
sudo mount -o ro /dev/sdb /mnt/udisk
mkisofs -o mydisk.iso ./dir # 创建一个.iso镜像
sudo mount -o loop /home/zh1/commands/mount/mydisk.iso /mnt/iso # 将镜像挂载到/mnt/iso
(1)作用:卸载文件系统
(2)语法:umount [参数]
(3)参数:
-v 执行时显示详细的信息
(4)示例:
umount -v /dev/sdb
umount -v /media/zh1/mydisk
(1)作用:拷贝及转换文件
(2)语法:dd 参数 对象
(3)基本格式:
dd if=path/to/input_file of=/path/to/output_
file bs=block_size count=number_of_
blocks
(4)参数:
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/obs 指定的字节数。
conv=<关键字> 指定关键字:关键字:conversion 用指定的参数转换文件。ascii 转换 ebcdic 为 ascii。ebcdic 转换 ascii 为 ebcdic。ibm 转换 ascii 为 alternate ebcdic。block 把每一行转换为长度为 cbs,不足部分用空格填充。unblock 使每一行的长度都为 cbs,不足部分用空格填充。lcase 把大写字符转换为小写字符。ucase 把小写字符转换为大写字符。swab 交换输入的每对字节。noerror 出错时不停止。notrunc 不截断输出文件。sync 将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。。conversion 用指定的参数转换文件。
(5)示例:
dd if=/dev/zero of=./file1.txt bs=500k count=1
dd if=file2.txt of=dfile2.txt bs=5 count=1
dd if=file3.txt of=dfile3.txt conv=ucase
dd conv=ucase #(按ctrl+d结束)
(1)作用:打包/解压工具
(2)语法:tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG…]
(3)参数:
-c 新建打包文件
-x 解压文件,配合 -C 解压到对应的文件目录
-f (压缩或解压时)指定要处理的文件
-j 通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz
-z 通过gzip方式压缩或解压,最后以.tar.gz 为后缀
-v 显示操作过程
-t 查看打包文件中内容
-C dir 指定压缩/解压缩的目录,若无指定,默认是当前目录
(4)示例:
tar -cvf files.tar file*
tar -cvzf files.tar.gz file*
tar -cvjf files.tar.br2 file*
tar -zxvf files.tar.gz
tar -zxvf files.tar.gz -C dir/
tar -tf files.tar.gz
①zip:
(1)作用:压缩文件
(2)语法:zip 参数 文件
(3)参数:
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-v 显示指令执行过程
-d 更新压缩包内文件
(4)示例:
zip -r dir.zip dir
zip files.zip *.txt
zip -dv files.zip newfile.txt
②unzip:
(1)作用:压缩文件
(2)语法:unzip 参数 文件
(3)参数:
-l 显示压缩文件内所包含的文件
-v 显示指令执行过程
-d<目录> 指定文件解压缩后所要存储的目录
(4)示例:
unzip -l files.zip
unzip -v files.zip
unzip -t files.zip
unzip files.zip -d udir/
(1)作用:压缩/解压文件
(2)语法:
gzip [参数] 文件
gunzip [参数] 压缩包
(3)参数:
-d 解开压缩文件
-k 保留原文件
-l 列出压缩文件的相关信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-v 显示指令执行过程
-t 测试压缩文件是否正确无误
(4)示例:
gzip file.txt
gzip -r dir/
gzip -l file.txt.gz
gzip -dv file.txt.gz
gunzip -v file.txt.gz
gzip -dr dir
gunzip -r dir.gz
gzip -k file.txt
echo $?
(1)作用:显示系统信息
(2)语法:uname [OPTION]
(3)选项:
-a 显示系统所有相关信息
-m 显示计算机硬件架构
-n 显示主机名称
-r 显示内核发行版本号
-s 显示内核名称
-v 显示内核版本
-p 显示主机处理器类型
-o 显示操作系统名称
-i 显示硬件平台
(4)示例:
uname -a
uname -n
uname -r
uname -s
uname -i
uname -o
(1)作用:显示和设置系统的主机名
(2)语法:hostname [参数]
(3)参数:
-a 显示主机别名
-d 显示DNS域名
-f 显示FQDN名称
-i 显示主机的ip地址
-s 显示短主机名称,在第一个点处截断
-y 显示NIS域名
(4)注意:
sudo vi /etc/hostname
sudo vi /etc/hosts
方法二:hostnamectl命令
sudo hostnamectl set-hostname
sudo vi /etc/hosts # 一定修改里对应的主机名
(5)示例:
hostname
hostname newname
hostname -I
(1)作用:显示开机信息
(2)语法:dmesg [参数]
(3)参数:
-c 显示信息后,清除ring buffer中的内容
-s <缓冲区大小> 预设置为8196,刚好等于ringbuffer的大小
-n 设置记录信息的层级
-x 显示级别信息常见级别:emerg、alert、crit、err、warn、notice、info、debug
--level 显示指定级别的信息
-T 显示时间戳
-r 显示原始数据
(4)示例:
dmesg
dmesg | less # 分页的形式显示
dmesg | grep -i memory # 内存
dmesg | grep -i dma #硬盘
dmesg | grep -i usb # USB
dmesg | grep -i tty #TTY
dmesg -x
dmesg -x --level=err,warn
dmesg -T
dmesg -r
sudo dmesg -c
(1)作用:查看系统启动时间及负载信息
(2)语法:uptime [options]
(3)选项:
-p 显示机器正常运行的时间
-s 系统启动时间,格式为 yyyy-mm-dd hh:mm:ss
(4)示例:
uptime
#输出结果:
17:40:12 up 41 min, 1 user, load average: 0.11, 0.06, 0.01
当前时间 系统已经运行的时间 用户数 过去 1min 5min 15min 的负载
uptime -p
uptime -s
(1)作用:显示系统内存使用量情况
(2)语法:free [参数]
(3)参数:
-b 以Byte显示内存使用情况
-k 以kb为单位显示内存使用情况
-m 以mb为单位显示内存使用情况
-g 以gb为单位显示内存使用情况
-s 持续显示内存
-t 显示内存使用总合
-h 以易读的单位显示内存使用情况
(4)输出内容介绍
Mem 行(第二行)是内存的使用情况。
Swap 行(第三行)是交换空间的使用情况。
total 列显示系统总的可用物理内存和交换空间大小。
used 列显示已经被使用的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可用使用。
shared 列显示被共享使用的物理内存大小。
buff/cache 列显示被 buffer 和 cache 使用的物理内存大小。
available 列显示还可以被应用程序使用的物理内存大小。
(5)示例:
free
free -m
free -h
free -hs 3
(1)作用:控制shell程序的资源
(2)语法:ulimit [参数]
(3)参数:
-a 显示目前资源限制的设定。
-c 设定core文件的最大值,单位为区块。
-d <数据节区大小> 程序数据节区的最大值,单位为KB。
-f <文件大小> shell所能建立的最大文件,单位为区块。
-H 设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小> 指定可使用内存的上限,单位为KB。
-n <文件数目> 指定同一时间最多可开启的文件数。
-p <缓冲区大小> 指定管道缓冲区的大小,单位512字节。
-s <堆叠大小> 指定堆叠的上限,单位为KB。
-S 设定资源的弹性限制。
-t 指定CPU使用时间的上限,单位为秒。
-u <程序数目> 用户最多可开启的程序数目。
-v <虚拟内存大小> 指定可使用的虚拟内存上限,单位为KB。
(4)示例:
ulimit -a
ulimit -u 8000
ulimit -n 2048
ulimit -v 12800
ulimit -t 2
(1)作用:切换系统运行级别
(2)语法:init 数字
(3)示例:
init 0 - 关机
init 1 - 单用户模式
init 2 - 多用户,没有 NFS 不联网
init 3 - 切换到多用户-命令行模式
init 4 - 没有用到
init 5 - 图形化界面模式
init 6 - 重新启动
(1)作用:控制系统服务
(2)语法:service [参数]
(3)参数:
--status-all 显示所服务的状态
start 启动服务
stop 停止服务
restart 重新启动服务
status 查看服务运行状态
reload 重新载入服务配置
(4)示例:
service --status-all
service ssd status
service sshd start
service sshd stop
service sshd restart
(1)作用:显示虚拟内存状态
(2)语法:vmstat [选项] [时间间隔] [次数]
(3)选项:
a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slab信息
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)
(4)示例:
vmstat
vmstat 1
vmstat -a
vmstat -f
vmstat -s
vmstat -d
vmstat -p
vmstat -m
(1)作用:监视系统输入输出设备和CPU的使用情况
(2)语法:iostat [参数] [设备]
(3)参数:
-c 仅显示CPU使用情况
-d 仅显示设备利用率
-k 显示状态以千字节每秒为单位,而不使用块每秒
-m 显示状态以兆字节每秒为单位
-p 仅显示块设备和所有被使用的其他分区的状态
-t 显示每个报告产生时的时间
-x 显示扩展状态
(4)示例:
iostat
iostat 2 3
iostat -d sda1
iostat -t
iostat -m
iostat -d -k 1 1
iostat -x /dev/sda1
iostat -x -k -d 1 1
iostat -c 1 3
(1)作用:显示进程间通讯设备的信息
(2)语法:ipcs [参数]
(3)参数:
-a 默认的输出信息
-m 打印出使用共享内存进行进程间通信的信息
-q 打印出使用消息队列进行进程间通信的信息
-s 打印出使用信号进行进程间通信的信息
(4)示例:
ipcs
ipcs -a
ipcs -t
ipcs -p
ipcs -c
ipcs -u
ipcs -l
(1)作用:系统运行状态统计
(2)语法:sar [参数]
(3)参数:
-R 显示内存状态
-b 显示I/O速率
-B 显示换页状态
-d 显示每个块设备的状态
-i 状态信息刷新的间隔时间
-u 显示CPU利用率
(4)示例:
当sar命令出现:
~$ sar
Cannot open /var/log/sysstat/sa28: No such file or directory
Please check if data collecting is enabled
解决办法:
sudo vim /etc/default/sysstat
,将false改为true:
然后重启sysstat:sudo service sysstat restart
sar -d -p 1 2
sar -u -f
sar -b
(1)作用:删除一个或更多的消息队列、信号量集或者共享
内存标识
(2)语法:
ipcrm [options]
ipcrm
(3)选项:
-m, --shmem-id 按 id 号移除共享内存段
-M, --shmem-key <键> 按键值移除共享内存段
-q, --queue-id 按 id 号移除消息队列
-Q, --queue-key <键> 按键值移除消息队列
-s, --semaphore-id 按 id 号移除信号量
-S, --semaphore-key <键> 按键值移除信号量
-a, --all[=] 全部移除
-v, --verbose 解释正在进行的操作
(4)示例:
ipcrm -m 262144
ipcrm -M 0x55
ipcrm -q 252432
ipcrm -Q 0x88
ipcrm -s 242438
ipcrm -S 0x65
ipcrm -a
删除所有共享内存、信号量和消息队列,并且显示过程
ipcrm -v -a
(1)作用:显示并设置路由
(2)语法:
route [-f] [-p] [Command [Destination] [
mask Netmask] [Gateway] [metric Metric]] [
if Interface]]
(3)参数
-n :不要使用通讯协定或主机名称,直接使用IP 或 port number
-net:表示后面接的路由为一个网域;
-host:表示后面接的为连接到单部主机的路由;
netmask:与网域有关,可以设定 netmask 决定网域的大小;
gw:gateway 的简写,后续接的是 IP 的数值,与 dev 不同;
dev:如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
(4)flags
U Up表示此路由当前为启动状态
H Host,表示此网关为一主机
G Gateway,表示此网关为一路由器
R Reinstate Route,使用动态路由重新初始化的路由
D Dynamically,此路由是动态性地写入
M Modified,此路由是由路由守护程序或导向器动态修改
! 表示此路由当前为关闭状态
(5)示例:
route
route -n
route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33
route add -net 224.0.0.0 netmask 240.0.0.0 reject
route del -net 224.0.0.0 netmask 240.0.0.0
route del -net 224.0.0.0 netmask 240.0.0.0 reject
(1)作用:测试主机间网络连通性
(2)语法:ping [参数] 目标主机
(3)参数:
-c 指定发送报文的次数
-i 指定收发信息的间隔时间
-s 设置数据包的大小
-t 设置存活数值TTL的大小(生存时间)Linux系统的TTL值为64或255Windows NT/2000/XP系统的TTL值为128Windows 98系统的TTL值为32UNIX主机的TTL值为255
(4)示例:
ping www.baidu.com
ping -c 4 www.baidu.com
ping -c 4 -i 3 www.baidu.com
ping -s 1024 -t 255 www.baidu.com
(1)作用:追踪数据包在网络上的传输时的全部路径
(2)语法:traceroute [参数] [域名或者IP]
(3)参数:
-m<存活数值> 设置检测数据包的最大存活数值TTL的大小
-n 直接使用IP地址而非主机名称
-p<通信端口> 设置UDP传输协议的通信端口
-q 探测包个数设置
-r 忽略普通的Routing Table,直接将数据包送到远端主机上
-w 设置等待远端主机回报的时间
(4)示例:
traceroute www.baidu.com
traceroute -m 7 www.baidu.com
traceroute -q 4 www.baidu.com
traceroute -w 3 www.baidu.com
traceroute -p 6888 www.baidu.com
(1)作用:显示或设置网络设备
(2)语法:
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options |
address …
(3)参数:
add<地址> 设置网络设备IPv6的IP地址
del<地址> 删除网络设备IPv6的IP地址
down 关闭指定的网络设备
up 启动指定的网络设备
IP地址 指定网络设备的IP地址
(4)示例:
ifconfig
sudo ifconfig ens33 down
sudo ifconfig ens33 up
sudo ifconfig ens33 192.168.2.66 # 为网卡ens33配置
sudo ifconfig ens33 192.168.2.66 netmask 255.255.255.0 # 加上子网掩码
ifconfig eth0 192.168.2.66 netmask 255.255.255.0 broadcast 192.168.2.255# 再加上广播
ifconfig ens33 add fe80::78fb:fd04:908b:c8a1 #为网卡设置IPv6地址
ifconfig ens33 del fe80::78fb:fd04:908b:c8a1 #为网卡删除IPv6地址
sudo ifconfig ens33 down # 先关闭网卡
sudo ifconfig ens33 hw ether 00:AA:BB:CC:DD:EE # 修改网卡地址
sudo ifconfig ens33 up # 打开网卡
ifconfig ens33 arp # 开启
ifconfig ens33 -arp # 关闭
ifconfig ens33 mtu 1500 #设置能通过的最大数据包大小为 1500 byt
(1)作用:激活/禁用网络接口(与ifconig ens33 up/down
作用一致)
(2)语法:
ifup [网络接口]
ifdown [网络接口]
(3)示例:
-关闭网络接口
sudo ifdown ens33
sudo ifup ens33
sudo ifdown ens33
(1)作用:显示网络状态
(2)语法:netstat [参数]
(3)参数:
-a 显示所有连线中的Socket
-p 显示正在使用Socket的程序识别码和程序名称
-l 仅列出在监听的服务状态
-t 显示TCP传输协议的连线状况
-u 显示UDP传输协议的连线状况
-i 显示网络界面信息表单
-r 显示路由表信息
-n 直接使用IP地址,不通过域名服务器
(4)示例:
netstat -a
netstat -at
netstat -ut
netstat -p
netstat -l
netstat -lt
netstat -lu
netstat lx
netstat -s
netstat -st
netstat -su
netstat -apu
netstat -i
netstat -r
netstat -ap | grep ssh
(1)作用:显示活动套接字
(2)语法:ss [参数]
(3)参数:
-n 不解析服务名称,已数字方式显示
-a 显示所有套接字
-l 显示处于监听状态的套接字
-o 显示计时器信息
-e 显示详细的套接字信息
-m 显示套接字的内存使用情况
-p 显示使用套接字的进程
-i 显示内部的TCP信息
-s 显示套接字使用概况
-4 仅显示ipv4的套接字
-6 仅显示ipv6的套接字
-0 显示PACKET套接字
-t 只显示TCP套接字
-u 只显示UDP套接字
-d 只显示DCCP套接字
-w 只显示RAW套接字
-x 只显示 Unix套接字
-D 将原始TCP套接字信息转储到文件
(4)示例:
ss -at
ss -au
ss -s
ss -l
ss -pl
ss -lp |grep 6010
ss -tnl
ss -tlr
(1)作用:远程登入服务器
(2)语法:telnet [参数] [主机] [端口]
(3)示例:
若遇到:
telnet: Unable to connect to remote host: Connection refused 问题:
可参考这篇文章:
Unable to connect to remote host: Connection refused
telnet 192.168.109.140
telnet 192.168.109.140 6379
(1)作用:远程连接工具
(2)语法:ssh[参数][主机]
(3)参数:
-l <登录名> 指定连接远程服务器的登录用户名
-p <端口> 指定远程服务器上的端口
(4)配置文件:
/etc/ssh/sshd_config
(5)示例:
若遇到MobaXterm本地环境连接远程服务器报错/etc/ssh_config line 1 Missing
可参考这篇文章:
/etc/ssh_config line 1 Missing
ssh 192.168.109.140ssh -l zh1 192.168.109.140ssh zh1@192.168.109.140
ssh -p 2222 zh1@192.168.109.140
ssh 192.168.109.140 date
(1)作用:文件传输协议客户端
(2)语法:ftp [参数] [主机名或IP]
(3)安装ftp步骤:
① 安装ftp
sudo apt install vsftpd
② 修改vsftpd.conf文件:使能可写权限
sudo vi /etc/vsftpd.conf
去除#write_enable=YES前的#:
③ 重启frp 服务
sudo service vsftpd restart
(4)常用ftp命令
help或?- 列出所有可用的FTP命令。
cd - 切换远程计算机上的目录。
lcd - 切换本地计算机上的目录。
ls - 列出当前远程目录中的文件和目录的名称。
mkdir - 在当前远程目录中创建一个新目录。
pwd - 打印远程计算机上的当前工作目录。
delete - 删除当前远程目录中的文件。
rmdir- 删除当前远程目录中的目录。
get - 将一个文件从远程复制到本地计算机。
mget - 将多个文件从远程复制到本地计算机。
put - 将一个文件从本地上传到远程计算机。
mput - 将多个文件从本地上传到远程计算机。
(5)示例:
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
需要设置客户端的防火墙允许ftp服务:
控制面板>防火墙>允许应用或功能通过Windows Defender 防火墙>更改设置>允许ftp
ftp 192.168.109.140
get file.txt
mget file1.txt file2.txt
put newfile.txt #上传一个文件
mput newfile1.txt newfile2.txt # 上传多个文件
bye
quit
(1)作用:交互式的文件传输程序
(2)语法:sftp [参数] [IP或主机名]
(3)示例:
sftp zh1@192.168.109.141
help
?
get sftpfile.txt
get -r sftpdir
put newfile.txt
put -r newdir
!command
!echo hello world
bye
quit
(1)作用:一款优秀的文件客户端程序
(2)语法:lftp(选项)(参数)
(3)示例:
若没有安装lftp,先安装:
apt-get install lftp
lftp zh1@192.168.109.141
help
?
get lftpfile.txt # 下载一个文件
mget file*.txt # 下载多个文件
mget -c *.txt #断电续传
mirror dir
put newfile.txt # 上传文件
mput newfile*.txt # 上传多个文件
mirror -R newdir
bye
exit
(1)作用:文件下载
(2)语法:wget [option]… [URL]…
(3)选项:
-i 下载指定文件里列出的地址
-O 下载后重命令文件
-c 打开断点续传
-b 启动后转入后台执行
-P 指定保存路径
(4)示例:
wget https://cn.wordpress.org/latest-zh_CN.zip
vim urllist.txt
wget -i urllist.txt
wget -O wp.zip https://cn.wordpress.org/latest-zh_CN.zip
wget -P dir https://cn.wordpress.org/latestzh_CN.zip
wget --limit-rate=300k https://cn.wordpress.org/latest-zh_CN.zip
wget -c https://cn.wordpress.org/latest-zh_CN.zip
wget -b https://cn.wordpress.org/latest-zh_CN.zip
tail -f wget-log # 查看下载进度
(1)作用:远程拷备文件
(2)语法:
scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-llimit] [-o ssh_option] [-P port] [-S program]source … target
(3)参数:
-r 递归复制整个目录
-p 保留原文件的修改时间,访问时间和模式
-P 指定数据传输用到的端口号
(4)示例:
scp zh1@192.168.109.141:/home/zh1/commands/scp/scpfile.txt ~
scp -r zh1@192.168.109.141:/home/zh1/commands/scp/scpdir ~
scp ~/newfile.txt zh1@192.168.109.141:/home/zh1/commands/scp/
scp -r ~/newdir zh1@192.168.109.141:/home/zh1/commands/scp/
scp -P 2222 zh1@192.168.109.141:/home/zh1/commands/scp/scpdir ~
scp -p zh1@192.168.109.141:/home/zh1/commands/scp/scpfile.txt ~
(1)作用:文本传输工具
(2)语法:curl [参数] 网址
(3)参数:
-o 指定新的本地文件名
-O 保留远程文件的原始名
-u 通过服务端配置的用户名和密码授权访问
-I 打印HTTP响应头信息
-u 指定登录账户密码信息
-A 设置用户代理标头信息
-b 设置用户cookie信息
-C 支持断点续传
-s 静默模式,不输出任何信息
-T 上传文件
(4)示例:
curl www.baidu.com
curl -o baidu.html www.baidu.com
curl -O https://cn.wordpress.org/latest-zh_CN.zip
curl -o wp.zip https://cn.wordpress.org/latest-zh_CN.zip
curl -C - -O https://cn.wordpress.org/latest-zh_CN.zip
curl -I https://cn.wordpress.org/latest-zh_CN.zip
(1)作用:域名查询
(2)语法:host [参数] [域名]
(3)参数:
-a 显示详细的DNS信息
-v 显示指令执行的详细信息
(4)示例:
host www.baidu.com
host -v www.baidu.com
host -a www.baidu.com
(1)作用:监听网络流量
(2)语法:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,
使用-c参数指定要监听的数据包数量,
使用-w参数指定将监听到的数据包写入文件中保存
tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数
补充说明:执行tcpdump指令可列出经过指定网络界面的数据包文件头,在Linux操作系统中,你必须是系统管理员root
不带参数的tcpdump会收集网络中所有的信息包头,数据量巨大,必须过滤。
(3)参数:
-A 以ASCII格式打印出所有分组,并将链路层的头最小化。-c 在收到指定的数量的分组后,tcpdump就会停止。-C 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。-d 将匹配信息包的代码以人们能够理解的汇编格式给出。-dd 将匹配信息包的代码以c语言程序段的格式给出。-ddd 将匹配信息包的代码以十进制的形式给出。-D 打印出系统中所有可以用tcpdump截包的网络接口。-e 在输出行打印出数据链路层的头部信息。-E 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。-f 将外部的Internet地址以数字的形式打印出来。-F 从指定的文件中读取表达式,忽略命令行中给出的表达式。-i 指定监听的网络接口。-l 使标准输出变为缓冲行形式,可以把数据导出到文件。-L 列出网络接口的已知数据链路。-m 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。-M 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。-b 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。-n 不把网络地址转换成名字。-nn 不进行端口名称的转换。-N 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。-t 在输出的每一行不打印时间戳。-O 不运行分组分组匹配(packet-matching)代码优化程序。-P 不将网络接口设置成混杂模式。-q 快速输出。只输出较少的协议信息。-r 从指定的文件中读取包(这些包一般通过-w选项产生)。-S 将tcp的序列号以绝对值形式输出,而不是相对值。-s 从每个分组中读取最开始的snaplen个字节,而不是默认的68个字节。-T 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc远程过程调用)和snmp(简单网络管理协议;)。-t 不在每一行中输出时间戳。-tt 在每一行中输出非格式化的时间戳。-ttt 输出本行和前面一行之间的时间差。-tttt 在每一行中输出由date处理的默认格式的时间戳。-u 输出未解码的NFS句柄。-v 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息。-vv 输出详细的报文信息。-w 直接将分组写入文件中,而不是不分析并打印出来。
(4)示例:
tcpdump
tcpdump -i ens33
tcpdump -c 20
tcpdump -c 10 -q
sudo tcpdump host www.baidu.com
tcpdump host 192.168.107.133
tcpdump -i any port 22 -A
(1)作用:设置路由器
- 实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
- 端口的扫描,nc可以作为client发起TCP或UDP连接
- 机器之间传输文件
- 机器之间网络测速
(2)语法:
nc [-46bCDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl] [-m minttl] [-O length] [-P proxy_username] [-p source_port] [-q seconds] [-s source] [-T keyword]
[-V rtable] [-W recvlimit] [-w timeout] [-X proxy_protocol] [-x proxy_address[:port]] [-Z peercertfile] [destination] [port]
(3)参数:
-v 显示指令执行过程。
-w<超时秒数> 设置等待连线的时间。
-z 使用0输入/输出模式,只在扫描通信端口时使用。
-n 直接使用IP地址,而不通过域名服务器。
-u 使用UDP传输协议。
-l 使用监听模式,管控传入的资料。
(4)示例:
nc -v -z -w2 192.168.109.142 1-100
nc -v -u -z -w2 192.168.109.142 1-100
nc -nvv 192.168.109.142 22
nc -l 1234
nc 192.168.109.142 1234
(1)作用:创建并设置用户信息
(2)语法:useradd [参数] 用户名
(3)参数:
-d<登入目录> 指定用户登入时的目录。
-g<群组> 初始群组。
-G<群组> 非初始群组。
-m 自动创建用户的家目录。
-M 不要创建用户的家目录。
-N 不要创建以用户名称为名的群组。
-s 指定用户登入后所使用的shell。
-c 添加注释
(4)四个重要文件
/etc/passwd :记录用户信息
/etc/shadow:保存每个用户的密码
/etc/group:保存组的信息
/etc/gshadow:保存组的密码
(5)示例
sudo useradd user1
cat /etc/passwd | grep user
useradd -m -d /new/dir username
useradd -u 1500 username
useradd -g group username
useradd -g group -G group1,group2 username
sudo useradd -c "Test user" user3
(1)作用:创建用户账户,与useradd一致,创建过程有提醒
(2)语法:adduser [参数] 用户名
(3)示例:
sudo adduser newuser1
(1)作用:修改用户的密码
(2)语法: passwd [参数] 用户名
(3)参数:
-d 删除已有密码
-l 锁定用户的密码值,不允许修改
-u 解锁用户的密码值,允许修改
-e 下次登陆强制修改密码
-k 用户在期满后能仍能使用
-S 查询密码状态
(4)示例:
passwd
sudo passwd newuser1
passwd -l zh1
passwd -u zh1
passwd -e zh1
passwd -d zh1
passwd -S zh1
(1)作用:删除用户账户
(2)语法:userdel [参数] 用户名
(3)参数:
r 删除用户主目录及其中的任何文件
(4)示例:
userdel zh2
userdel -r newuser3
(1)作用:切换用户身份
(2)语法 :su [参数] 用户名
(3)参数:
- 完全身份变更
-c 执行完指定的指令后,即恢复原来的身份
-f 适用于csh与tsch,使shell不用去读取启动文件
-l 改变身份时,也同时变更工作目录
-m 变更身份时,不要变更环境变量
-s 指定要执行的shell
(4)示例:
su -c whoami zh2
su zh2
su -zh2
(1)作用:以系统管理员的身份执行指令
(2)语法:sudo [参数]
(3)参数:
-l 显示当前用户的权限
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份
(4)配置文件
/etc/sudoers 授权用户/组 主机=[(切换到哪些用户或组)] 命令
sudo visudo
sudo vim /etc/sudoers
(5)示例:
sudo -l
sudo -u zh2 whoami
sudo !!
(1)作用:显示用户ID和组ID
(2)语法:id [参数] [用户名]
(3)参数:
-g 显示用户所属群组的ID
-G 显示用户所属附加群组的ID
-n 显示用户,所属群组或附加群组的名称
-r 显示实际ID
-u 显示用户ID
(4)示例:
id
id zh2
id -g zh1
id -G zh1
(1)作用:修改用户账号信息
(2)语法:usermod [参数] 用户名
(3)参数:
-c<备注> 修改用户账号的备注文字
-d<登入目录> 修改用户登入时的家目录
-e<有效期限> 修改账号的有效期限
-f<缓冲天数> 修改在密码过期后多少天即关闭该账号
-g<群组> 修改用户所属的群组
-G<群组> 修改用户所属的附加群组
-l<账号名称> 修改用户账号名称
-L 锁定用户密码,使密码无效
-s 修改用户登入后所使用的shell
-u 修改用户ID
-U 解除密码锁定
(4)示例:
sudo usermod -d /home/hometest user1
usermod -u 1234 user1
usermod -l user2 zh2
usermod -L user2
sudo usermod -U user2
(1)作用:显示一个用户所加入的所有用户组
(2)语法:groups 用户
(3)示例:
groups user1
groups suer2
(1)作用:创建新的用户组
(2)语法:groupadd [参数] 用户组
(3)参数:
-g 指定新建工作组的id
-r 创建系统工作组
(4)示例:
groupadd work
groupadd -g 1234 family
groupadd -r grouptest
(1)作用:删除用户组
(2)语法:groupdel [参数] [群组名称]
(3)示例:
groupdel family
(1)作用:打印当前登录用户
(2)语法:whoami
(3)示例:
whoami
(1)作用:查看当前登录用户信息
(2)语法:who [参数]
(3)参数:
-a 全面信息
-b 系统最近启动时间
-l 系统登录进程
-H 带有列标题打印用户名,终端和时间
-t 系统上次锁定时间
-u 已登录用户列表
-q 列出所有已登录的用户的名称和数量
(4)示例:
who
who -H
who -H -a
who -b
who -T -H
who -q
(1)作用:显示已登录用户
(2)语法: w [参数]
(3)参数
h 不打印头信息
-u 当显示当前进程和cpu时间时忽略用户名
-s 使用短输出格式
-f 显示用户从哪登录
-o 老式输出
-i 显示IP地址而不是主机名(如果可能)
(4)示例:
w
w -h
w -f
w -s
(1)作用:显示用户或终端的登录情况
(2)语法:last [选项]
(3)选项:
-R 省略hostname的栏位
-a 把从何处登入系统的主机名称或IP地址,显示在最后一行
-n<显示行数>或-<显示行数> 显示名单的行数
-i 显示ip地址而不是主机名
(4)示例:
last
last -n 5 -R
last -5 -R
last -n 5 -a -i
(1)作用:显示当前登录的用户
(2)示例:
(1)作用:实时显示进程动态
(2)语法:ps [options]
(3)选项:
-d 指定每两次屏幕信息刷新之间的时间间隔(单位为秒)
-c 切换显示命令名称和完整命令行
-p 通过指定监控进程ID来仅仅监控某个进程的状态
-n 信息更新最大次数
(4)快捷键:
c 显示进程绝对路径
P 根据CPU使用率排序
M 根据物理内存使用率排序
1 显示每个核的CPU状况
(5)示例:
-实时显示进程动态
top
top -c
top -d 5
top -n 2
top -p 22
(1)作用:显示进程状态
(2)语法:ps [options]
(3)选项:
A 显示所有进程
-a 显示所有终端机下执行的程序
-x 通常与 a 这个参数一起使用,可列出较完整信息
-e 列出程序时,显示每个程序所使用的环境变量
-f 用ASCII字符显示树状结构,表达程序间的相互关系
-u <用户识别码> 列出属于该用户的程序的状况,也可使用用户名称来指定
(4)信息说明:
USER,用户名称PID,进程号
%CPU,该进程所占用CPU百分比
%MEM,该进程所占用内存百分比
VSZ,进程所占用的虚拟内存大小
RSS,进程所占用的实际内存大小
TTY,该进程运行在哪个终端上面,若与终端无关,则显示
STAT,进程状态:R running or runnable (on run queue) 运行S interruptible sleep 可中断睡眠D uninterruptible sleep 不可中断睡眠T stopped by job control signal 停止Z defunct (“zombie”) process 僵死
START,进程启动时间
TIME,进程实际占用CPU的时间
COMMAND,该进程对应的执行程序
(5)示例:
ps -aux # 列出目前所有的正在内存当中的程序
ps -A # 显示所有进程信息
ps -ef # 显示所有进程信息,连同命令行
ps -axf
ps -aux | grep ssh
ps -u zh1
ps -aux |less # 分页显示
ps -axux | sort -rnk 3
(1)作用:以树状图显示进程
(2)语法:pstree [参数]
(3)参数:
-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示
-c 不使用精简标示法
-G 使用VT100终端机的列绘图字符
-h 列出树状图时,特别标明现在执行的程序
(4)示例:
pstree
pstree -a
pstree -p
pstree -u
(1)作用:检索当前正在运行的进程
(2)语法:pgrep [参数] [模式]
(3)参数:
-d 设置一个字符串,用于分隔输出的每个进程ID
-f 模式参数仅用于匹配进程名
-I 列出进程名及进程ID
-u 选择仅匹配指定有效用户ID进程
(4)示例:
pgrep sshd
pgrep sshd -d" "
pgrep -l sshd
pgrep -fla ssh
pgrep '^sshd$' -l
(1)作用:显示进程的内存映像
(2)语法:pmap [参数] [进程ID ]
(3)参数:
x 增加一个标题行,同时显示每个内存映像实际使用的物理内存大小,以及内存已修改但尚未写到磁盘的页面数量等附加进程信息
-d 增加一个标题行,同时显示内存映射文件的偏移值,以及存储设备的主次设备号等附加进程信息
-q 采用安静方式,禁止显示汇总信息行
-V 显示命令的版本信息,然后退出
(4)示例:
pmap 13777
pmap -x 13777
(1)作用:查看进程打开的文件
(2)语法:lsof [参数] [文件]
(3)参数:
-a 列出打开文件存在的进程
-c <进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d <文件号> 列出占用该文件号的进程
+d <目录> 列出目录下被打开的文件
+D <目录> 递归列出目录下被打开的文件
-n <目录> 列出使用NFS的文件
-i <条件> 列出符合条件的进程
-p <进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
(4)示例:
lsof
lsof +d /home
lsof +D /home
lsof /bin/bash
lsof -u zh1
lsof -c bash
lsof -p 1930
lsof -d 1
(1)作用:终端任务调度
(2)示例:
jobs -l
fg 2
bg 2
kill 3
kill pid
(1)作用:发送信号到进程
(2)语法:kill [options] […]
(3)选项:
-a:当处理当前进程时,不限制命名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。
(4)常用信号:
HUP 1 终端断线
INT 2 中断(同ctrl+c)
QUIT 3 退出(同ctrl+\)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反,fg/bg命令)
STOP 19 暂停(同ctrl+Z)
(5)示例:
kill -l
Kill pid
kill -l SIGKILL
kill -9 pid
kill -9 $(ps -ef | grep zh1)
(1)作用:使用进程名称来杀死进程
(2)语法:killall [参数] [进程名称]
(3)参数:
-l 打印所有已知信号列表
-u 杀死指定用户的进程
(4)示例:
killall sleep
killall -l
killall -9 sleep
sudo killall -u zh1
(1)作用:调整进程的优先级
(2)语法:
nice [参数] [命令]
renice [参数] [命令]
(3)参数:
nice:
-n 后面接一个数值,范围在-20~19
renice:
-g 指定进程组id
-p 改变该程序的优先权等级,此参数为预设值
-u 指定开启进程的用户名
(4)示例:
ps -l
nice -n 15 vim &
nice -15 vim &
renice 6 -p pid
renice -5 -u zh1
(1)作用:后台运行程序
(2)示例:
nohup ./test &
nohup ./test > file.txt 2>&1 & # 2:标准错误 1:标准输出 表示,标准错误定向到标准输出,标准输出又定向到file.txt
(1)作用:包管理工具
(2)语法:apt [选项] 软件包
(3)示例:
sudo apt update
sudo apt upgrade
sudo apt upgrade vim
sudo apt install bat
sudo apt remove bat
sudo apt show bat
sudo apt autoremove
sudo apt list --installed
(1)作用:包管理工具
(2)语法: 与apt非常类似
(3)apt与apt-get异同点:
(1)作用:设置或显示环境变量
(2)语法:export [选项] 文件
(3)选项:
-f 代表[变量名称]中为函数名称
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中
-p 列出所有的shell赋予程序的环境变量
(4)示例:
export -p
export MYENV
export MYENV = 7
PATH export PATH=$PATH:/usr/local/mysql/bin
(5)注意:
export 的作用效果仅限于本次登陆,换个终端就不存在添加的环境变量了
如果想永久生效,可修改配置文件
/etc/profile #所有用户
sudo vi /etc/profile
~/.bashrc #当前用户
sudo vi ~/.bashrc
(1)作用:在当前Shell环境中从指定文件读取和执行命令,该命令通常用命令“.”来替代
(2)语法: source [文件]
(3)示例:
source ~/.bashrc
. ~/.bashrc
source /etc/profile
(1)作用:设置/删除shell变量
(2)语法:
set [参数] [变量]
unset [参数] [变量]
(3)参数:
set :-a 标示已修改的变量,以供输出至环境变量
unset:-f 仅删除函数-v 仅删除变量
(4)示例:
set
第1步:定义新的环境变量 declare myenv=‘666’
第2步:将定义的变量输出为环境变量 set -a myenv
第3步:查看是否设置成功 env | grep myenv
unset -v myenv
unset myenv #优先删除变量
(1)作用:在终端输出字符串
(2)语法: echo [OPTION]… [STRING]…
(3)参数:
-n 不输出结尾的换行符
-e “\a” 发出警告音
-e “\b” 删除前面的一个字符
-e “\c” 结尾不加换行符(\c 后面的字符不会输出)
-e “\f” 换行,光标扔停留在原来的坐标位置
-e “\n” 换行,光标移至行首
-e “\r” 光标移至行首,但不换行(会覆写行开头的字符)
-E 禁止反斜杠转义,与-e参数功能相反
(4)示例:
echo "hello world"
echo hello world
echo $PATH
echo \$PATH
echo "hello world" > file.txt
echo `date`
echo -e "a\nb\nc"
(1)作用:格式化并输出结果
(2)语法:
printf FORMAT [ARGUMENT]…
printf OPTION
(3)转义序列
(4)格式替代符
(6)示例:
常见格式化字符
printf "%d %s \t %d \n" 100 "hello world" 200
(1)作用:清除屏幕
(1)作用:显示与管理历史命令记录
(2)语法:history [参数]
(3)参数:
-c 清空命令记录
-d 删除指定序号的命令记录
-n 读取命令记录
(4)示例:
history
history 5
!2039
!!
!ls
调用命令历史记录的递归搜索
ctrl+r
如果想要删除特定命令
history -d 1234
history -c
(1)作用:登入/登出系统
(2)示例:
login
logout
(1)作用:退出终端/ssh连接
(1)作用:是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
(2)语法:
xargs [options] [command [initialarguments]]
(3)参数:
-n 多行输出
-d 自定义一个定界符
-I 指定一个替换字符串{}
-t 打印出 xargs 执行的命令
-p 执行每一个命令时弹出确认
(4)示例:
cat file.txt | xargs
cat file.txt | xargs -n3
echo "helloXhelloXhelloXhelloX" | xargs -dX
echo "helloXhelloXhelloXhelloX" | xargs -dX -p
cat cat.txt | xargs -I {} echo {}
cat cat.txt | xargs -t -I {} echo {}
ls *.txt | xargs -I {} mv {} ./dir
cat url-list.txt | xargs wget -c
(1)作用:调用并执行指定的命令,在终端中执行后会退出终端
(2)语法:exec [参数] [命令]
(3)参数:
-c 执行指定的命令
(4)示例
exec -c echo hello world
find . -name "*.txt" -exec ls {} \;
(1)作用:设置/取消命令别名
(2)示例:
alias
alias "ri=rm -i"
unalias ri
(1)作用:显示指定命令的类型
(2)语法:type [参数] [命令]
(3)参数:
-a 可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。
-p 只返回外部命令的信息,相当于which命令
-f 只返回shell函数的信息
-t 返回指定类型的信息
(4)类型:
alias 别名
keyword 关键字,Shell保留字
function 函数,Shell函数
builtin 内建命令,Shell内建命令
file 文件,磁盘文件,外部命令
unfound 没有找到
(5)示例:
type -t ls # 别名
type -t cut # 文件
type -t for # 关键字
type -t pwd # 内部命令
type -a pwd
(1)作用:显示或设定系统日期和时间
(2)语法:
date [OPTION]… [+FORMAT]
date [-u|–utc|–universal] [MMDDhhmm[[
CC]YY][.ss]]
(3)参数:
-d <字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s <字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u 显示目前的格林威治时间
(4)日期格式字符串列表:
%H 小时(以00-23来表示)。
%I 小时(以01-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P AM或PM。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%s 总秒数。起算时间为1970-01-01 00:00:00UTC。
%S 秒(以本地的惯用法来表示)。
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)。
%Z 市区。
%a 星期的缩写。
%A 星期的完整名称。
%b 月份英文名的缩写。
%B 月份的完整英文名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%j 该年中的第几天。
%m 月份(以01-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,异词类推。
%x 日期(以本地的惯用法来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)
(5)示例:
date
date +"%Y%m%d %H:%M:%S"
date + "zh: %D %T %P%thello world"
date -d yesterday +"%Y%m%d"
date -d next-month +%Y%m%d
date -d last-year +%Y%m%d
date -d "7 days" +%Y%m%d
date -d "+1 day" +%Y%m%d
date -d "-1 month" +%Y%m%d
date -d "+1 year" +%Y%m%d
date --date '12:34:56'
date -s '12:34:56'
(1)作用:显示日历
(2)语法:cal [参数] [月份] [年份]
(3)参数
1显示一个月的月历
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
(4)示例:
cal
cal -1
cal -3
cal 7 2018
cal -y 2021
cal 2021
cal -j
(1)作用:定时执行任务
(2)语法:crontab [参数]
(3)参数:
-e 编辑该用户的计时器设置
-l 列出该用户的计时器设置
-r 删除该用户的计时器设置
-u 指定要设定计时器的用户名称
(4)使用crontab设置任务
参数格式
未设置的字段以星号*占位- 例:1-5,代表第1分钟到第5分钟执行(其余类推)/ 例:*/10,代表每10分钟执行(其余类推), 例:1,3,5,代表第1、3、5分钟执行(其余类推)
字段说明
minute 表示分钟,0~59hour 表示小时,0~23day 表示日期,1~31month 表示月份,1~12week 表示星期,0~7command 要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
(5)示例:
crontab -e
crontab -l
crontab -r
crontab -e # 编辑任务
* * * * * /bin/ls
3,15 * * * * /usr/bin/pwd
30 0-23/3 * * * echo "haha"
0 */2 * * * /etc/init.d/smb restart
10 1 * * 0,6 /etc/init.d/smb restart
50 5 1,15 * * fsck /home
0 22 * * 0 /home/zh1/backup
30 6 */10 * * ls
(1)作用:时间执行一个任务
(2)语法:at [参数] [脚本] [时间]
(3)参数:(at)
-d 删除系统中的等待作业(等效于atrm命令)
-c 打印任务的内容
-q 使用指定的列队
-f 将指定文件提交等待作业
-t 以时间的形式提交运行作业
(4)示例:
atq
at -d 1
atrm 1
at 11:10 am
echo "hello world"
ctrl+d 保存
at -f script.sh now # 创建一个file.txt
at -f script.sh now+5 min
at -f script.sh 17:00
at -f script.sh 07/01/2022
(1)作用:显示命令执行时所消耗的时间
(2)语法:time [参数] [命令]
(3)时间:
real:
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
user:
user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,
其他进程和花费阻塞状态中的时间没有计算在内。
sys:
sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真
正由进程使用的CPU时间。
(4)示例:
time date
(1)作用:周期性执行命令
(2)语法:watch [参数] [命令]
(3)参数:
-n 指定间隔的时间
-d 高亮显示变化的区域
(4)示例:
watch uptime
watch -n 1 -d uptime
watch -d 'ls -l | grep file'
watch -n 1 df -i
(1)作用:数字计算器
(2)语法:bc [选项]
(3)示例:
bc
计算
加减乘除 :+ - * /平方:^平方根:sqrt sqrt(100)设置小数位: scale echo "scale=2; (2.344 - 1.3)/1" | bc进制转换:echo "obase=10;ibase=2;110101" | bc
(1)作用:为文件创建快捷方式
(2)语法:ln [参数] 源文件 目标文件
(3)参数:
-s 对源文件建立符号链接,而非硬链接
(4)示例:
ln -s file.txt sfile.txt
-创建硬链接
ln file.txt hfile.txt
(1)作用:关闭/重启服务器
(2)参数:
shutdown:-h 将系统关机-c 取消关机任务-r 将系统重启
halt:-f 强制关机或重启
reboot:-w 模拟重启过程,将过程写入到日志中
(3)示例:
shutdown -h now
halt
halt -f
poweroff
shutdown -r now
reboot
reboot -w
shutdown -h 21:00
shutdown +5 "System will shutdown after 5 minutes"
shutdown -c