<textarea id="md_view_content" style=""># LinuxCLI
讯享网
一切皆文件!
文件权限
权限类型
r(readable)=> 可读w(writable)=> 可写x(executable)=> 如果文件拥有该权限,则该文件可执行;如果目录拥有该权限,则可以切换目录-=> 无权限
权限组别
在查看一个文件/目录权限的时候,通常会以这种形式展示:drwxr-xr-x<br>除开第一个字母(后面会解释它的含义),可以将剩下的以三个一组,一共分为三组,从左到右依次表示:
- 该文件/目录的所有者
Owner对该文件/目录的权限 - 该文件/目录的所属组
Group对该文件/目录的权限 - 不被上述两点包含的其他用户
Others对该文件/目录的权限
常用通配符
*=> 匹配0个或多个字符串?=> 严格匹配1个字符[abcd]=> 匹配abcd4个字符当中的任意1个[a-z]=> 匹配abcd...xyz这26个字符当中的任意一个<br>[1-9]等匹配规则也是同理[!abc]=> 除了abc这3个字符外,可以匹配任意一个<br>[^abc]效果等价,根据个人写法习惯选择即可
man
作用
查看帮助手册
帮助手册章节内容简介
第一章:shell commands => ls, cp, mv...等常用的命令
第二章:system calls => open, close, read, write...等系统调用
第三章:library calls => fopen, fclose, fread, fwrite...等库函数
第四章:special files => 设备文件的说明,通常指的是/dev目录下的文件
第五章:file formats and conventions => 配置文件相关的说明文档,例如:/etc/passwd
第六章:games => 游戏相关
第七章:miscellaneous => 惯例与协议相关
第八章:system administration commands => 系统管理员会使用到的命令,通常只开放给root用户/权限
第九章:kernel routines => 系统内核相关
案例
man man=> 查看man命令的帮助手册<br>man ls=> 查看ls命令的帮助手册<br>……man -f sleep=> 查看sleep命令的简要说明,会得到两条信息:-
sleep(1)...=> 第一章中sleep命令的简要信息
sleep(3)...=> 第三章中sleep命令的简要信息
因为shell命令中存在sleep(位于帮助手册的第一章),库函数中也存在sleep(位于帮助手册的第三章)
直接man sleep默认打开的是第一章(按照章节从上往下,第一个存在该命令)的帮助手册
使用man 3 sleep可以指定打开第三章有关sleep函数的帮助手册
man -w ls=> 查看ls命令的帮助手册在磁盘当中的位置man -k disk=> 查看所有跟字符串disk相关的帮助手册的简要说明,用于突然记不起具体命令但是记得其中某一部分拼写的情况<br>这里的相关不只是命令/函数名中包含,也包括描述
info
作用
用来阅读info格式的文档,查看帮助信息
相较于man,info所展示的帮助文档信息会更加详细全面,其中甚至不乏超链接,可以像浏览网页一样去查看,但缺点也是太过详细全面,操作繁琐,使用起来没有man那么便捷,大多数情况下用man命令查看就够用了。
案例
info ls=> 查看ls命令的帮助文档info -w ls=> 查看ls命令的帮助手册(info格式)在磁盘当中的位置
whatit
作用
查询一个命令执行什么功能
从观感上就是将man命令查询到的各个章节的开头提取出来,某种程度上等同于man -f
案例
whatis sleep => 会发现,得到的结果跟man -f sleep一致
touch
作用
- 改变已有文件的时间戳属性(用户必须是文件所有者,或者拥有写该文件的权限)
- 创建一个新的空文件
文件的时间属性如何查看会在后面介绍,这里只需要知道时间属性中的两个:访问时间Access和修改时间Modify
案例
touch file_name=> 以当下时间为时间戳新建一个空文件,该文件名为file_nametouch file1 file2 file3=> 同时创建三个新文件,依次命名为file1, file2, file3,数量可以增加,中间用空格隔开touch file{1..3}=> 同时创建三个新文件,依次命名为file1, file2, file3,在创建文件命名有规律(连续的字符)时的一种快捷方式touch exist_file=> 已存在的文件exist_file的所有时间属性都更新为当下时间touch -a exist_file=> 已存在的文件exist_file的访问时间Access更新为当下时间touch -m exist_file=> 已存在的文件exist_file的修改时间Modify更新为当下时间touch -c nofileortouch --no-create nofile=> 仅用来修改已有文件的时间戳,即使nofile不存在也不会新建touch today_file -r yesterday_file=> 将访问和修改时间从yesterday_file复制到today_filetouch -d "tomorrow" file=> 将file的访问和修改时间更改为明天touch -t .33 file=> 将file的访问和修改时间更改为2025-01-01 10:00:33,修改为任意时间同理更改格式即可
mkdir
作用
创建目录
默认状态下,如果想要创建的目录已存在,则提示已存在,而不会继续创建,与文件重名也不行
案例
mkdir dir1=> 在当前目录下,新建一个名为dir1的目录mkdir dir2 dir3=> 在当前目录下,新建两个目录,分别名为dir2, dir3,数量可以增加,中间用空格隔开mkdir dir{4..7}=> 与前文touch file{1..3}同理mkdir -p dir8/dir9=> 递归创建,先在当前目录下创建dir8目录,再在dir8目录下创建dir9mkdir -p dir8/dir10/dir11=> 递归创建,由于dir8目录已存在,所以直接进到dir8目录下创建dir10,此时在dir8目录下应该有同级的两个目录,分别是dir9和dir10,最后在dir10目录下创建dir11mkdir -m 700 dir1/dir12=> 在dir1目录下新建目录dir12,同时将dir12的权限设置为700- -
700权限是指:所有者可读可写可执行(切换目录),所属组和其他用户都没有读、写、执行(切换目录)的权限,相关内容后续展开 mkdir -v dir{13..15}=> 显示目录的创建过程
rm
作用
删除文件或目录
注意:Linux没有自带的回收站,删除需谨慎,尤其是rm -rf /*
案例
rm file=> 删除当前目录下的file文件rm -r dirorrm -R dir=> 删除当前目录下的dir目录,其子目录也将被递归删除rm nofile=> 尝试删除一个不存在的文件会出现警告,添加-f即rm -f nofile将忽略不存在的文件,不会出现警告rm -rf *=> 删除当前目录下的所有文件rm -i file1 file2 file3=> 删除当前目录下的三个文件,分别是file1, file2, file3,但由于添加了-i,所以每删除一个文件前都会询问,需要手动输入y来确认删除,输入n来拒绝删除即保留该文件rm -ir dir1 dir2 dir3=> 同理,需要一个个手动确认,只不过添加了-r,所以要删除的是目录rm file{1..3}=> 删除当前目录下的file1, file2, file3这三个文件
rmdir
作用
删除空目录,否则将报错
由于一切皆文件,所以空目录也是占磁盘空间的,当磁盘空间爆满,到了需要删空目录来解放空间的时候,如果系统只支持rm命令来删除,还需要在删除前进行一番判断,徒增工作量降低效率,而rmdir则可以一步到位,空的删除,不空的保留
案例
rmdir empty_dir=> 删除当前目录下的空目录empty_dirrmdir -p empty1/empty2/empty3=> 递归删除多重目录<br>注意:此命令要求empty3是个空目录,在删除empty3后empty2成为空目录,在删除empty2后empty1是个空目录,否则将报错
讯享网 # 递归创建三个目录 mkdir -p dir1/dir2/dir3 # 进到dir1目录下创建test文件,再返回到上级目录 cd dir1 touch test cd .. # 尝试递归删除 rmdir -p dir1/dir2/dir3 # 警告信息: # rmdir: dir1: Directory not empty # 此时进到dir1目录查看 cd dir1 ls # 将发现只有一个test文件,而dir2和dir3已经被删除
rm -v dir=> 显示指令执行的过程<br>可以尝试将上述代码的递归删除更改为rmdir -pv dir1/dir2/dir3,你将更清晰直观得感受到删除过程以及报错的位置与逻辑
mv
作用
- 移动文件
- 重命名文件
案例
mv file dir=> 将当前目录下的file文件移动至当前目录的dir目录下mv file new_file=> 将当前目录下的file文件重命名为new_file<br>注意:如果new_file是一个已存在的文件,那么file将覆盖掉new_filemv dir1 dir2=> 将dir1目录移动到dir2中,如果dir2不存在则重命名mv -i file1 file2=> 如果file2不存在则直接重命名,如果存在这个文件,那么将询问是否将其覆盖mv -i file1 dir/file2=> 如果dir目录下不存在file2文件,则将file1文件移动到dir目录下并且重命名为file2<br>如果dir目录下存在file2文件,那么将询问是否将其覆盖mv -f file1 dir/file2=> 强制操作,即使dir目录下存在file2文件,也会在不经询问的前提下将file1转移过去并覆盖<br>注意:单就这一点而言,是否添加-f没有影响,因为不加-f而直接mv file1 dir/file2也将不经询问直接覆盖mv -b file1 file2=> 如果file2文件已存在,则在覆盖前会将其备份,备份的内容放在文件file2~中mv -u file1 file2=> 如果file2不存在,则直接重命名<br>如果file2已存在,那么只有当file1文件更(第四声)新的时候(从时间属性上来说),才会覆盖file2文件,否则将忽略此条命令,并且也没有任何警告或报错mv * https://learnblockchain.cn/index.php/=> 将当前目录下的所有内容都转移到上级目录mv dir1/* dir2=> 将dir1目录下的所有内容都转移到dir2目录下
cp
作用
复制文件或目录,如果目标文件已存在,将直接覆盖(与使用-f等价)
案例
cp file1 file2=> 将file1文件复制一份放到file2中cp -r dir1 dir2=> 递归复制,将目录dir1复制一份放到dir2目录中,其下的所有内容也将一并被复制cp -i file1 file2=> 如果file2已存在,则会提醒让你确认是否执行覆盖操作,即将file1的内容覆盖掉原本file2的内容cp -b file1 file2=> 如果file2已存在,则会先将其备份为file2~cp -a dir1 dir2=> 保留链接、文件属性的前提下复制目录下的所有内容
cd
作用
改变目录,从一个目录进入到另一个目录
特殊目录
~=> 用户的家目录.=> 当前目录..=> 当前目录的上一级目录/=> 根目录-=> 上一次所处的目录
路径
- 绝对路径:起始路径为根目录
/ - 相对路径:起始路径不为根目录
/
案例
cd dirorcd https://learnblockchain.cn/index.php/article/dir=> 进入当前目录下的dir目录cd https://learnblockchain.cn/index.php/..=> 切换到当前目录的上两级目录cdorcd ~=> 切换到家目录cd -=> 切换到上一次所在的目录
pwd
作用
打印当前路径(绝对路径)防止迷路
案例
pwd => 屏幕上将打印你当前所处位置的绝对路径
ls
作用
显示指定目录下有哪些文件/目录及其具体的属性信息
案例
ls=> 查看当前目录下有哪些文件/目录(不包括以.开头的隐藏内容)ls -a=> 查看当前目录下有哪些文件/目录(包括以.开头的隐藏内容),相较于ls会多显示:- -
.=> 当前目录..=> 上一级目录- 以
.开头的隐藏文件/目录
ls -l=> 以长格式列出当前目录下的文件/目录信息,包括各权限,所属组,创建时间等等ls /=> 查看根目录/下的所有文件/目录ls -lR=> 递归列出当前目录下以及其所有子目录下的文件/目录的信息,以长格式形式列出ls -l f*=> 查看当前目录下所有以f开头的文件/目录的长格式信息ls -r=> 将文件以相反的次序显示(默认是以字典序升序,加了-r后变为降序)ls -t=> 根据最后修改的时间来排序显示(新的文件最先显示)ls -ltr=> 以长格式列出信息,并且以最后修改的时间的倒序(旧的文件先显示)进行显示ls -A=> 除了不列举.以及..之外,效果等同-als -S=> 按照文件大小排序ls -F=> 在列出的文件名后根据其文件类型增加一个符号,例如:- - 可执行加
*- 目录加
/ - ……
- 目录加
ls -h=> 以人类可读的形式显示数字大小ls -lh=> 列出当前目录下文件/目录的详细信息,并且显示的数字将以人类更易读的形式进行单位转换(K, M, G…)
tree
作用
以树状形式列出目录下的内容
案例
tree=> 树状显示当前目录下的文件和目录tree -a=> 树状显示当前目录下的文件和目录,包括以.开头的隐藏文件/目录tree -d=> 只树状显示当前目录下的目录tree -L 2=> 树状显示当前目录下2个层级内的文件和目录tree -p=> 除了显示文件/目录名之外,增加权限信息tree -t=> 按更改时间进行排序tree -r=> 反向排序tree -f=> 显示完整的相对路径
stat
作用
显示文件或文件系统的详细信息
文件信息:文件名、大小、块的大小、IO块的大小、文件类型、设备号、链接数、文件权限、用户名、用户组、时间属性等等
文件系统信息:文件系统ID、文件名最大长度、文件系统类型、块大小、总空间、可用空间等等
时间属性
atime: access time=> 访问时间<br>读取文件(more/less/cat/tail/...)、修改文件(vim/nano/...)时改变mtime: modify time=> 修改时间<br>修改文件(vim/nano/...)时改变ctime: change time=> 状态改变时间<br>修改文件(vim/nano/...)、文件属性变化(chmod/chown/...)时改变
注意:上述括号内的命令后续会提到,这里不展开
案例
stat file=> 查看file文件的信息stat -f file=> 查看file文件所在文件系统信息stat -t file=> 以简洁方式输出信息<br>将关键内容以空格隔开,放到一行以字符串的形式输出
rename
作用
用字符串替换的方式批量改变具有一定规则的文件名,这也是与mv区别的地方
语法
rename 's/old-name/new-name/' files
old-name=> 原字符串,即文件名中需要替换的字符串new-name=> 目标字符串,即需要替换成为的字符串files=> 指定要改变文件名的文件列表
案例
rename 's/.txt/.doc/' file.txt=> 将file.txt中的.txt替换为.doc,此时通过ls查看文件,会发现file.txt不见了,取而代之的是file.docrename -n 's/file/file0/' file*=> 将所有与file*匹配的文件名中的file替换为file0<br>由于添加了-n,所以此条命令是模拟替换,不会真实生效,而是以rename(file1 file01), rename(file2, file02), ...的形式一一列举模拟过程中会进行的替换rename -v 's/file/file0/' file*=> 真实替换并且显示替换过程信息,如:file1 renamed as file01等等
basename
作用
提取文件路径名最后的文件名,可以根据需求删除指定后缀
案例
basename /etc/passwd=> 提取出文件名passwdbasename /usr/local/=> 提取出目录名(会自动删除最后的/)localbasename -a /etc/passwd /usr/local/=> 添加-a以支持提取多个输入,按照输入的顺序分行显示提取出的文件/目录名basename /etc/sysctl.conf .conf=> 提取出sysctl.conf后会删除指定后缀.conf,所以最终得到结果为sysctl<br>basename -s .conf /etc/sysctl.conf与之等价<br>注意:.不能忘,否则将会得到sysctl.
dirname
作用
提取路径
案例
dirname /usr/bin/cat=> 提取找到cat文件的路径,即得到/usr/bindirname /home/username/commands/=> 提取找到commands目录的路径,即得到/home/username
chattr && lsattr
作用
chattr=> 更改文件属性<br>非root用户需要用sudo提权才能使用该命令lsattr=> 查看文件属性
属性
A=> 不要修改对这个文件的最后访问时间S=> 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘a=> 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件<br>如果拥有该属性的是目录,那么系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件b=> 不更新文件或目录的最后存取时间c=> 将文件或目录压缩后存放d=> 当dump程序执行时,该文件或目录不会被dump备份D=> 检查压缩文件中的错误i=> 系统将不允许对这个文件进行任何的修改<br>如果目录具有该属性,那么任何进程只能修改目录之下的文件,不允许建立和删除文件s=> 彻底删除文件,不可恢复u=> 当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复,用来防止意外删除文件或目录t=> 文件系统支持尾部合并X=> 可以直接访问压缩文件的内容
案例
sudo chattr +i file=> 为file这个文件添加i属性,系统将不允许任何人修改它- -
echo 111 >> file=> 尝试将111追加入file文件,将得到报错Operation not permittedrm file=> 尝试删除这个文件,依旧得到报错Operation not permitted- ……
lsattr file=> 可以观察到属性里有isudo chattr -i file=> 撤销刚刚添加的i属性,现在可以修改它sudo chattr +a file=> 只允许在file文件里追加内容(对日志文件特别有用)sudo chattr -R +i dir=> 对dir目录中的所有文件都添加i属性限制
file
作用
识别文件类型
案例
file file.txt=> 得到其类型为ASCII textfile dir=> 得到其类型为directoryfile /dev/sda=> 得到其类型为block special
md5sum
作用
生成和校验文件的md5值(根据内容按照某个算法算出来的32位16进制数,与文件名无关),确保文件的准确性
案例
md5sum file=> 生成file文件的md5值md5sum -b file=> 以二进制模式读取文件再计算md5值md5sum -t file=> 以文本模式读取文件再计算md5值
以上不论哪一种,计算得到的md5值都是相同的,因为内容本质没有任何变化
md5sum file > file.md5=> 计算file文件的md5值并将结果保存到file.md5文件中md5sum -c file.md5=> 校验上一个命令生成的md5值与file文件是否一致,修改file文件后再次执行查看是否一致md5sum -c --status file.md5=> md5校验但是不显示任何输出,用返回码表示成功与否<br>echo $?=> 其中,$?用来查询上一条命令执行的结果(0表示成功,1表示失败),echo表示将其打印出来
find
作用
搜索指定文件/目录
案例
find / -name *.conf=> 全盘搜索(/根目录开始)所有以.conf结尾的文件find /etc -size +1k=> 在/etc目录下搜索所有大于1k的文件find /home -user username=> 在/home目录下搜索属于指定用户username的所有文件
上述命令可能涉及文件权限问题,可以用sudo提权后执行
find . -type f=> 查找当前目录下的所有文件(file类型)find . -perm 664 -exec ls -l {} ;=> 查找当前目录下所有权限为664的文件,并将其通过ls -l进行显示find .=> 列出当前目录中的所有文件、目录以及子文件信息find . -iname *.txt=> 在当前目录中查找所有后缀为.txt(不区分大小写)的文件find . ! -name *.txt=> 在当前目录中查找所有后缀不为.txt的文件find . -mtime -7 -exec rm -i {} ;=> 找到当前目录下所有在7天内被修改过的文件并依次询问是否将其删除- ……
which
作用
在path变量指定的路径当中,搜索某个系统命令的位置,并且返回第一个搜索结果
查看path变量指定的路径:echo $PATH
案例
which ls=> 查找命令ls所在的位置which bash=> 查找命令bash所在的位置
whereis
作用
查找命令的二进制程序、源代码文件和man手册页等相关文件的路径
whereis查找速度相当快,因为Linux系统会将系统内的所有的文件都记录在一个数据库当中,而不是在磁盘里乱找,但是这个数据库不是实时更新的(一般一天自动更新一次),所以有可能找不到刚刚添加的文件,或者找到了已被删除的文件<br>手动更新该数据库:sudo updatedb
案例
whereis ls=> 将显示其命令位置及man手册页位置:ls: /usr/bin/ls /usr/share/man/man1/ls.1.gzwhereis -b ls=> 只查找ls命令的二进制程序所在的位置whereis -m ls=> 只查找ls命令的man手册页路径
locate
作用
快速查找文件或目录,速度比find快,与whereis一样,也是在数据库中搜索
案例
locate file=> 查找所有路径当中包含file的文件locate /etc/sh=> 查找所有路径中包含/etc/sh的文件locate -i locate/f=> 以locate结尾的目录且该目录下含有以f开头的文件,含有这一特点的所有文件都将被检索出来,而-i使得检索过程当中忽略大小写
chown
作用
改变文件或目录的用户和用户组,通常需要加上管理员权限执行
案例
sudo chown user:group file=> 将file文件的用户更改为user,用户组更改为groupsudo chown user file=> 只更改它的用户sudo chown :group file=> 只更改它的用户组sudo chown -c user:group file=> 显示改变过程sudo chown -R user:group dir=> 改变指定目录下所有子文件的所属主和所属组
chgrp
作用
更改用户组,通常需要加上管理员权限
案例
sudo chgrp group file=> 更改file文件的用户组为groupsudo chgrp -v group file=> 显示命令执行过程sudo chgrp --reference=reffile file=> 依据参照物reffile来更改file的用户组sudo chgrp -R group dir=> 将指定目录下的所有子文件的所属组更改为group
chmod
作用
改变文件/目录的权限,只有你是该文件/目录的所属主或者root用户才可以执行
对象
u=>user即文件所有者g=>group即文件所属组o=>others即其他用户a=>all即所有用户,相当于ugo
操作
+=> 增加权限-=> 去除权限==> 设置权限
权限
r=> 可读w=> 可写x=> 可执行/可切换目录
数字模式
drwxrwxrwx
将上述权限表示人为分成四个部分
(- or d)(rwx)(rwx)(rwx)
- or d=> 表示文件类型rwx=> 第一组表示该文件/目录所有者所拥有的权限,按照类似二进制的规则来转化为数字:x=> \(2 ^ 0\)w=> \(2 ^ 1\)r=> \(2 ^ 2\)-=> 该位为\(0\)
例如:<br>rwx => \(7\)<br>r-x => \(5\)<br>--- => \(0\)
- 第二组
rwx表示该文件/目录所属组所拥有的权限 - 第三组
rwx表示该文件/目录对其他用户开放的权限
案例
chmod a+r file=> 为所有all用户添加读r权限chmod -R a+r *=> 为当前目录及其所有子目录下的文件都添加所有用户all的读r权限chmod u+x file=> 为file文件的拥有者user添加可执行x权限chmod ug+w,o-w file=> 只有file文件的拥有者user及其所属组用户group拥有对其写入w的权限,而其他用户others将失去对其写入w的权限chmod a+r,a+w,a+x fileorchmod 777 file=>file文件对所有人all可读r可写w可执行xchmod 755 file=>file文件的拥有者可读可写可执行,所属组用户及其他用户可读可执行不可写chmod u=rw,go= file=>file文件的拥有者可读可写,所属组用户及其他用户没有任何权限
grep
作用
文本搜索工具
案例
grep keywords /etc/passwd=> 在/etc/passwd文件中搜索包含字符串keywords的内容grep keywords file1 file2=> 在多个文件中搜索grep -h keywords file1=> 搜索但是结果不包含文件名grep -rl keywords *=> 递归搜索-r当前目录及其子目录中的所有文件,将内容含有字符串keywords的文件的文件名的相对路径依次打印出来-lgrep -c keywords file1 file2=> 在某个文件中,包含该关键词的内容的数量,file1和file2会单独统计数量grep -i KeyWords file=> 搜索过程忽略大小写grep -n keywords file=> 显示的结果将包含行号grep -v keywords file=> 反向查找,即在file文件中搜索出所有不包含字符串keywords的内容grep -x keywords file=> 精确搜索,即同一行内容除了字符串keywords之外没有其它(不包括换行)才会被匹配上grep -q keywords file=> 询问file文件中是否含有所需要查找的字符串keywords,此条命令不会有输出,而是通过状态值返回,可以通过$?来获取,方便在Shell脚本中判断和调用
egrep
作用
查找指定字符串
案例
egrep 'a+' file=> 在file文件中查找包含一个或多个a(可以间隔其它字符)的内容egrep 'linux|666' file=> 在file文件中查找包含linux或666的内容egrep '(linux)+' file=> 在file文件中查找包含一个或多个完整字符串linux的内容egrep '(linux){2}' file=> 在file文件中查找连续包含两个完整字符串linux的内容egrep '^#' file=> 查找以#开头的内容egrep 'linux$' file=> 查找以linux结尾的内容egrep 'ab[cd]' file=> 查找含有字符串abc或abd的内容
上述命令的‘’中均为正则表达式
cat
作用
在终端上显示内容,一股脑输出,所以一般用来查看短小精悍的文件
案例
cat file=> 在终端上显示file文件的内容cat file1 file2=> 查看多个文件cat -n file=> 显示行数编号,多个连续的空行也会连续编号cat -s file=> 去除重复的空行cat -b file=> 显示行数,但是空行不编号,不过空行依旧会存在cat -E file=> 每一行末尾显示$符号,包括空行cat -T file=> 将TAB字符显示为^I符号cat file > output=> 重定向输出文件内容,即不再显示到终端,而是写入output文件<br>如果output不存在则创建后写入,否则将覆盖内容cat file >> output=> 重定向追加,同样不显示到终端,而是追加进output文件<br>如果output不存在则创建后写入,否则将追加到output原内容的末尾cat file1 file2 > combinedfile=> 合并文件cat > file=> 回车后会让你输入内容,完成后按Ctrl + D保存,你输入的内容将会被保存进file文件
more
作用
分页显示文本文件内容,但是只能往下翻,不能往回翻
基本操作
- 回车:下滚一行
- 空格:下翻一页
q:退出
案例
more ~/.bashrcmore -c -10 ~/.bashrc=> 先清屏,再以每次10行内容的格式显示指定文本文件内容more -s ~/.bashrc=> 当出现多个连续的空白行的时候,将它们合并为一行more +10 ~/.bashrc=> 从第10行开始显示
less
作用
分页显示文本文件内容,支持向前向后翻页<br>注意:前文提到的man手册嵌入了less命令,各种操作与其一致
基本操作
- 回车:下滚一行
- 空格:下翻一页
j:下滚一行k:上滚一行f:下翻一页b:上翻一页q:退出/word:搜索word关键词
案例
less ~/.bashrcless ~/.bashrc ~/.bash_history=> 查看多个文件- -
n:浏览下一个文件p:浏览上一个文件
history | less=> 查看历史使用的命令,并将其以less命令分页显示
head
作用
显示文件开头的内容
空行算作一行,空格和换行符都算作一个字符
案例
head ~/.bashrc=> 默认显示该文件的前10行head -n 5 ~/.bashrc=> 显示该文件的前5行head -n -6 ~/.bashrc=> 显示除了最后6行之外的所有内容head -c 20 ~/.bashrc=> 显示文件的前20个字符head -c -30 ~/.bashrc=> 显示除了最后30个字符之外的所有内容
tail
作用
查看文件结尾的内容
空行算作一行,空格和换行符都算作一个字符
案例
tail ~/.bashrc=> 默认显示该文件的最后10行tail -n 20 ~/.bashrc=> 查看最后20行内容tail -n +20 ~/.bashrc=> 查看从文件第20行开始一直到文件末尾tail -c 10 ~/.bashrc=> 查看最后10个字符tail -f file=> 动态显示文件的最后10行<br>此时另起一个终端,往file文件里加内容,再切换回执行了该命令的终端,可以发现该新添加的内容<br>该命令应用于日志文件特别有效
tac
作用
反向显示文件内容,以行为单位,与cat的显示顺序正好相反
案例
tac file => 先显示最后一行,再显示倒数第二行…最后显示第一行
nl
作用
添加行号
案例
nl file=> 列出file文件的内容,同时添加行号,空行不显示行号nl -b a file=> 空行显示行号nl -b a -n rz file=> 行号在自己栏位的最右侧显示,并且加前导零使得格式对齐,宽度默认为6为,即:第一行显示为000001nl -b a -n rz -w 3 file=> 将宽度更改为3,即:第一行显示为001nl -b t file=> 空行不显示行号(与不加任何参数时等价)
wc
作用
统计文本信息
案例
wc file=> 统计该文件的行数、字数(由空白、跳格或换行符分隔的字符串)以及字节数(包括可见字符和不可见字符)
注意:一个字符可能占多个字节,例如:在UTF-8编码中,一个英文字母占一个字符,占用空间一个字节,而一个中文,则需要占用三个字节大小
wc -w file=> 统计字数wc -m file=> 统计字符数wc -c file=> 统计字节数wc -l file=> 统计行数wc -L file=> 打印该文件最长行的长度(不包含不可见字符)
split
作用
文件分割<br>默认按每1000行分割成一个小文件<br>默认情况下,分割成的文件按照以下规律依次命名:xaa, xab, xac, ......
案例
split -2 file=> 将file文件的内容按照每两行切割成一个小文件split -b 10k file=> 根据文件大小,每10kb切割成一个小文件split -d -a 3 file=> 切割成的文件以数字进行命名,命名宽度为3,即:x000, x001, x002, ......split -d -a 3 file split_file=> 切割成的文件拥有指定前缀,即:split_file000, split_file001, split_file002, ......<br>注意:该命令中,要切割的文件file和指定前缀字符串split_file的顺序不能颠倒
cut
作用
从文件中提取文本的一部分
案例
cut -f 2 fileorcut -f2 file=> 提取file文件当中第二列的内容<br>默认情况下,cut命令会将一行内容依据制表符TAB分成若干列cut -f2 --complement file=> 提取除第二列之外的内容cut -f2 -d";" file=> 提取第二列,但是一行内容将以分号来分成若干列cut -b 2-4,6 file=> 提取每一行的第2, 3, 4, 6个字节的内容cut -c1-3 file=> 提取每一行的第1, 2, 3个字符的内容cut -c-2 file=> 提取每一行的前两个字符的内容cut -c4- file=> 提取每一行的第四个字符及其后的内容
paste
作用
合并两个或多个文件
案例
paste file1 file2=> 按照纵列将两个文件拼接起来,键入命令中的文件顺序不同,结果也不同<br>想要拼接更多的文件,只需要在命令后继续输入文件名即可<br>注意:如果文件中的行数不同,那么缺失位置将用空白字符填充paste -d":" file1 file2 file3=> 合并文件的时候,每一行的内容以:来分隔<br>注意:如果文件中的行数不同,又指定了分隔符(以:为例),那么最后一行就可能出现::words之类的形式(因为前两个文件内容较少)paste -d":" -s file1 file2=> 每个文件内部用:替换掉换行符组成一个一行的字符串,再将若干个字符串一行一行拼接ls | paste -d " " - - - -=> 将ls的结果进行paste命令,将以空格进行分隔,并依次组成四列的形式
sort
作用
对文本内容进行排序
案例
sort file=> 按字母字典序升序进行排序sort -r file=> 按字母字典序降序进行排序sort -n number_file=> 按照数字本身(从小到大)进行排序sort -n -r number_file=> 从大到小sort -t : -k 3 -n file=> 首先将每一行按照:进行分隔,按照第三列的数字本身从小到大的顺序来确定行的顺序
uniq
作用
去除文件中的重复行
注意:这里的重复行必须是连续的重复行,如果中间被什么东西分隔开就不行
案例
uniq file=>file文件中每一重复的连续行都将只剩下一行内容uniq -c file=> 去除重复行的同时统计每一行所在原文有多少重复行uniq -d file=> 只显示有重复的记录,且每个记录只出现一次uniq -u file=> 只显示没有重复的记录
diff
作用
逐行比较文件差异,并且可以生成补丁文件
符号介绍
a=> 增加c=> 改变d=> 删除|=> 前后两个文件内容有不同<=> 后面文件比前面文件少了一行内容>=> 后面文件比前面文件多了一行内容+=> 比较的文件的后者比前者多一行-=> 比较的文件的后者比前者少一行!=> 两个文件有差别的行
案例
diff file1 file2=> 逐行比较并在每一个有差异的地方用上述符号进行展示diff -y -W 50 file1 file2=> 并排格式输出,设置间隔宽度为50,同时在每一个有差异的地方用上述符号进行展示,相较于上一个命令,并排显示会更加直观diff -c file1 file2=> 上下文格式输出diff -u file1 file2=> 统一格式输出diff file1 file2 > file.patch=> 生成补丁<br>如果为file1文件打上这个生成的补丁,那么它的内容将与file2完全一致patch file1 file.patch=> 为file1文件打上刚刚生成的补丁
join
作用
连接两个文件当中相同的连接字段后的内容
案例
join file1 file2=> 默认以第一列为连接字段
cat file1 # output: 1 username 99 2 test 100 3 pp jj cat file2 # output: 1 username 1 2 jj pp 4 963 369 join file1 file2 # output: 1 username 99 username 1 2 test 100 jj pp
join -a1 file1 file2=> 左边文件,即file1当中未匹配上连接字段的内容也将显示join -a2 file1 file2=> 右边文件,即file2当中未匹配上连接字段的内容也将显示join -a1 -a2 file1 file2=> 两个文件当中未匹配上连接字段的内容也将显示<br>显示顺序:<br>1. 匹配上连接字段的内容<br>2. 左边文件,即file1当中未匹配上连接字段的内容<br>3. 右边文件,即file2当中未匹配上连接字段的内容join -o 1.2 1.3 2.3 file1 file2=> 如果匹配上连接字段,那么将截取第一个文件file1的第二第三个字段与第二个文件file2的第三个字段组合在一起<br>注意:计算第几个字段时需要考虑连接字段(它也占个数)join -t ' ' file1 file2=> 指定分隔符join -v 1 file1 file2=> 只显示第一个文件,即file1文件当中,未能匹配上连接字段的内容join -j 2 file1 file2=> 指定以两个文件当中的第二个字段作为连接字段进行匹配<br>注意:输出结果时,会自动将连接字段放在第一位
tr
作用
转换或删除文件中的字符
案例
tr "[a-z]" "[A-Z]" < file=> 对file文件当中的内容进行小写到大写转换cat file | tr a-z A-Z=> 对file文件当中的内容进行小写到大写转换echo "hello world" | tr [:lower:] [:upper:]=> 对字符串hello world进行小写到大写转换- -
[:alnum:]=> 字母和数字[:alpha:]=> 字母[:cntrl:]=> 控制(非打印)字符[:digit:]=> 数字[:graph:]=> 图形字符[:lower:]=> 小写[:upper:]=> 大写[:print:]=> 可打印字符[:punct:]=> 标点符号[:space:]=> 空白字符[:xdigit:]=> 十六进制字符
echo "Hello World" | tr "[A-Za-z]" "[a-zA-Z]"=> 将字符串Hello World当中的大小写字符互换echo "daflenDAGDNfdsaf" | tr -d "[a-z]"=> 将字符串daflenDAGDNfdsaf中的小写字母删除- - 类似的:<br>
tr -d 0-9=> 删除某一段内容中的数字<br>tr -d "[ ]"=> 删除某一段内容中的空格和tab符<br>tr -d -c "0-9 "=> 删除某一段内容中的,不在指定集合中的字符 - `echo -e "1
2
3
" | tr -s " "=> 压缩重复的空白行<br>注意:echo -e表示后面紧跟的字符串中需要进行转译,这个例子当中就是需要将 `转译为换行符
- - 类似的:<br>
tr -s "[ xo]"=> 在某一段内容中,删除字符集中的重复字符<br>tr -s " " "-"=> 在某一段内容中,将连续的空格压缩为一个空格,并将空格替换为- echo -e "hello world" | tr " " " "=> 将制表符替换为空格
sed
作用
批量编辑文本文件(行处理)
动作
a=> 新增c=> 取代d=> 删除i=> 插入p=> 打印s=> 取代
注意:默认情况下,该命令并非直接修改文件中的内容,而是将处理后的结果输出,文件内容保持不变
案例
sed -n '2p' file=> 仅输出file文件的第二行sed -n '3,5p' file=> 输出第三、第四、第五行sed -n '/an/p' file=> 输出带有关键词an的行<br>搜索支持使用正则表达式sed '2,4d' file=> 删除第二、第三、第四行的内容并输出到屏幕上sed '/an/d' file=> 删除带有关键词an的行sed '2a nice' file=> 在第二行后追加一行字符串nicesed '2i ' file=> 在第二行前插入一行字符串sed '2c asdfgh' file=> 将第二行整行替换成字符串asdfghsed '2,5c data changed' file=> 将第二行、第三行、第四行、第五行的内容替换成一行字符串data changed<br>注意:并不是将第2-5行每一行都替换成该字符串,而是将第2-5行视为一个整体,用一个字符串将这个整体替换sed 's/oldstring/newstring/g' file=> 全局替换g,把oldstring替换为newstringsed '3s/oldstring/newstring/g' file=> 只将第三行的oldstring替换为newstringsed -e 's/oldstring//g;s/yyds/newstring/g' file=> 多条件替换-e,将oldstring替换为空字符串(等同于删除),同时将yyds替换为newstringsed -i '3s/oldstring/newstring/g' file=> 将第三行的oldstring替换为newstring,同时将修改后的结果写入file文件
awk
作用
对文本和数据进行处理的编程语言,不过一般只是使用它进行内容提取(列处理),而编程部分则交给Shell
案例
df -h | awk '{print $1 " " $3}'=> 对df -h输出的内容进行处理,打印其第一列、第三列,中间用tab符隔开awk -F : '{print $1 " " $3}' /etc/passwd=> 处理/etc/passwd文件,用冒号作为分隔符将每一行分成若干列(默认情况下以空白字符作为分隔符),然后提取显示其第一列、第三列的内容,中间用tab符隔开awk -F : '$3>=500' /etc/passwd=> 将/etc/passwd文件中,以冒号分隔后的第三列中的数据不小于500的行提取出来,提取出来的结果没有被用冒号分割awk -F : '/username/' /etc/passwd=> 搜索/etc/passwd文件中有关键词username的内容,并打印出所在的行的原内容awk -F : '/username/{print $7}' /etc/passwd=> 搜索/etc/passwd文件中有关键词username的内容,并打印出所在的行的第七列内容head /etc/passwd | awk -F : 'BEGIN{print "name uid"}{print $1 " " $3}END{print "from file /etc/passwd"}'=> 用head命令提取/etc/passwd文件的前十行,用awk对这十行内容进行处理:-
-F :=> 用冒号将每一行分割成若干列
{print $1 " " $3}=> 提取并打印用冒号分隔后的第一列和第三列内容,中间用制表符隔开END{print "from file /etc/passwd"}=> 打印from file /etc/passwd
其中,
BEGIN表示在处理之前执行,END表示在处理之后执行BEGIN{print "name uid"}=> 打印name uid,中间为制表符
du
作用
查看磁盘使用空间
案例
du=> 查看当前目录下所有文件和目录的容量大小du -h dir=> 以易读的方式显示dir目录及其子目录大小du -ah dir=> 以易读的方式显示dir目录内所有文件的容量大小du file=> 单独查看file文件所占用的磁盘空间(一般都会加上-h选项易读)du -s dirordu --max-depth=0 dir=> 仅查看dir目录的总大小(一般都会加上-h选项易读)
df
作用
查看磁盘使用了多少空间以及剩余多少空间等信息
案例
df=> 显示磁盘使用空间情况df -h=> 以易读的方式显示df /home=> 显示指定文件/目录所在分区的磁盘空间使用情况df -t squashfs=> 查看指定文件类型的磁盘使用情况df -i=> 以inode模式来显示磁盘空间使用情况df -a=> 显示所有信息,包含具有0 Blocks的文件系统df -T=> 列出文件系统的类型
sync
作用
强制将更改的内容立刻写入磁盘(一般情况下不需要手动执行)
在Linux系统中,在对文件或数据处理的过程中,一般都会先将其先放到内存的缓冲区,等到适当的时机再写入磁盘,以提高系统的运行效率
mount
作用
把文件系统(一般指被格式化后的硬盘或分区设备,如:U盘、光驱等等)挂载到目录,之后,用户就可以直接在挂载的目录当中操作该文件系统
使用该命令需要管理员权限
案例
mount=> 查看当前系统中挂载的所有文件系统信息mount -t tmpfs=> 查看指定类型挂载的文件系统sudo fdisk -l | grep sd=> 查看系统当中已具有哪些sd设备<br>sudo mkdir /mnt/udisk=> 一般都会挂载都/mnt目录下,如果设备过多,为了方便管理,可以在该目录下新建一个目录<br>sudo mount /dev/sdb /mnt/udisk=> 将第一步中查看到的我们需要挂载的设备(如:U盘)挂载到/mnt/disk目录<br>注意:多个设备可以挂载到同一个目录,但是后挂载的设备会将之前挂载的设备的内容隐藏sudo umount udisk=> 解除挂载sudo mount -o ro /dev/sdb /mnt/udisk=> 只读模式挂载<br>注意:无法在以可读可写的方式挂载的同时又在新目录以只读模式挂载,此时需要用上一条命令umount来解除可读可写的挂载sudo mount -o loop /home/username/commands/mount/mydisk.iso /mnt/iso=> 将iso镜像挂载到/mnt/iso目录
umount
作用
卸载已经安装的文件系统目录或文件
案例
sudo umount /dev/sdb=> 通过设备名卸载sudo umount /media/username/devicename=> 通过挂载点卸载
dd
作用
拷贝及转换文件
可以完整拷贝文件,可以部分拷贝文件,也可以在拷贝的过程当中对内容进行转换
同时,利用该命令,可以测试磁盘的读取与写入速度
参数
if=file=> 默认从标准输入,即指定源文件of=file=> 默认从标准输出,即指定目标文件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=<keywords>=> 指定关键字- -
conversion=> 用指定的参数转换文件ascii=> 转换ebcdic为asciiebcdic=> 转换ascii为ebcdicibm=> 转换ascii为alternate ebcdicblock=> 把每一行转换为长度为cbs字节的内容,不足的部分用空格填充unblock=> 使每一行的长度为cbs,不足的部分用空格填充lcase=> 大写转小写ucase=> 小写转大写swab=> 交换输入的每对字节noerror=> 出错时不停止notrunc=> 不截断输出文件sync=> 将每个输入快填充到ibs个字节,不足部分用空(NULL)字符补齐
案例
dd if=/dev/zero of=file bs=500M count=1=> 生成一个500M的文件<br>从/dev/zero文件中拷贝500M数据,一共拷贝一次,将这些数据写入一个名为file的文件中<br>注意:/dev/zero是一个特殊文件,它将源源不断为你提供0这个数据dd if=file1 of=file2 bs=50 count=1=> 拷贝指定文件file1的前50个字节到目标文件file2中dd if=file1 of=file2 conv=ucase=> 拷贝指定内容,同时小写转大写dd conv=ucase=> 回车后在终端输入任意字符,按ctrl + d结束,转化为大写后的结果也将在终端显示
tar
作用
打包/解压工具
参数
-c=> 新建打包文件-x=> 解压文件,配合-C解压到对应的文件目录-f=> (压缩或解压时)指定要处理的文件-j=> 通过bzip2方式压缩或解压,最后以.tar.br2为后缀。压缩后大小小于.tar.gz-z=> 通过gzip方式压缩或解压,最后以.tar.gz为后缀,一般使用得比较多-v=> 显示操作过程-t=> 查看打包文件中的内容-C dir=> 指定压缩/解压缩的目录,若无指定,默认是当前目录
案例
tar -cvf files.tar *=> 将当前目录下所有文件打包(未压缩),并显示操作过程tar -zcvf files.tar.gz *=> 将当前目录下所有文件用gzip方式压缩,并显示操作过程tar -zxvf files.tar.gz=> 解压文件到当前目录下,如果当前目录下已存在文件则会被覆盖tar -zxvf files.tar.gz -C dir=> 解压文件到当前目录的dir目录下tar -tf files.tar.gz=> 列出压缩包里的内容
zip && unzip
作用
压缩/解压,以.zip后缀结尾
案例
zip -r dir.zip dir=> 将dir目录下的所有文件和子目录用zip格式压缩成一个压缩包dir.zipzip files.zip *.txt=> 将当前目录下所有以.txt结尾的文件用zip格式压缩成一个压缩包files.zipzip -dv files.zip new_file=> 将当前目录下的new_file文件添加-d进已有的压缩包files.zip中,并且显示操作过程-vunzip -l files.zip=> 查看压缩包中的文件unzip -v files.zip=> 查看压缩包中的文件及其压缩比率unzip -t files.zip=> 检查压缩包是否被损坏unzip files.zip=> 解压压缩包到当前目录下unzip files.zip -d dir=> 解压压缩包到指定目录下dir
gzip && gunzip
作用
压缩/解压文件,以.gz后缀结尾,对文本的压缩比率通常能够达到60% ~ 70%
案例
gzip file=> 压缩file文件,默认压缩后的文件名为该文件名加上对应的后缀,即:file.gz。与此同时,原文件将被删除gzip -r dir=> 压缩dir目录,但是dir目录不会被压缩,切换进该目录后,发现该目录下所有文件单独被压缩了,命名方式如上,且各个文件都会被删除gzip -l *=> 查看当前目录下所有压缩包的信息,包括压缩比率gzip -dv file.gzorgunzip -v file.gz=> 解压指定压缩包文件,并且显示操作过程-v,如果存在同名文件则会被覆盖gzip -dr dirorgunzip -r dir=> 递归解压该目录下的所有压缩包文件gzip -k file=> 压缩指定文件,但是不删除原文件gunzip -t file.gz=> 测试指定压缩包文件内容是否被损坏
uname
作用
显示系统信息
参数
a=> 系统所有相关信息m=> 计算机硬件架构n=> 主机名称r=> 内核发行版本号s=> 内核名称,如果直接使用uname命令,则默认加上该参数v=> 内核版本p=> 处理器类型o=> 操作系统名称i=> 硬件平台
案例
uname -a=> 显示系统主机名、内核版本、硬件架构等全部信息uname -n=> 显示系统主机名uname -r=> 显示内核发行版本号- ……
hostname
作用
显示和设置系统的主机名
案例
hostname=> 显示主机名sudo hostname newname=> 临时改变主机名,系统重启后失效hostname -I=> 显示主机的所有IP地址
永久修改系统主机名
方法1:修改配置文件
sudo vim /etc/hostname=> 修改其中内容sudo vim /etc/hosts=> 将其中当前的主机名修改为想要更新为的主机名
方法2:hostnamectl命令
sudo hostnamectl set-hostname newhostname=> 利用命令设置新主机名sudo vim /etc/hosts=> 将其中当前的主机名修改为想要更新为的主机名
不难发现,两个方法中的第一步最终导致的结果是等价的,第二步是完全相同且必不可少的
dmesg
作用
显示开机信息
开机信息一般保存在内核的环形缓冲区中:/var/log/dmesg
案例
dmesg=> 显示开机信息dmesg | less=> 用less进行分页查看dmesg | grep -i memory=> 显示与内存相关的信息dmesg | grep -i usb=> 显示与usb相关的信息dmesg -x=> 显示信息级别,如:alert, err, warn, info, debug......dmesg --level=err,warn=> 只显示指定级别的信息dmesg -T=> 显示时间戳dmesg -r=> 显示原始数据sudo dmesg -c=> 清空dmesg环形缓冲区中的日志
uptime
作用
查看系统启动时间及负载信息
案例
uptime=> 显示当前系统运行负载信息uptime -p=> 显示系统正常运行的时间uptime -s=> 显示系统启动时间
free
作用
显示系统内存使用量情况
参数
b=> 以Byte显示内存使用情况k=> 以kb显示内存使用情况m=> 以mb显示内存使用情况g=> 以gb显示内存使用情况s=> 持续显示t=> 显示内存使用总和h=> 以易读的单位显示内存使用情况
输出内容介绍
Mem行(第二行)是内存的使用情况Swap行第三行是交换空间的使用情况total列显示系统总的可用物理内存和交换空间used列显示已经被使用的物理内存和交换空间free列显示还有多少物理内存和交换空间可供使用shared列显示被共享使用的物理内存大小buff/cache列显示被buffer和cache使用的物理内存大小available列显示还可以被应用程序使用的物理内存大小
案例
free=> 以默认的容量单位显示内存使用量情况free -m=> 以mb为单位显示free -h=> 以易读的单位显示(不统一单位,而是某个数字在哪个单位下易读就以哪个为单位显示)free -hs 3=> 以易读的单位显示,每3秒刷新一次
ulimit
作用
Shell的内建命令,用来控制Shell程序的资源,以达到系统调优的作用
参数
-a=> 显示目前资源限制的设定-c <core文件上限>=> 设定core文件的最大值,单位为区块-d <数据节区大小>=> 程序数据节区的最大值,单位为kb-f <文件大小>=>Shell所能建立的最大文件,单位为区块-H=> 限制资源的硬性限制,也就是管理员所设下的限制-m <内存大小>=> 指定可使用的内存上限,单位为kb-n <文件数目>=> 指定同一时间最多可开启的文件数-p <缓冲区大小>=> 指定管道缓冲区的大小,单位为512字节-s <堆栈大小>=> 指定堆栈上限,单位为kb-S=> 设定资源的弹性限制-t <CPU时间>=> 指定CPU使用时间的上限,单位为秒-u <程序数目>=> 用户最多可开启的程序数目-v <虚拟内存大小>=> 指定可使用的虚拟内存上限,单位为kb
案例
ulimit -a=> 显示系统资源的所有设置ulimit -n 2048=> 将每个进程可以打开的文件数目加大到2048
init
作用
切换系统运行级别
案例
init 0=> 关机init 1=> 单用户模式init 2=> 多用户,没有NFS不联网init 3=> 多用户-命令行模式init 4=> 没有用到init 5=> 图形化界面模式init 6=> 重新启动
service
作用
控制系统服务,可以启动、停止、重新启动甚至直接关闭某个系统服务
案例
service --status-all=> 查看系统中所有服务现在的状态service sshd status=> 查看sshd运行状态service sshd start=> 启动sshd服务service sshd stop=> 停止sshd服务service sshd restart=> 重启sshd服务
vmstat
作用
显示虚拟内存状态,显示系统的进程、内存等整体的运行状态
案例
vmstat=> 显示虚拟内存使用情况vmstat 1 3=> 每隔1秒采样一次,总共采样3次vmstat -a=> 显示活跃和非活跃内存统计信息vmstat -f=> 显示从系统启动以来的fork数量vmstat -s=> 显示详细信息vmstat -d=> 显示磁盘相关的信息(读/写情况)vmstat -p /dev/sda1=> 查看/dev/sda1这个磁盘分区的读/写情况sudo vmstat -m=> 显示系统的slabinfo
iostat
作用
监视系统输入输出设备和CPU使用情况
案例
iostat=> 显示所有设备负载情况iostat 2 3=> 每隔2秒显示一次,总共显示3次iostat -d sda1=> 显示指定磁盘信息iostat -t=> 显示tty和cpu信息iostat -m=> 以M为单位显示iostat -d -k 1 1=> 查看tps和吞吐量信息iostat -x /dev/sda1=> 查看磁盘I/O详细情况iostat -d -x -k 1 1=> 查看设备使用率չ、响应时间await`iostat -c 1 3=> 查看CPU状态
ipcs
作用
显示进程间通信设备的状态,包括消息队列、共享内存以及信号量的信息
案例
ipcsoripcs -a=> 显示所有的IPCipcs -t=> 输出信息的详细变化时间ipcs -p=> 输出IPC方式的进程IDipcs -c=> 输出IPC方式的创建者/拥有者ipcs -u=> 输出当前系统下IPC各种方式的状态信息ipcs -l=> 查看各个资源的系统限制信息
ipcrm
作用
删除一个或更多的消息队列、信号量集或者共享内存标识,同时将其(IPC对象)所关联的数据一并删除
只有超级用户以及IPC对象的创建者有权限删除
注意:删除可能用到的id或key需要通过ipcs -c或ipcs查看
案例
ipcrm -m id=> 通过id删除共享内存ipcrm -M key=> 通过key删除共享内存ipcrm -q id=> 通过id删除消息队列ipcrm -Q key=> 通过key删除消息队列ipcrm -s id=> 通过id删除信号量ipcrm -S key=> 通过key删除信号量ipcrm -a=> 删除所有共享内存、消息队列和信号量ipcrm -v -a=> 删除所有共享内存、消息队列和信号量,并且显示过程
route
作用
显示并设置IP路由表
参数
-n=> 不要使用通讯协议或主机名称,直接使用IP或port number-net=> 表示后面接的路由为一个网域-host=> 表示后面接的为连接到单部主机的路由netmask=> 与网域有关,可以设定netmask决定网域大小gw=>gateway的缩写,后续接的是IP的数值,与dev不同dev=> 表示路由必须要经过的网关,后面接eth0等
flag
U(Up)=> 表示此路由当前为启动状态H(Host)=> 表示此网关为一主机G(Gateway)=> 表示此网关为一路由器R(Reinstate Route)=> 使用动态路由重新初始化的路由D(Dynamically)=> 此路由是动态性地写入M(Modified)=> 此路由是由路由守护进程或导向器动态修改!=> 表示此路由当前为关闭状态
案例
routeorroute -n=> 显示当前路由sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev ens33=> 添加网关/设置网关sudo route add -net 224.0.0.0 netmask 240.0.0.0 reject=> 屏蔽一条路由sudo route del -net 224.0.0.0 netmask 240.0.0.0orsudo route del -net 224.0.0.0 netmask 240.0.0.0 reject=> 删除路由记录
ping
作用
测试主机间网络连通性,测试网速等
参数
-c=> 指定发送报文的次数-i=> 指定收发信息的间隔时间-s=> 设置数据包的大小-t=> 设置存活数值TTL的大小- -
Linux系统的TTL值为64或255Windows NT/2000/XP系统的TTL值为128Windows 98系统的TTL值为32UNIX主机的TTL值为255
案例
ping www.baidu.com=> 测试与www.baidu.com网站的连通性ping -c 4 www.baidu.com=> 连续ping四次ping -c 4 -i 3 www.baidu.com=> 连续ping四次,每次之间间隔三秒ping <IP Address>=> 测试局域网连通性<br>例如:测试局域网与物理机之间的网络连通性,需要提前知道物理机的IP地址是多少ping -s 1024 -t 255 www.baidu.com=> 设置数据报为1024字节,TTL为255
traceroute
作用
追踪数据包在网络上传输时的全部路径
试图以最小的TTL发出探测包来追踪数据包到达目的主机所经过的所有网关,然后监听来自网关ICMP的应答。一条路径上,每个设备traceroute都会测三次
案例
traceroute www.baidu.com=> 追踪本地数据包到百度的传输路径traceroute -m 7 www.baidu.com=> 追踪指定量的跳数traceroute -n www.baidu.com=> 显示IP地址而非主机名traceroute -q 4 www.baidu.com=> 设置探测包的个数traceroute -w 3 www.baidu.com=> 设置对外发探测包的等待时间,以秒为单位traceroute -p 6888 www.baidu.com=> 设置基本UDP端口traceroute -r www.baidu.com=> 绕过正常的路由表,直接发送到网络相连的主机
ifconfig
作用
显示或设置网络设备参数信息
通常不建议直接使用ifconfig命令来修改配置网络信息,因为一旦重启,配置过的参数就会失效
案例
ifconfig=> 显示网络设备信息sudo ifconfig eth0 up/sudo ifconfig eth0 down=> 打开/关闭指定网卡sudo ifconfig eth0 192.168.1.56=> 为网卡eth0配置IP地址sudo ifconfig eth0 192.168.1.56 netmask 255.255.255.0=> 为网卡eth0配置IP地址与子网掩码sudo ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255=> 为网卡eth0配置IP地址、子网掩码以及广播包sudo ifconfig eth0 add <IPv6 Address>=> 为网卡设置IPv6地址sudo ifconfig eth0 del <IPv6 Address>=> 为网卡删除IPv6地址sudo ifconfig eth0 down<br>sudo ifconfig eth0 hw ether <MAC Address><br>sudo ifconfig eth0 up<br>先关闭,然后修改MAC地址,最后再启动sudo ifconfig eth0 arp/sudo ifconfig eth0 -arp=> 启动/关闭ARP协议sudo ifconfig eth0 mtu 1500=> 设置最大传输单元为1500字节
ifup && ifdown
作用
激活/禁用网络接口
案例
sudo ifup eth0=> 激活eth0网络接口sudo ifdown eth0=> 关闭eth0网络接口
netstat
作用
显示网络状态,包括路由表、实际网络连接、每一个网络接口等
案例
netstat -a=> 显示系统网络状态中的所有连接信息netstat -at=> 显示TCP连接信息netstat -au=> 显示UDP连接信息netstat -p=> 显示PID和进程名netstat -l=> 显示监听端口netstat -lt=> 显示TCP监听端口netstat -lu=> 显示UDP监听端口netstat -lx=> 显示UNIX监听端口netstat -s=> 显示所有端口的统计信息netstat -st=> 显示TCP端口的统计信息netstat -su=> 显示UDP端口的统计信息netstat -apu=> 显示UDP连接端口号使用信息netstat -i=> 显示网卡当前状态信息netstat -r=> 显示网络路由表状态信息netstat -ap | grep ssh=> 找到某个服务器所对应的连接信息
ss
作用
显示活动套接字信息
参数
-n=> 不解析服务名称,以数字方式显示-a=> 显示所有套接字-l=> 显示处于监听状态的套接字-o=> 显示计时器信息-e=> 显示详细的套接字信息-m=> 显示套接字的内存使用情况-p=> 显示使用套接字的进程-i=> 显示内部的TCP信息-s=> 显示套接字使用概况-4=> 仅显示IPv4的套接字-6=> 仅显示IPv6的套接字-O=> 显示PACKET套接字-t=> 仅显示TCP套接字-u=> 仅显示UDP套接字-d=> 仅显示DCCP套接字-w=> 仅显示RAW套接字-x=> 仅显示UNIX套接字-D=> 将原始TCP套接字信息转储到文件
案例
ss -at=> 显示TCP套接字ss -au=> 显示UDP套接字ss -s=> 显示套接字使用概况ss -l=> 列出所有打开的网络连接端口ss -lp=> 查看进程使用的socketss -lp | grep 6010=> 找出打开套接字/端口的应用程序ss -tnl=> 查看主机监听的端口ss -tlr=> 解析IP和端口号
telnet
作用
远程登入服务器,但是它采用的是明文的传送报文,安全性不强
案例
telnet <address>=> 远程登录telnet <address> <port>=> 指定端口
ssh
作用
远程连接工具,使用ssh加密协议,安全性高
配置文件:/etc/ssh/sshd_config
案例
ssh <address>=> 远程登录ssh <username@address>orssh -l <username@address>=> 以username身份远程登录ssh -p <port> <username@address>=> 指定端口号及用户名远程登录ssh <address> date=> 远程执行命令,并且在终端返回结果
ftp
作用
文件传输协议客户端工具,数据未加密,安全性不高
增加ftp写权限
sudo gedit /etc/vsftpd.conf- 去除
#write_enable=YES前的#,即去除该行的注释符号 sudo service vsftpd restart
案例
ftp <address>=> 建立FTP连接get file=> 下载文件mget file1 file2=> 下载多个文件put file=> 上传文件mput file1 file2=> 上传多个文件
sftp
作用
交互式的文件传输工具,数据使用ssh加密,安全性高
案例
sftp <username@address>=> 连接服务器sftp -P <port> <username@address>=> 指定端口helpor?=> 查看支持的命令get file=> 从远程服务器下载文件get -r dir=> 从远程服务器下载目录put file=> 从本地上传文件put -r dir=> 从本地上传目录!command=> 执行本地Shell命令,如:!echo hello worldbyeorexit=> 退出连接
lftp
作用
功能强大的下载工具,支持很多协议:ftp, ftps, http, https...
界面及功能非常像Shell,允许多个后台任务执行,书签排队,镜像,断点续传,多线程下载等
案例
lftp <username@address>=> 远程登录helpor?=> 查看支持的命令get fileormget file*ormget -c *.txt=> 下载文件/多个文件到本地<br>如果文件已存在,会报错,不会覆盖,但不会影响其它文件传输<br>-c=> 断点续传,如果网络不稳定,或者文件比较大,下次下载的时候就可以直接在上一次传输的中途继续下载mirror dir=> 下载目录到本地put fileormput *=> 从本地上传文件/多个文件mirror -R dir=> 从本地上传目录byeorexit=> 退出连接
wget
作用
从指定的url上去下载文件,支持断点下载
如果下载的内容与已存在的内容重名了,那么新下载的内容会自动在文件名末尾添加.1之类的标识以区分
参数
-i=> 下载指定文件里列出的地址-O=> 下载后重命名文件-c=> 打开断点续传-b=> 启动后转入后台执行-P=> 指定保存路径
案例
wget https://...=> 下载单个文件vim urllist<br>wget -i urllist<br>=><br>在urllist文件中键入所有需要下载的文件的地址,然后使用-i参数从文件里列出的地址一一下载wget -O rename https://...=> 将下载的文件重命名为renamewget -P dir https://...=> 将下载的文件保存到指定的目录dirwget --limit-rate=300k https://...=> 限速下载wget -c https://...=> 打开断点续传<br>比如:下载到一半,由于网络因素等原因断开了连接(手动用ctrl + c来模拟),等问题排除后再一次运行相同的命令,下载不会从0%开始,而是继续从中断的位置往后下载wget -b https://...=> 后台下载<br>tail -f wget-log=> 查看下载进度
scp
作用
远程拷贝文件
案例
scp username@IP_Address:~/file ~=> 从远程服务器指定用户的家目录下的file文件,下载到本地的家目录下scp -r username@IP_Address:~/dir ~=> 从远程服务器指定用户的家目录下的dir目录及其下的所有文件,下载到本地的家目录下scp ~/file username@IP_Address:~=> 从本地上传file文件到远程服务器指定用户的家目录下scp -r ~/dir username@IP_Address:~=> 从本地上传dir目录及其下的所有文件到远程服务器指定用户的家目录下scp -P 2222 ......=> 使用指定端口号2222进行传输scp -p ......=> 保留文件的最后修改时间及访问时间
curl
作用
数据传输工具
参数
-o=> 指定新的本地文件名-O=> 保留远程文件的原始名-u=> 通过服务端配置的用户名和密码授权访问-I=> 打印HTTP响应头信息-A=> 设置用户代理标头信息-b=> 设置用户cookie信息-C=> 支持断点续传-s=> 静默模式,不输出任何信息-T=> 上传文件
案例
curl www.baidu.com=> 获取指定网站的网页源码curl -o baidu.html www.baidu.com=> 保存网页curl -O https://...=> 下载指定网站中的文件curl -o test.zip https://...=> 下载并重命名为test.zipcurl -C - -O https://...=> 断点续传curl -I https://...=> 打印指定网站的HTTP响应头文件curl -u user:passwd ftp://...=> 通过ftp下载指定文件服务器中的文件curl -T file -u user:passwd ftp://...=> 将本地的file文件通过ftp上传到指定的文件服务器中的指定目录下
host
作用
域名查询,测试域名系统工作是否正常
案例
host www.baidu.com=> 查询域名对应的IP地址host -v www.baidu.com=> 显示执行域名查询的详细信息host -a www.baidu.com=> 显示详细的DNS信息
tcpdump
作用
监听网络流量,能够记录所有经过服务器的数据包的信息,运行该命令需要管理员权限
案例
tcpdump=> 监视第一个网络接口上所有流过的数据包tcpdump -i eth0=> 监视指定网络接口的数据包<br>通过ifconfig来查看当前系统下有哪些网络接口tcpdump -c 20=> 显示指定数量的包tcpdump -c 10 -q=> 以精简模式显示指定数量的包tcpdump host <Hostname>=> 监视指定主机的数据包(主机名)tcpdump host <IP Address>=> 监视指定主机的数据包(IP地址)tcpdump -i any port 22 -A=> 监听指定端口号的数据包,并以文本形式展示
nc
作用
设置路由器,支持测试Linux的TCP和UDP端口,也经常被使用于端口的扫描
参数
-v=> 显示执行过程-w<超时秒数>=> 设置等待连线的时间-z=> 使用0输入/输出模式,只在扫描通信端口使使用-n=> 直接使用IP地址,而不通过域名服务器-u=> 使用UDP传输协议-l=> 使用监听模式,管控传入的资料
案例
nc -v -z -w2 <IP Adress> 1-100=> 扫描指定IP的TCP端口,范围为1-100nc -u -z -w2 <IP Adress> 1-100=> 扫描指定IP的UDP端口,范围为1-100nc -nvv <IP Adress> <port>=> 扫描指定端口nc -l <port>=> 监听某个端口nc <IP Adress> <port>=> 连接某个端口
useradd
作用
创建并设置账户信息
参数
-d<登入目录>=> 指定用户登入时的目录-g<群组>=> 初始群组-G<群组>=> 非初始群组-m=> 自动创建用户的家目录-M=> 不要创建用户的家目录-N=> 不要创建以用户名为名的群组-s=> 指定用户登入后所使用的Shell
重要文件
/etc/passwd=> 记录用户的信息<br>记录的格式:<username>:<password>:<userID>:<groupID>:<注释信息>:<家目录>:<shell>,其中,password是隐藏的,用x代替显示/etc/shadow=> 每个用户经过加密后的密码,如果没设置密码用!表示/etc/group=> 组信息/etc/gshadow=> 组对应的密码信息,一般不对其设置,除非需要很高的安全性
案例
useradd user1=> 直接创建新用户,用户名为user1useradd -m -s /bin/bash user2=> 常用创建方式useradd -m -d /new/dir user3=> 指定家目录useradd -u 1500 user4=> 指定用户IDuseradd -g <group> user5=> 指定组IDuseradd -g <group> -G <group1,group2> user6=> 分配多个组useradd -c "Test User Account" user7=> 自定义注释
adduser
作用
创建用户账户,与useradd不同的是,adduser是一个人机交互的过程,会一步步引导你输入对应的信息,而useradd如果不自己手动添加参数或后续设置,将创建一个三无账户
案例
adduser => 根据交互内容,一步步输入信息以创建账户
passwd
作用
修改用户的密码
参数
-d=> 删除已有密码-l=> 锁定密码,不允许修改-u=> 解除锁定,允许修改-e=> 下次登录强制修改密码-k=> 用户在期满后仍能使用-S=> 查询密码状态
案例
passwd=> 修改当前用户的密码passwd username=> 修改指定用户的密码(需要有管理员权限,同时还得知道该用户当前的密码)
userdel
作用
删除用户账户
案例
userdel username=> 删除指定的用户账户信息userdel -r username=> 删除指定的用户账户信息、家目录及其目录下所有文件
su
作用
切换用户身份
案例
suorsu root=> 切换超级用户(某些系统不允许你切换超级用户)su -c whoami username=> 变更账号为username,在执行完whoami这一条命令后立即退出su username=> 变更账号为username并保留在当前工作目录su - username=> 变更账号为username,同时切换到对应的家目录
sudo
作用
以系统管理员身份执行指令
配置文件
/etc/sudoers
查看配置文件:<br>sudo visudo<br>or<br>sudo vim /etc/sudoers
案例
sudo -l=> 列出当前用户的权限sudo -u username whoami=> 指定以username这一身份去执行whoami这一条命令,默认情况下不加-u则是以管理员身份执行sudo !!=> 以管理员权限执行上一条命令
id
作用
显示用户ID和组ID
案例
id=> 显示当前用户的所有信息id username=> 显示指定用户信息id -g username=> 显示指定用户所属组群的IDid -G username=> 显示指定用户所属附加组群的ID
参数后不加用户名,则默认显示当前用户的信息
usermod
作用
修改用户账户信息
参数
-c <备注>=> 修改用户账户的备注文字-d <登入目录>=> 修改用户登录时的家目录-e <有效期限>=> 修改账号的有效期限-f <缓冲天数>=> 修改在密码过期后多少天即关闭该账号-g <群组>=> 修改用户所属的群组-G <群组>=> 修改用户所属的附加群组-l <账号名称>=> 修改用户账号名称-L=> 锁定用户密码,使密码无效-s <Shell>=> 修改用户登录后所使用的Shell-u <uid>=> 修改用户ID-U=> 解除密码锁定
案例
usermod -d /home/hometest username=> 将账户username的家目录更改为/home/hometestusermod -u 1234 username=> 将账户username的ID更改为1234usermod -l newname oldname=> 将账户oldname更名为newnameusermod -L username=> 锁定账户usernameusermod -U username=> 解锁账户username
groups
作用
显示用户加入的所有的用户组
案例
groups username => 显示用户username加入的所有的用户组
groupadd
作用
创建新的用户组
案例
groupadd work=> 创建一个名为work的用户组groupadd -g 1234 work=> 创建一个名为work,用户组组ID为1234的用户组groupadd -r grouptest=> 创建一个新的用户组,并将其设定为系统工作组
系统工作组GID定义在文件/etc/login.defs,字段是SYS_GID_MIN和SYS_GID_MAX,前者默认100,后者默认999,可自行修改
groupdel
作用
删除用户组
案例
groupdel groupname => 将用户组groupname删除
whoami
作用
打印当前登录的用户
案例
whoami => 查询当前登录的用户名
who
作用
查看当前登录至系统的所有用户的信息
一个终端登入就算一个,所以查询得到的结果可能包含多个相同用户
案例
who=> 查看当前登录至系统的用户信息who -H=> 查看当前登录至系统的用户信息,并加上标题栏who -H -a=> 查看当前登录至系统的全部用户信息who -b=> 查看系统的最近启动时间who -T -H=> 显示终端属性who -q=> 以精简模式显示
w
作用
显示已登入系统的用户列表,同时显示用户正在执行的命令
案例
w=> 显示目前登入系统的用户列表w -h=> 不打印标题栏w -f=> 显示/不显示用户从哪登录w -s=> 使用短格式输出
last
作用
显示用户或终端的登录情况,可以看出谁曾经或企图登录系统
参数
-R=> 省略hostname的栏位-a=> 把从何处登入系统的主机名或IP地址显示在最后一行-n <显示行数>or-<显示行数>=> 指定显示个数-i=> 显示IP地址而不是主机名
案例
last=> 显示近期用户或终端的登录情况last -n 5 -Rorlast -5 -R=> 简略显示,并指定显示个数last -n 5 -a -i=> 最后一列显示主机IP地址
users
作用
显示当前登录至系统的用户
一个终端登入就算一个,所以查询得到的结果可能包含多个相同用户
案例
users => 显示当前登录至系统的用户
top
作用
实时显示动态进程
参数
-d=> 指定每两次屏幕信息刷新之间的时间间隔(单位为秒)-c=> 切换显示命令名称和完整命令行-p=> 通过指定监控进程ID来仅仅监控某个进程的状态-n=> 信息更新最大次数
快捷键
c=> 显示进程绝对路径P=> 根据CPU使用率排行M=> 根据物理内存使用率排行1=> 显示每个核的CPU状况
案例
top=> 实时显示进程动态top -c=> 显示完整的进程信息<br>与直接top打开后按快捷键c等效top -d 5=> 指定信息刷新时间间隔为5秒top -p 1877=> 仅监控进程ID为1877的进程动态top -n 2=> 设置信息刷新次数
ps
作用
显示进程状态
参数
-A=> 显示所有进程-a=> 显示所有终端机下执行的程序-x=> 通常与-a一起使用,可以列出较为完整的信息-e=> 列出程序时,显示每个程序所使用的环境变量-f=> 用ASCII字符显示树状结构,表达程序间的相互关系-u <用户识别码>=> 列出属于该用户的程序的状况,也可以使用用户名称来指定
信息说明
USER=> 用户名称PID=> 进程号%CPU=> 该进程所占用的CPU百分比%MEM=> 该进程所占用的内存百分比VSZ=> 该进程所占用的虚拟内存大小RSS=> 进程所占用的实际内存大小TTY=> 该进程运行在哪个终端上,若与终端无关,则显示STAT=> 进程状态:- -
R=> 运行S=> 可中断睡眠D=> 不可中断睡眠T=> 停止Z=> 僵死
START=> 进程启动时间TIME=> 进程实际占用CPU的时间COMMAND=> 该进程对应的执行程序
案例
ps -aux=> 列出目前所有的正在内存当中的程序<br>内容较多不方便查看的话可以通过管道给less打开:ps -aux | lessps -A=> 显示所有进程信息ps -ef=> 显示所有进程信息,连同命令行ps -axf=> 树形显示所有进程ps -aux | grep ssh=> 查找特定进程信息ps -u username=> 显示指定用户信息ps -aux | sort -rnk 3=> 依据处理器使用量(第三列)的情况降序排序
pstree
作用
以树状图显示进程
案例
pstree=> 以树状图显示进程pstree -a=> 显示该进程的完整指令及参数,遇到相同的进程名可以压缩显示pstree -p=> 显示当前所有进程的进程号和进程IDpstree -u=> 同时显示用户名
pgrep
作用
检索当前正在运行的进程
参数
-d=> 设置一个字符串,用于分隔输出的每个进程ID-f=> 匹配进程名(绝对路径)-l=> 列出进程名及其进程ID-u=> 选择仅匹配指定有效用户进程-a=> 显示更多内容
案例
pgrep sshd=> 查找sshd进程的pidpgrep sshd -d' '=> 指定分隔符输出<br>此时显示为一行,每个pid之间用空格隔开pgrep -u username sshd=> 查询用户username启动的sshd进程的pidpgrep -l sshd=> 显示进程名及pidpgrep '^sshd$' -l=> 使用正则表达式pgrep -f ssh=> 匹配进程名(绝对路径中是否包含某字符串)
lsof
作用
查看进程打开的文件
参数
-a=> 列出打开文件存在的进程-c <进程名>=> 列出指定进程打开的文件-g=> 列出GID号进程详情-d <文件号>=> 列出占用该文件号的进程+d <目录>=> 列出目录下被打开的文件+D <目录>=> 递归列出目录下被打开的文件-n <目录>=> 列出使用NFS的文件-i <条件>=> 列出符合条件的进程-p <进程号>=> 列出指定进程号打开的文件-u=> 列出UID号进程详情
案例
lsof=> 查看当前系统中全部文件与进程之间的对应信息<br>若查询结果出现unknown,说明这一条信息需要管理员权限lsof +d /home=> 显示指定目录中被调用的文件信息lsof +D /home=> 递归显示指定目录中全部被调用的文件信息lsof /bin/bash=> 查看谁正在使用某个文件(查找某个文件相关的进程)lsof -u username=> 列出某个用户打开的文件信息lsof -c bash=> 列出某个进程所打开的文件信息lsof -p 1930=> 通过某个进程号显示该进程打开的文件lsof -d 1=> 根据文件描述列出对应的文件信息
jobs && bg && fg
作用
终端任务调度
案例
jobs -l=> 列出当前Shell的任务fg 2=> 将2号任务调到前台运行ctrl + z=> 将当前进程切到后台,但状态会停止Stoppedbg 2=> 恢复2号任务在后台运行(可以唤醒Stopped为Running)kill %3=> 杀死3号任务,状态更改为Terminated<br>直接kill 3会报错,因为这代表另外的含义,具体可见下一节内容<br>上述命令中的fg/bg后接的编号前也可以加%
kill
作用
发送信号到进程
常用信号
HUP 1=> 终端断线INT 2=> 中断,同ctrl + cQUIT 3=> 退出,同ctrl +TERM 15=> 终止KILL 9=> 强制终止CONT 18=> 继续,与STOP相反STOP 19=> 暂停,同ctrl + z
案例
kill -l=> 列出系统支持的所有信号kill 1951=> 不指定信号,通过进程号来终止某一个进程,等同于发送终止信号<br>有的进程可能会忽略这个信号从而不终止,此时需要发送强制终止:kill -9 1951kill -l KILL=> 查看KILL这个信号对应的数值kill -9 $(ps -ef | grep username)=> 杀死指定用户username的所有进程
killall
作用
杀死一个或一组命令
案例
killall sleep=> 杀死所有名为sleep的进程killall -l=> 查看killall支持的所有信号killall -9 sleep=> 发送指定信号killall -u username=> 杀死指定用户的所有进程
nice && renice
作用
调整进程的优先级
案例
ps -l=> 查看nice值,即标题为NI的列nice -n 15 vim &ornice -15 vim &=> 启动vim命令在后台运行,同时将它的nice值设为15<br>nice值可设置范围在-20 ~ 19<br>注意:-n 15是直接设置为15,而-15是在原值的基础上增加15renice 6 -p 5200=> 根据pid重新设置nice值为6renice -5 -u username=> 根据用户名重新设置nice值为-5
nohup
作用
后台运行程序
案例
- 有一个每隔1秒打印一段文字的程序:
https://learnblockchain.cn/index.php/article/test<br>在后台运行:https://learnblockchain.cn/index.php/article/test &,但是输出的文字还是会占用终端,而且,在关闭终端后该进程也将终止<br>与终端切断关联:nohup https://learnblockchain.cn/index.php/article/test &,同时,输出的内容将会保存到test程序同级目录下的nohup.out文件中 nohup https://learnblockchain.cn/index.php/article/test > file 2>&1 &=> 将输出重定向到file文件中<br>其中,2>&1表示:将标准错误输出重定向到标准输出中,而标准输出又被重定向到了file文件,所以,该进程产生的所有输出都将被重定向到file文件<br>但是,运行后立即cat file将发现没有任何内容,因为它存在一定缓存,需要到一定量才会输出到文件,过一会儿后再查看,会发现里面存在内容
apt
作用
包管理器
案例
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=> 列出已安装的所有软件包
apt-get
作用
包管理器
与apt异同点
最初,包管理器被分散在apt-get, apt-cache, apt-config这三个命令中,而apt包管理则是为了解决命令过于分散的问题,它相当于是这三个中最常用命令选项的集合
apt视觉功能更好
apt替换了部分apt-get系列命令,同时也有它独有的新增的命令
选择
建议尽快适应并首选apt
export
作用
设置或显示环境变量
环境变量指:在操作系统当中,用来指定操作系统运行的环境的一些参数,例如:PATH,它用来保存可以搜索的目录、路径,可以通过echo $PATH查看
参数
-f=> 代表<变量名称>中为函数名称-n=> 删除指定的变量<br>实际上未被删除,只是不会输出到后续指令的执行环境中-p=> 列出所有的Shell赋予程序的环境变量
注意
export的作用效果仅限于本次登录- 想要永久生效需要修改配置文件:
- -
/etc/profile=> 所有用户~/.bashrc=> 当前用户
案例
export -p=> 列出当前所有的环境变量export MYENV=> 定义环境变量export MYENV=666=> 定义环境变量并赋值export PATH=$PATH:/usr/local/mysql/bin=> 修改环境变量echo $PATH=> 查看环境变量
source
作用
在当前Shell环境中从指定文件读取和执行命令,例如:在修改配置文件后,将其source一下,就能使其生效,而不是重启
可以使用.来替代
案例
source ~/.bashrcor. ~/.bashrc=> 读取和执行.bashrc文件source /etc/profile=> 执行刚修改的初始化文件,使之立即生效
set && unset
作用
设置/删除Shell变量
案例
set=> 显示所有的Shell变量- 1.
declare myenv="666"=> 定义一个新的变量set -a myenv=> 将定义的变量输出到环境变量env | grep myenv=> 查看是否设置成功
unset -v myenv=> 删除环境变量<br>注意:参数-v表示仅删除变量,参数-f表示仅删除函数unset myenv=> 优先删除变量
echo
作用
在终端输出字符串
参数
-n=> 不输出结尾的换行符-e "a"=> 发出警告音-e "b"=> 删除前面一个字符-e "c"=> 结尾不加换行符,同时,c后面的字符不会输出-e "f"=> 换行,光标仍停留在原来的坐标位置-e " "=> 换行,光标移到行首-e " "=> 光标移到行首,但不会换行,会覆写行开头的字符-E=> 禁止反斜杠转译,与-e参数功能相反
案例
echo "Hello World"orecho Hello World=> 在终端输出Hello Worldecho $PATH=> 输出变量提取后的值echo $PATH=> 取消转译echo "Hello echo" > file=> 重定向输出-
讯享网
echo `date` # 显示命令执行结果 echo -e "a b c"=> 输出带有换行符的内容(开启转译)
printf
作用
格式化并输出结果
转译字符
a=> 警告字符,通常为ASCII的BEL字符b=> 后退c=> 不显示输出结果中任何结尾的换行符,而且任何留在参数里的字符,任何接下来的参数以及任何留在格式字符串中的字符都被忽略f=> 换页=> 换行=> 回车=> 水平制表符v=> 垂直制表符\=> 反斜杠字符
格式替代符
%c=>ASCII字符,显示相对应参数的第一个字符%d %i=> 十进制整数%E=> 浮点格式%e=> 浮点格式%g=>%e和%f之间转换,看哪一个较短,则删除结尾的零%G=>%E和%f之间转换,看哪一个较短,则删除结尾的零%s=> 字符串- `祏gt; 不带正负号的十进制整数
%x=> 不带正负号的十六进制,使用a ~ f来表示10 ~ 15%%=> 字面意义的%%X=> 不带正负号的十六进制,使用A ~ F来表示10 ~ 15
案例
printf "%d %s %d " 666 "Hello printf" 999=> 常见格式化字符,输出:666 Hello printf 999printf "%-10s%-8s%-4.2f " first second 1.1234=> 输出:first second 1.12<br>%10s=> 该字符串宽度为10,若字符串长度不足则在字符串前用空格补齐<br>%-10=> 含义同上,只不过当长度不足时在字符串后用空格补齐<br>%-4.2f=> 该浮点数的整数部分最多显示四位,小数部分最多显示两位,-表示左对齐,所以1.1234格式化后为1.12
clear
作用
清除屏幕
history
作用
显示并管理历史命令
参数
-c=> 清空命令记录-d=> 删除指定序号的命令记录-n=> 读取命令记录
案例
history=> 显示执行过的全部命令记录history 5=> 显示执行过的最近5条命令!2039=> 重新执行2039号命令!!=> 重新执行上一条命令!ls=> 将搜索与你输入相匹配的最近一个命令,并重新执行它ctrl + r=> 调用命令历史记录的递归搜索history -d 1234=> 删除特定序号的命令history -c=> 清空全部历史记录
login && logout
作用
登入/登出系统
exit
作用
退出终端/ssh连接
案例
exitctrl + d
xargs
作用
过滤器
参数
-n=> 多行输出-d=> 自定义一个定界符-I=> 指定一个替换字符串{}-t=> 打印xargs执行的命令-p=> 执行每一个命令时弹出确认
案例
cat file | xargs=> 多行输入单行输出,将换行符替换为空格cat file | xargs -n3=> 分成三列进行输出echo "hello:hello:hello" | xargs -d:=> 通过:进行分割,输出为hello hello helloecho "hello:hello:hello" | xargs -d: -p=> 执行每一个命令时弹出确认ls | xargs -t -I {} echo {}=> 将ls结果的每一行都作为参数给echo命令,用-t来打印xargs执行的命令find . -name "*.txt" | xargs -I {} mv {} dir=> 查找当前文件下的所有后缀为txt的文件,将它们移动到dir目录下cat url-list | xargs wget -c=> 使用wget下载url-list下所有的URL<br>如果添加-I是一行一行输送,而这里是整体输送
exec
作用
调用并执行指定命令
案例
exec -c echo hello world=> 调用并执行指定的命令,如果是在终端输入,那么在执行完后会退出终端find . -name "*.txt" -exec ls {} ;=> 结合find命令使用
alias && unalias
作用
设置/取消命令别名
案例
alias=> 查看系统已设置的别名alias "rm=rm -i"=> 给命令设置别名unalias rm=> 取消别名
type
作用
显示指定命令的类型
参数
-a=> 可以显示所有可能的类型,比如有些命令如pwd是Shell内建命令,同时也可以是外部命令-p=> 只返回外部命令的信息,相当于which命令-f=> 只返回Shell函数的信息-t=> 返回指定类型的信息
常见类型
alias=> 别名keyword=> 关键字,Shell保留字function=> 函数,Shell函数builtin=> 内建命令,Shell内建命令file=> 文件,磁盘文件,外部命令unfound=> 没有找到
案例
type -t ls=>aliastype -t cut=>filetype -t for=>keywordtype -t pwd=>builtintype -a pwd=> 显示包含该命令的所有位置
date
作用
显示或设定系统日期和时间
案例
date=> 以默认格式显示当前时间和日期date +"%Y%m%d %H:%M:%S"=> 以指定格式显示当前时间和日期date +"current: %D %T %P%thello world"=> 显示时间的同时加入更多信息date -d yesterday +"%Y%m%d"=> 显示昨天的日期<br>同理,也可以显示其它日期:next-month, last-year, 7 days...<br>日期加减操作:"+1 day", "-1 month", "+1 year"<br>这些设定都需要跟在参数-d后date --date "12:34:56"ordate -s "12:34:56"=> 设置日期与时间<br>不过,系统自带时间校准,如果与互联网时间不一致,会自动更新
cal
作用
显示日历
案例
calorcal -1=> 显示当前月份日历cal -3=> 显示近期3个月日历cal 5 2024=> 显示指定年月的日历cal -y 2024orcal 2024=> 显示指定年份的所有日历cal -j=> 显示自1月1日起到今天的天数
crontab
作用
定时执行任务(重复)
案例
crontab -e=> 创建、编辑计划任务crontab -l=> 查看当前用户的计划任务crontab -r=> 删除当前用户的计划任务(所有)- 计划任务实例(在通过
crontab -e打开后): - -
* * * * * /bin/ls=> 每一分钟执行一次/bin/ls3,15 * * * * /usr/bin/pwd=> 每个小时的第3和第15分钟执行/usr/bin/pwd30 0-23/3 * * * echo "Hello"=> 每天的0-23小时内,每隔3小时的第30分钟执行echo "Hello"<br>即:0:30, 3:30, 6:30, ...执行0 */2 * * * /etc/init.d/smb restart=> 每两个小时重启一次smb10 1 * * 6,0 /etc/init.d/smb restart=> 每周六周日的一点十分重启一次smb50 5 1,15 * * fsck /home=> 每月1号和15号的5点50分检查/home磁盘0 22 * * 0 ls=> 每周日晚上10点执行ls30 6 */10 * * ls=> 每月的1、11、21、31号的6点30执行ls* * * * * command依次表示分钟、小时、日期、月份、周,最后接上需要重复执行的命令
at && atq && atrm
作用
定时执行一次任务
案例
atq=> 查看系统中的等待作业at -d 1oratrm 1=> 删除系统中的编号为1的等待作业at 5 pm=> 创建一个作业等到5:00pm时执行,此时将进入交互式界面编写作业内容- - 例如:
echo Hello World……ctrl + d保存ctrl + c取消
at -f script.sh now=> 立即执行脚本at -f script.sh now+5 min=> 5分钟后执行脚本at -f script.sh 17:00=> 在17:00执行脚本at -f script.sh 11/06/2024=> 在2024年11月6号的当前时间点执行脚本
time
作用
显示命令执行时所消耗的时间
时间
real=> 挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其它进程所占用的时间片和进程被阻塞时所花费的时间user=> 进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其它进程和花费阻塞状态中的时间没有计算在内sys=> 花费在内核模式中的时间,代表在内核中执行系统调用所花费的时间,这也是真正由进程使用的CPU时间
案例
time date => 显示命令date的时间统计结果
watch
作用
周期性执行命令
案例
watch uptime=> 重复执行uptime命令(默认每2秒一次)watch -n 1 -d uptime=> 每隔1秒执行一次uptime,并高亮显示变化的数据watch -d 'ls -l | grep file'=> 监测当前目录中file文件的变化watch -n 1 "df -i; df"=> 监测磁盘inode和block数据变化情况
bc
作用
数字计算器
案例
bc=> 进入计算器- 计算:
- -
+-*/=> 加减乘除^=> 平方sqrt=> 平方根scale=> 设置小数位obase, ibase=> 进制转换
quit=> 退出- 通过管道计算:
- -
echo "scale=2;(3.141-1.717)/1" | bc=> 设置小数位计算结果<br>注意:这里必须小括号再除以一才能生效echo "obase=10;ibase=2;" | bc=> 二进制转十进制
ln
作用
为文件创建快捷方式
软链接:相当于Windows系统中的快捷方式,原始文件被移动或删除后,软链接的文件就无法使用
硬链接:将文件的inode属性块进行复制,将原始文件移动或删除后,硬链接文件依旧可以使用
案例
ln file hfile=> 创建硬链接ln -s file sfile=> 创建软链接
shutdown && halt && poweroff && reboot
作用
关闭/重启服务器
案例
- 立即关机:
- -
shutdown -h nowhalthalt -f(强制关机或重启)poweroff
- 立即重启
- -
shutdown -r nowrebootreboot -w(模拟重启过程,将过程写入到日志中)
shutdown -h 21:00=> 晚上11点关机shutdown +5 "System will shutdown after 5 minutes"=> 5分钟后关机,并且通知所有人shutdown -c=> 取消所有关机任务
一切皆文件!
- => 可读
- => 可写
- => 如果文件拥有该权限,则该文件可执行;如果目录拥有该权限,则可以切换目录
- => 无权限
在查看一个文件/目录权限的时候,通常会以这种形式展示:<br>除开第一个字母(后面会解释它的含义),可以将剩下的以三个一组,一共分为三组,从左到右依次表示:
- 该文件/目录的所有者对该文件/目录的权限
- 该文件/目录的所属组对该文件/目录的权限
- 不被上述两点包含的其他用户对该文件/目录的权限
- => 匹配0个或多个字符串
- => 严格匹配1个字符
- => 匹配4个字符当中的任意1个
- => 匹配这26个字符当中的任意一个<br>等匹配规则也是同理
- => 除了这3个字符外,可以匹配任意一个<br>效果等价,根据个人写法习惯选择即可
查看帮助手册
第一章: => 等常用的命令
第二章: => 等系统调用
第三章: => 等库函数
第四章: => 设备文件的说明,通常指的是目录下的文件
第五章: => 配置文件相关的说明文档,例如:
第六章: => 游戏相关
第七章: => 惯例与协议相关
第八章: => 系统管理员会使用到的命令,通常只开放给用户/权限
第九章: => 系统内核相关
- => 查看命令的帮助手册<br> => 查看命令的帮助手册<br>......
- => 查看命令的简要说明,会得到两条信息:
- 因为命令中存在(位于帮助手册的第一章),库函数中也存在(位于帮助手册的第三章)
- => 第一章中命令的简要信息
- => 第三章中命令的简要信息
直接默认打开的是第一章(按照章节从上往下,第一个存在该命令)的帮助手册
使用可以指定打开第三章有关函数的帮助手册
- => 查看命令的帮助手册在磁盘当中的位置
- => 查看所有跟字符串相关的帮助手册的简要说明,用于突然记不起具体命令但是记得其中某一部分拼写的情况<br>这里的相关不只是命令/函数名中包含,也包括描述
用来阅读格式的文档,查看帮助信息
相较于,所展示的帮助文档信息会更加详细全面,其中甚至不乏超链接,可以像浏览网页一样去查看,但缺点也是太过详细全面,操作繁琐,使用起来没有那么便捷,大多数情况下用命令查看就够用了。
- => 查看命令的帮助文档
- => 查看命令的帮助手册在磁盘当中的位置
查询一个命令执行什么功能
从观感上就是将命令查询到的各个章节的开头提取出来,某种程度上等同于
=> 会发现,得到的结果跟一致
- 改变已有文件的时间戳属性(用户必须是文件所有者,或者拥有写该文件的权限)
- 创建一个新的空文件
文件的时间属性如何查看会在后面介绍,这里只需要知道时间属性中的两个:访问时间和修改时间
- => 以当下时间为时间戳新建一个空文件,该文件名为
- => 同时创建三个新文件,依次命名为,数量可以增加,中间用空格隔开
- => 同时创建三个新文件,依次命名为,在创建文件命名有规律(连续的字符)时的一种快捷方式
- => 已存在的文件的所有时间属性都更新为当下时间
- => 已存在的文件的访问时间更新为当下时间
- => 已存在的文件的修改时间更新为当下时间
- or => 仅用来修改已有文件的时间戳,即使不存在也不会新建
- => 将访问和修改时间从复制到
- => 将的访问和修改时间更改为明天
- => 将的访问和修改时间更改为,修改为任意时间同理更改格式即可
创建目录
默认状态下,如果想要创建的目录已存在,则提示已存在,而不会继续创建,与文件重名也不行
- => 在当前目录下,新建一个名为的目录
- => 在当前目录下,新建两个目录,分别名为,数量可以增加,中间用空格隔开
- => 与前文同理
- => 递归创建,先在当前目录下创建目录,再在目录下创建
- => 递归创建,由于目录已存在,所以直接进到目录下创建,此时在目录下应该有同级的两个目录,分别是和,最后在目录下创建
- => 在目录下新建目录,同时将的权限设置为
-
- 权限是指:所有者可读可写可执行(切换目录),所属组和其他用户都没有读、写、执行(切换目录)的权限,相关内容后续展开
- => 显示目录的创建过程
删除文件或目录
注意:Linux没有自带的回收站,删除需谨慎,尤其是
- => 删除当前目录下的文件
- or => 删除当前目录下的目录,其子目录也将被递归删除
- => 尝试删除一个不存在的文件会出现警告,添加即将忽略不存在的文件,不会出现警告
- => 删除当前目录下的所有文件
- => 删除当前目录下的三个文件,分别是,但由于添加了,所以每删除一个文件前都会询问,需要手动输入来确认删除,输入来拒绝删除即保留该文件
- => 同理,需要一个个手动确认,只不过添加了,所以要删除的是目录
- => 删除当前目录下的这三个文件
删除空目录,否则将报错
由于一切皆文件,所以空目录也是占磁盘空间的,当磁盘空间爆满,到了需要删空目录来解放空间的时候,如果系统只支持命令来删除,还需要在删除前进行一番判断,徒增工作量降低效率,而则可以一步到位,空的删除,不空的保留
- => 删除当前目录下的空目录
- => 递归删除多重目录<br>注意:此命令要求是个空目录,在删除后成为空目录,在删除后是个空目录,否则将报错
- => 显示指令执行的过程<br>可以尝试将上述代码的递归删除更改为,你将更清晰直观得感受到删除过程以及报错的位置与逻辑
- 移动文件
- 重命名文件
- => 将当前目录下的文件移动至当前目录的目录下
- => 将当前目录下的文件重命名为<br>注意:如果是一个已存在的文件,那么将覆盖掉
- => 将目录移动到中,如果不存在则重命名
- => 如果不存在则直接重命名,如果存在这个文件,那么将询问是否将其覆盖
- => 如果目录下不存在文件,则将文件移动到目录下并且重命名为<br>如果目录下存在文件,那么将询问是否将其覆盖
- => 强制操作,即使目录下存在文件,也会在不经询问的前提下将转移过去并覆盖<br>注意:单就这一点而言,是否添加没有影响,因为不加而直接也将不经询问直接覆盖
- => 如果文件已存在,则在覆盖前会将其备份,备份的内容放在文件中
- => 如果不存在,则直接重命名<br>如果已存在,那么只有当文件更(第四声)新的时候(从时间属性上来说),才会覆盖文件,否则将忽略此条命令,并且也没有任何警告或报错
- => 将当前目录下的所有内容都转移到上级目录
- => 将目录下的所有内容都转移到目录下
复制文件或目录,如果目标文件已存在,将直接覆盖(与使用等价)
- => 将文件复制一份放到中
- => 递归复制,将目录复制一份放到目录中,其下的所有内容也将一并被复制
- => 如果已存在,则会提醒让你确认是否执行覆盖操作,即将的内容覆盖掉原本的内容
- => 如果已存在,则会先将其备份为
- => 保留链接、文件属性的前提下复制目录下的所有内容
改变目录,从一个目录进入到另一个目录
- => 用户的家目录
- => 当前目录
- => 当前目录的上一级目录
- => 根目录
- => 上一次所处的目录
- 绝对路径:起始路径为根目录
- 相对路径:起始路径不为根目录
- or => 进入当前目录下的目录
- => 切换到当前目录的上两级目录
- or => 切换到家目录
- => 切换到上一次所在的目录
打印当前路径(绝对路径)防止迷路
=> 屏幕上将打印你当前所处位置的绝对路径
显示指定目录下有哪些文件/目录及其具体的属性信息
- => 查看当前目录下有哪些文件/目录(不包括以开头的隐藏内容)
- => 查看当前目录下有哪些文件/目录(包括以开头的隐藏内容),相较于会多显示:
-
- => 当前目录
- => 上一级目录
- 以开头的隐藏文件/目录
- => 以长格式列出当前目录下的文件/目录信息,包括各权限,所属组,创建时间等等
- => 查看根目录下的所有文件/目录
- => 递归列出当前目录下以及其所有子目录下的文件/目录的信息,以长格式形式列出
- => 查看当前目录下所有以开头的文件/目录的长格式信息
- => 将文件以相反的次序显示(默认是以字典序升序,加了后变为降序)
- => 根据最后修改的时间来排序显示(新的文件最先显示)
- => 以长格式列出信息,并且以最后修改的时间的倒序(旧的文件先显示)进行显示
- => 除了不列举以及之外,效果等同
- => 按照文件大小排序
- => 在列出的文件名后根据其文件类型增加一个符号,例如:
-
- 可执行加
- 目录加
- ......
- => 以人类可读的形式显示数字大小
- => 列出当前目录下文件/目录的详细信息,并且显示的数字将以人类更易读的形式进行单位转换(K, M, G...)
以树状形式列出目录下的内容
- => 树状显示当前目录下的文件和目录
- => 树状显示当前目录下的文件和目录,包括以开头的隐藏文件/目录
- => 只树状显示当前目录下的目录
- => 树状显示当前目录下2个层级内的文件和目录
- => 除了显示文件/目录名之外,增加权限信息
- => 按更改时间进行排序
- => 反向排序
- => 显示完整的相对路径
显示文件或文件系统的详细信息
文件信息:文件名、大小、块的大小、IO块的大小、文件类型、设备号、链接数、文件权限、用户名、用户组、时间属性等等
文件系统信息:文件系统ID、文件名最大长度、文件系统类型、块大小、总空间、可用空间等等
- => 访问时间<br>读取文件、修改文件时改变
- => 修改时间<br>修改文件时改变
- => 状态改变时间<br>修改文件、文件属性变化时改变
注意:上述括号内的命令后续会提到,这里不展开
- => 查看文件的信息
- => 查看文件所在文件系统信息
- => 以简洁方式输出信息<br>将关键内容以空格隔开,放到一行以字符串的形式输出
用字符串替换的方式批量改变具有一定规则的文件名,这也是与区别的地方
- => 原字符串,即文件名中需要替换的字符串
- => 目标字符串,即需要替换成为的字符串
- => 指定要改变文件名的文件列表
- => 将中的替换为,此时通过查看文件,会发现不见了,取而代之的是
- => 将所有与匹配的文件名中的替换为<br>由于添加了,所以此条命令是模拟替换,不会真实生效,而是以的形式一一列举模拟过程中会进行的替换
- => 真实替换并且显示替换过程信息,如:等等
提取文件路径名最后的文件名,可以根据需求删除指定后缀
- => 提取出文件名
- => 提取出目录名(会自动删除最后的)
- => 添加以支持提取多个输入,按照输入的顺序分行显示提取出的文件/目录名
- => 提取出后会删除指定后缀,所以最终得到结果为<br>与之等价<br>注意:不能忘,否则将会得到
提取路径
- => 提取找到文件的路径,即得到
- => 提取找到目录的路径,即得到
- => 更改文件属性<br>非用户需要用提权才能使用该命令
- => 查看文件属性
- => 不要修改对这个文件的最后访问时间
- => 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘
- => 系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件<br>如果拥有该属性的是目录,那么系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件
- => 不更新文件或目录的最后存取时间
- => 将文件或目录压缩后存放
- => 当程序执行时,该文件或目录不会被备份
- => 检查压缩文件中的错误
- => 系统将不允许对这个文件进行任何的修改<br>如果目录具有该属性,那么任何进程只能修改目录之下的文件,不允许建立和删除文件
- => 彻底删除文件,不可恢复
- => 当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复,用来防止意外删除文件或目录
- => 文件系统支持尾部合并
- => 可以直接访问压缩文件的内容
- => 为这个文件添加属性,系统将不允许任何人修改它
-
- => 尝试将追加入文件,将得到报错
- => 尝试删除这个文件,依旧得到报错
- ......
- => 可以观察到属性里有
- => 撤销刚刚添加的属性,现在可以修改它
- => 只允许在文件里追加内容(对日志文件特别有用)
- => 对目录中的所有文件都添加属性限制
识别文件类型
- => 得到其类型为
- => 得到其类型为
- => 得到其类型为
生成和校验文件的md5值(根据内容按照某个算法算出来的32位16进制数,与文件名无关),确保文件的准确性
- => 生成文件的md5值
- => 以二进制模式读取文件再计算md5值
- => 以文本模式读取文件再计算md5值
以上不论哪一种,计算得到的md5值都是相同的,因为内容本质没有任何变化
- => 计算文件的md5值并将结果保存到文件中
- => 校验上一个命令生成的md5值与文件是否一致,修改文件后再次执行查看是否一致
- => md5校验但是不显示任何输出,用返回码表示成功与否<br> => 其中,用来查询上一条命令执行的结果(0表示成功,1表示失败),表示将其打印出来
搜索指定文件/目录
- => 全盘搜索(根目录开始)所有以结尾的文件
- => 在目录下搜索所有大于1k的文件
- => 在目录下搜索属于指定用户的所有文件
上述命令可能涉及文件权限问题,可以用提权后执行
- => 查找当前目录下的所有文件(类型)
- => 查找当前目录下所有权限为的文件,并将其通过进行显示
- => 列出当前目录中的所有文件、目录以及子文件信息
- => 在当前目录中查找所有后缀为(不区分大小写)的文件
- => 在当前目录中查找所有后缀不为的文件
- => 找到当前目录下所有在7天内被修改过的文件并依次询问是否将其删除
- ......
在变量指定的路径当中,搜索某个系统命令的位置,并且返回第一个搜索结果
查看变量指定的路径:
- => 查找命令所在的位置
- => 查找命令所在的位置
查找命令的二进制程序、源代码文件和手册页等相关文件的路径
查找速度相当快,因为Linux系统会将系统内的所有的文件都记录在一个数据库当中,而不是在磁盘里乱找,但是这个数据库不是实时更新的(一般一天自动更新一次),所以有可能找不到刚刚添加的文件,或者找到了已被删除的文件<br>手动更新该数据库:
- => 将显示其命令位置及手册页位置:
- => 只查找命令的二进制程序所在的位置
- => 只查找命令的手册页路径
快速查找文件或目录,速度比快,与一样,也是在数据库中搜索
- => 查找所有路径当中包含的文件
- => 查找所有路径中包含的文件
- => 以结尾的目录且该目录下含有以开头的文件,含有这一特点的所有文件都将被检索出来,而使得检索过程当中忽略大小写
改变文件或目录的用户和用户组,通常需要加上管理员权限执行
- => 将文件的用户更改为,用户组更改为
- => 只更改它的用户
- => 只更改它的用户组
- => 显示改变过程
- => 改变指定目录下所有子文件的所属主和所属组
更改用户组,通常需要加上管理员权限
- => 更改文件的用户组为
- => 显示命令执行过程
- => 依据参照物来更改的用户组
- => 将指定目录下的所有子文件的所属组更改为
改变文件/目录的权限,只有你是该文件/目录的所属主或者用户才可以执行
- => 即文件所有者
- => 即文件所属组
- => 即其他用户
- => 即所有用户,相当于
- => 增加权限
- => 去除权限
- => 设置权限
- => 可读
- => 可写
- => 可执行/可切换目录
将上述权限表示人为分成四个部分
- => 表示文件类型
- => 第一组表示该文件/目录所有者所拥有的权限,按照类似二进制的规则来转化为数字:
- => $2 ^ 0$
- => $2 ^ 1$
- => $2 ^ 2$
- => 该位为$0$
例如:<br> => $7$<br> => $5$<br> => $0$
- 第二组表示该文件/目录所属组所拥有的权限
- 第三组表示该文件/目录对其他用户开放的权限
- => 为所有用户添加读权限
- => 为当前目录及其所有子目录下的文件都添加所有用户的读权限
- => 为文件的拥有者添加可执行权限
- => 只有文件的拥有者及其所属组用户拥有对其写入的权限,而其他用户将失去对其写入的权限
- or => 文件对所有人可读可写可执行
- => 文件的拥有者可读可写可执行,所属组用户及其他用户可读可执行不可写
- => 文件的拥有者可读可写,所属组用户及其他用户没有任何权限
文本搜索工具
- => 在文件中搜索包含字符串的内容
- => 在多个文件中搜索
- => 搜索但是结果不包含文件名
- => 递归搜索当前目录及其子目录中的所有文件,将内容含有字符串的文件的文件名的相对路径依次打印出来
- => 在某个文件中,包含该关键词的内容的数量,和会单独统计数量
- => 搜索过程忽略大小写
- => 显示的结果将包含行号
- => 反向查找,即在文件中搜索出所有不包含字符串的内容
- => 精确搜索,即同一行内容除了字符串之外没有其它(不包括换行)才会被匹配上
- => 询问文件中是否含有所需要查找的字符串,此条命令不会有输出,而是通过状态值返回,可以通过来获取,方便在脚本中判断和调用
查找指定字符串
- => 在文件中查找包含一个或多个(可以间隔其它字符)的内容
- => 在文件中查找包含或的内容
- => 在文件中查找包含一个或多个完整字符串的内容
- => 在文件中查找连续包含两个完整字符串的内容
- => 查找以开头的内容
- => 查找以结尾的内容

- => 查找含有字符串或的内容
上述命令的''中均为正则表达式
在终端上显示内容,一股脑输出,所以一般用来查看短小精悍的文件
- => 在终端上显示文件的内容
- => 查看多个文件
- => 显示行数编号,多个连续的空行也会连续编号
- => 去除重复的空行
- => 显示行数,但是空行不编号,不过空行依旧会存在
- => 每一行末尾显示符号,包括空行
- => 将字符显示为符号
- => 重定向输出文件内容,即不再显示到终端,而是写入文件<br>如果不存在则创建后写入,否则将覆盖内容
- => 重定向追加,同样不显示到终端,而是追加进文件<br>如果不存在则创建后写入,否则将追加到原内容的末尾
- => 合并文件
- => 回车后会让你输入内容,完成后按保存,你输入的内容将会被保存进文件
分页显示文本文件内容,但是只能往下翻,不能往回翻
- 回车:下滚一行
- 空格:下翻一页
- :退出
- => 先清屏,再以每次10行内容的格式显示指定文本文件内容
- => 当出现多个连续的空白行的时候,将它们合并为一行
- => 从第10行开始显示
分页显示文本文件内容,支持向前向后翻页<br>注意:前文提到的手册嵌入了命令,各种操作与其一致
- 回车:下滚一行
- 空格:下翻一页
- :下滚一行
- :上滚一行
- :下翻一页
- :上翻一页
- :退出
- :搜索关键词
- => 查看多个文件
-
- :浏览下一个文件
- :浏览上一个文件
- => 查看历史使用的命令,并将其以命令分页显示
显示文件开头的内容
空行算作一行,空格和换行符都算作一个字符
- => 默认显示该文件的前10行
- => 显示该文件的前5行
- => 显示除了最后6行之外的所有内容
- => 显示文件的前20个字符
- => 显示除了最后30个字符之外的所有内容
查看文件结尾的内容
空行算作一行,空格和换行符都算作一个字符
- => 默认显示该文件的最后10行
- => 查看最后20行内容
- => 查看从文件第20行开始一直到文件末尾
- => 查看最后10个字符
- => 动态显示文件的最后10行<br>此时另起一个终端,往文件里加内容,再切换回执行了该命令的终端,可以发现该新添加的内容<br>该命令应用于日志文件特别有效
反向显示文件内容,以行为单位,与的显示顺序正好相反
=> 先显示最后一行,再显示倒数第二行...最后显示第一行
添加行号
- => 列出文件的内容,同时添加行号,空行不显示行号
- => 空行显示行号
- => 行号在自己栏位的最右侧显示,并且加前导零使得格式对齐,宽度默认为6为,即:第一行显示为000001
- => 将宽度更改为3,即:第一行显示为001
- => 空行不显示行号(与不加任何参数时等价)
统计文本信息
- => 统计该文件的行数、字数(由空白、跳格或换行符分隔的字符串)以及字节数(包括可见字符和不可见字符)
注意:一个字符可能占多个字节,例如:在UTF-8编码中,一个英文字母占一个字符,占用空间一个字节,而一个中文,则需要占用三个字节大小
- => 统计字数
- => 统计字符数
- => 统计字节数
- => 统计行数
- => 打印该文件最长行的长度(不包含不可见字符)
文件分割<br>默认按每1000行分割成一个小文件<br>默认情况下,分割成的文件按照以下规律依次命名:
- => 将文件的内容按照每两行切割成一个小文件
- => 根据文件大小,每10kb切割成一个小文件
- => 切割成的文件以数字进行命名,命名宽度为3,即:
- => 切割成的文件拥有指定前缀,即:<br>注意:该命令中,要切割的文件和指定前缀字符串的顺序不能颠倒
从文件中提取文本的一部分
- or => 提取文件当中第二列的内容<br>默认情况下,命令会将一行内容依据制表符分成若干列
- => 提取除第二列之外的内容
- => 提取第二列,但是一行内容将以分号来分成若干列
- => 提取每一行的第2, 3, 4, 6个字节的内容
- => 提取每一行的第1, 2, 3个字符的内容
- => 提取每一行的前两个字符的内容
- => 提取每一行的第四个字符及其后的内容
合并两个或多个文件
- => 按照纵列将两个文件拼接起来,键入命令中的文件顺序不同,结果也不同<br>想要拼接更多的文件,只需要在命令后继续输入文件名即可<br>注意:如果文件中的行数不同,那么缺失位置将用空白字符填充
- => 合并文件的时候,每一行的内容以来分隔<br>注意:如果文件中的行数不同,又指定了分隔符(以为例),那么最后一行就可能出现之类的形式(因为前两个文件内容较少)
- => 每个文件内部用替换掉换行符组成一个一行的字符串,再将若干个字符串一行一行拼接
- => 将的结果进行命令,将以空格进行分隔,并依次组成四列的形式
对文本内容进行排序
- => 按字母字典序升序进行排序
- => 按字母字典序降序进行排序
- => 按照数字本身(从小到大)进行排序
- => 从大到小
- => 首先将每一行按照进行分隔,按照第三列的数字本身从小到大的顺序来确定行的顺序
去除文件中的重复行
注意:这里的重复行必须是连续的重复行,如果中间被什么东西分隔开就不行
- => 文件中每一重复的连续行都将只剩下一行内容
- => 去除重复行的同时统计每一行所在原文有多少重复行
- => 只显示有重复的记录,且每个记录只出现一次
- => 只显示没有重复的记录
逐行比较文件差异,并且可以生成补丁文件
- => 增加
- => 改变
- => 删除
- => 前后两个文件内容有不同
- => 后面文件比前面文件少了一行内容
- => 后面文件比前面文件多了一行内容
- => 比较的文件的后者比前者多一行
- => 比较的文件的后者比前者少一行
- => 两个文件有差别的行
- => 逐行比较并在每一个有差异的地方用上述符号进行展示
- => 并排格式输出,设置间隔宽度为50,同时在每一个有差异的地方用上述符号进行展示,相较于上一个命令,并排显示会更加直观
- => 上下文格式输出
- => 统一格式输出
- => 生成补丁<br>如果为文件打上这个生成的补丁,那么它的内容将与完全一致
- => 为文件打上刚刚生成的补丁
连接两个文件当中相同的连接字段后的内容
- => 默认以第一列为连接字段
讯享网
- => 左边文件,即当中未匹配上连接字段的内容也将显示
- => 右边文件,即当中未匹配上连接字段的内容也将显示
- => 两个文件当中未匹配上连接字段的内容也将显示<br>显示顺序:<br>1. 匹配上连接字段的内容<br>2. 左边文件,即当中未匹配上连接字段的内容<br>3. 右边文件,即当中未匹配上连接字段的内容
- => 如果匹配上连接字段,那么将截取第一个文件的第二第三个字段与第二个文件的第三个字段组合在一起<br>注意:计算第几个字段时需要考虑连接字段(它也占个数)
- => 指定分隔符
- => 只显示第一个文件,即文件当中,未能匹配上连接字段的内容
- => 指定以两个文件当中的第二个字段作为连接字段进行匹配<br>注意:输出结果时,会自动将连接字段放在第一位
转换或删除文件中的字符
- => 对文件当中的内容进行小写到大写转换
- => 对文件当中的内容进行小写到大写转换
- => 对字符串进行小写到大写转换
-
- => 字母和数字
- => 字母
- => 控制(非打印)字符
- => 数字
- => 图形字符
- => 小写
- => 大写
- => 可打印字符
- => 标点符号
- => 空白字符
- => 十六进制字符
- => 将字符串当中的大小写字符互换
- => 将字符串中的小写字母删除
-
- 类似的:<br> => 删除某一段内容中的数字<br> => 删除某一段内容中的空格和tab符<br> => 删除某一段内容中的,不在指定集合中的字符
- => 压缩重复的空白行<br>注意:表示后面紧跟的字符串中需要进行转译,这个例子当中就是需要将转译为换行符
-
- 类似的:<br> => 在某一段内容中,删除字符集中的重复字符<br> => 在某一段内容中,将连续的空格压缩为一个空格,并将空格替换为
- => 将制表符替换为空格
批量编辑文本文件(行处理)
- => 新增
- => 取代
- => 删除
- => 插入
- => 打印
- => 取代
注意:默认情况下,该命令并非直接修改文件中的内容,而是将处理后的结果输出,文件内容保持不变
- => 仅输出文件的第二行
- => 输出第三、第四、第五行
- => 输出带有关键词的行<br>搜索支持使用正则表达式
- => 删除第二、第三、第四行的内容并输出到屏幕上
- => 删除带有关键词的行
- => 在第二行后追加一行字符串
- => 在第二行前插入一行字符串
- => 将第二行整行替换成字符串
- => 将第二行、第三行、第四行、第五行的内容替换成一行字符串<br>注意:并不是将第2-5行每一行都替换成该字符串,而是将第2-5行视为一个整体,用一个字符串将这个整体替换
- => 全局替换,把替换为
- => 只将第三行的替换为
- => 多条件替换,将替换为空字符串(等同于删除),同时将替换为
- => 将第三行的替换为,同时将修改后的结果写入文件
对文本和数据进行处理的编程语言,不过一般只是使用它进行内容提取(列处理),而编程部分则交给
- => 对输出的内容进行处理,打印其第一列、第三列,中间用tab符隔开
- => 处理文件,用冒号作为分隔符将每一行分成若干列(默认情况下以空白字符作为分隔符),然后提取显示其第一列、第三列的内容,中间用tab符隔开
- => 将文件中,以冒号分隔后的第三列中的数据不小于500的行提取出来,提取出来的结果没有被用冒号分割
- => 搜索文件中有关键词的内容,并打印出所在的行的原内容
- => 搜索文件中有关键词的内容,并打印出所在的行的第七列内容
- => 用命令提取文件的前十行,用对这十行内容进行处理:
-
- => 打印,中间为制表符
- => 提取并打印用冒号分隔后的第一列和第三列内容,中间用制表符隔开
- => 打印
其中,表示在处理之前执行,表示在处理之后执行
=> 用冒号将每一行分割成若干列
查看磁盘使用空间
- => 查看当前目录下所有文件和目录的容量大小
- => 以易读的方式显示目录及其子目录大小
- => 以易读的方式显示目录内所有文件的容量大小
- => 单独查看文件所占用的磁盘空间(一般都会加上选项易读)
- or => 仅查看目录的总大小(一般都会加上选项易读)
查看磁盘使用了多少空间以及剩余多少空间等信息
- => 显示磁盘使用空间情况
- => 以易读的方式显示
- => 显示指定文件/目录所在分区的磁盘空间使用情况
- => 查看指定文件类型的磁盘使用情况
- => 以模式来显示磁盘空间使用情况
- => 显示所有信息,包含具有0 Blocks的文件系统
- => 列出文件系统的类型
强制将更改的内容立刻写入磁盘(一般情况下不需要手动执行)
在Linux系统中,在对文件或数据处理的过程中,一般都会先将其先放到内存的缓冲区,等到适当的时机再写入磁盘,以提高系统的运行效率
把文件系统(一般指被格式化后的硬盘或分区设备,如:U盘、光驱等等)挂载到目录,之后,用户就可以直接在挂载的目录当中操作该文件系统
使用该命令需要管理员权限
- => 查看当前系统中挂载的所有文件系统信息
- => 查看指定类型挂载的文件系统
- => 查看系统当中已具有哪些设备<br> => 一般都会挂载都目录下,如果设备过多,为了方便管理,可以在该目录下新建一个目录<br> => 将第一步中查看到的我们需要挂载的设备(如:U盘)挂载到目录<br>注意:多个设备可以挂载到同一个目录,但是后挂载的设备会将之前挂载的设备的内容隐藏
- => 解除挂载
- => 只读模式挂载<br>注意:无法在以可读可写的方式挂载的同时又在新目录以只读模式挂载,此时需要用上一条命令来解除可读可写的挂载
- => 将iso镜像挂载到目录
卸载已经安装的文件系统目录或文件
- => 通过设备名卸载
- => 通过挂载点卸载
拷贝及转换文件
可以完整拷贝文件,可以部分拷贝文件,也可以在拷贝的过程当中对内容进行转换
同时,利用该命令,可以测试磁盘的读取与写入速度
- => 默认从标准输入,即指定源文件
- => 默认从标准输出,即指定目标文件
- => 一次读入个字节,即指定一个块大小为个字节
- => 一次输出个字节,即指定一个块大小为个字节
- => 同时指定一次输入/输出个字节
- => 一次转换个字节,即指定转换缓冲区大小
- => 从输入文件的开头跳过个块后再开始拷贝
- => 从输出文件的开头跳过个块后再开始拷贝
- => 仅拷贝个块,一个块大小等于指定的字节数
- => 指定关键字
-
- => 用指定的参数转换文件
- => 转换为
- => 转换为
- => 转换为
- => 把每一行转换为长度为字节的内容,不足的部分用空格填充
- => 使每一行的长度为,不足的部分用空格填充
- => 大写转小写
- => 小写转大写
- => 交换输入的每对字节
- => 出错时不停止
- => 不截断输出文件
- => 将每个输入快填充到个字节,不足部分用空(NULL)字符补齐
- => 生成一个500M的文件<br>从文件中拷贝500M数据,一共拷贝一次,将这些数据写入一个名为的文件中<br>注意:是一个特殊文件,它将源源不断为你提供0这个数据
- => 拷贝指定文件的前50个字节到目标文件中
- => 拷贝指定内容,同时小写转大写
- => 回车后在终端输入任意字符,按结束,转化为大写后的结果也将在终端显示
打包/解压工具
- => 新建打包文件
- => 解压文件,配合解压到对应的文件目录
- => (压缩或解压时)指定要处理的文件
- => 通过方式压缩或解压,最后以为后缀。压缩后大小小于
- => 通过方式压缩或解压,最后以为后缀,一般使用得比较多
- => 显示操作过程
- => 查看打包文件中的内容
- => 指定压缩/解压缩的目录,若无指定,默认是当前目录
- => 将当前目录下所有文件打包(未压缩),并显示操作过程
- => 将当前目录下所有文件用方式压缩,并显示操作过程
- => 解压文件到当前目录下,如果当前目录下已存在文件则会被覆盖
- => 解压文件到当前目录的目录下
- => 列出压缩包里的内容
压缩/解压,以后缀结尾
- => 将目录下的所有文件和子目录用格式压缩成一个压缩包
- => 将当前目录下所有以结尾的文件用格式压缩成一个压缩包
- => 将当前目录下的文件添加进已有的压缩包中,并且显示操作过程
- => 查看压缩包中的文件
- => 查看压缩包中的文件及其压缩比率
- => 检查压缩包是否被损坏
- => 解压压缩包到当前目录下
- => 解压压缩包到指定目录下
压缩/解压文件,以后缀结尾,对文本的压缩比率通常能够达到60% ~ 70%
- => 压缩文件,默认压缩后的文件名为该文件名加上对应的后缀,即:。与此同时,原文件将被删除
- => 压缩目录,但是目录不会被压缩,切换进该目录后,发现该目录下所有文件单独被压缩了,命名方式如上,且各个文件都会被删除
- => 查看当前目录下所有压缩包的信息,包括压缩比率
- or => 解压指定压缩包文件,并且显示操作过程,如果存在同名文件则会被覆盖
- or => 递归解压该目录下的所有压缩包文件
- => 压缩指定文件,但是不删除原文件
- => 测试指定压缩包文件内容是否被损坏
显示系统信息
- => 系统所有相关信息
- => 计算机硬件架构
- => 主机名称
- => 内核发行版本号
- => 内核名称,如果直接使用命令,则默认加上该参数
- => 内核版本
- => 处理器类型
- => 操作系统名称
- => 硬件平台
- => 显示系统主机名、内核版本、硬件架构等全部信息
- => 显示系统主机名
- => 显示内核发行版本号
- ......
显示和设置系统的主机名
- => 显示主机名
- => 临时改变主机名,系统重启后失效
- => 显示主机的所有IP地址
方法1:修改配置文件
- => 修改其中内容
- => 将其中当前的主机名修改为想要更新为的主机名
方法2:命令
- => 利用命令设置新主机名
- => 将其中当前的主机名修改为想要更新为的主机名
不难发现,两个方法中的第一步最终导致的结果是等价的,第二步是完全相同且必不可少的
显示开机信息
开机信息一般保存在内核的环形缓冲区中:
- => 显示开机信息
- => 用进行分页查看
- => 显示与内存相关的信息
- => 显示与usb相关的信息
- => 显示信息级别,如:
- => 只显示指定级别的信息
- => 显示时间戳
- => 显示原始数据
- => 清空环形缓冲区中的日志
查看系统启动时间及负载信息
- => 显示当前系统运行负载信息
- => 显示系统正常运行的时间
- => 显示系统启动时间
显示系统内存使用量情况
- => 以显示内存使用情况
- => 以显示内存使用情况
- => 以显示内存使用情况
- => 以显示内存使用情况
- => 持续显示
- => 显示内存使用总和
- => 以易读的单位显示内存使用情况
- 行(第二行)是内存的使用情况
- 行第三行是交换空间的使用情况
- 列显示系统总的可用物理内存和交换空间
- 列显示已经被使用的物理内存和交换空间
- 列显示还有多少物理内存和交换空间可供使用
- 列显示被共享使用的物理内存大小
- 列显示被和使用的物理内存大小
- 列显示还可以被应用程序使用的物理内存大小
- => 以默认的容量单位显示内存使用量情况
- => 以为单位显示
- => 以易读的单位显示(不统一单位,而是某个数字在哪个单位下易读就以哪个为单位显示)
- => 以易读的单位显示,每3秒刷新一次
的内建命令,用来控制程序的资源,以达到系统调优的作用
- => 显示目前资源限制的设定
- => 设定文件的最大值,单位为区块
- => 程序数据节区的最大值,单位为
- => 所能建立的最大文件,单位为区块
- => 限制资源的硬性限制,也就是管理员所设下的限制
- => 指定可使用的内存上限,单位为
- => 指定同一时间最多可开启的文件数
- => 指定管道缓冲区的大小,单位为512字节
- => 指定堆栈上限,单位为
- => 设定资源的弹性限制
- => 指定使用时间的上限,单位为秒
- => 用户最多可开启的程序数目
- => 指定可使用的虚拟内存上限,单位为
- => 显示系统资源的所有设置
- => 将每个进程可以打开的文件数目加大到2048
切换系统运行级别
- => 关机
- => 单用户模式
- => 多用户,没有NFS不联网
- => 多用户-命令行模式
- => 没有用到
- => 图形化界面模式
- => 重新启动
控制系统服务,可以启动、停止、重新启动甚至直接关闭某个系统服务
- => 查看系统中所有服务现在的状态
- => 查看运行状态
- => 启动服务
- => 停止服务
- => 重启服务
显示虚拟内存状态,显示系统的进程、内存等整体的运行状态
- => 显示虚拟内存使用情况
- => 每隔1秒采样一次,总共采样3次
- => 显示活跃和非活跃内存统计信息
- => 显示从系统启动以来的fork数量
- => 显示详细信息
- => 显示磁盘相关的信息(读/写情况)
- => 查看这个磁盘分区的读/写情况
- => 显示系统的slabinfo
监视系统输入输出设备和CPU使用情况
- => 显示所有设备负载情况
- => 每隔2秒显示一次,总共显示3次
- => 显示指定磁盘信息
- => 显示tty和cpu信息
- => 以M为单位显示
- => 查看tps和吞吐量信息
- => 查看磁盘I/O详细情况
- => 查看设备使用率、响应时间
- => 查看CPU状态
显示进程间通信设备的状态,包括消息队列、共享内存以及信号量的信息
- or => 显示所有的IPC
- => 输出信息的详细变化时间
- => 输出IPC方式的进程ID
- => 输出IPC方式的创建者/拥有者
- => 输出当前系统下IPC各种方式的状态信息
- => 查看各个资源的系统限制信息
删除一个或更多的消息队列、信号量集或者共享内存标识,同时将其所关联的数据一并删除
只有超级用户以及IPC对象的创建者有权限删除
注意:删除可能用到的或需要通过或查看
- => 通过删除共享内存
- => 通过删除共享内存
- => 通过删除消息队列
- => 通过删除消息队列
- => 通过删除信号量
- => 通过删除信号量
- => 删除所有共享内存、消息队列和信号量
- => 删除所有共享内存、消息队列和信号量,并且显示过程
显示并设置IP路由表
- => 不要使用通讯协议或主机名称,直接使用或
- => 表示后面接的路由为一个网域
- => 表示后面接的为连接到单部主机的路由
- => 与网域有关,可以设定决定网域大小
- => 的缩写,后续接的是的数值,与不同
- => 表示路由必须要经过的网关,后面接等
- => 表示此路由当前为启动状态
- => 表示此网关为一主机
- => 表示此网关为一路由器
- => 使用动态路由重新初始化的路由
- => 此路由是动态性地写入
- => 此路由是由路由守护进程或导向器动态修改
- => 表示此路由当前为关闭状态
- or => 显示当前路由
- => 添加网关/设置网关
- => 屏蔽一条路由
- or => 删除路由记录
测试主机间网络连通性,测试网速等
- => 指定发送报文的次数
- => 指定收发信息的间隔时间
- => 设置数据包的大小
- => 设置存活数值的大小
-
- 系统的值为64或255
- 系统的值为128
- 系统的值为32
- 主机的值为255
- => 测试与网站的连通性
- => 连续四次
- => 连续四次,每次之间间隔三秒
- => 测试局域网连通性<br>例如:测试局域网与物理机之间的网络连通性,需要提前知道物理机的地址是多少
- => 设置数据报为1024字节,TTL为255
追踪数据包在网络上传输时的全部路径
试图以最小的发出探测包来追踪数据包到达目的主机所经过的所有网关,然后监听来自网关的应答。一条路径上,每个设备都会测三次
- => 追踪本地数据包到百度的传输路径
- => 追踪指定量的跳数
- => 显示地址而非主机名
- => 设置探测包的个数
- => 设置对外发探测包的等待时间,以秒为单位
- => 设置基本端口
- => 绕过正常的路由表,直接发送到网络相连的主机
显示或设置网络设备参数信息
通常不建议直接使用命令来修改配置网络信息,因为一旦重启,配置过的参数就会失效
- => 显示网络设备信息
- / => 打开/关闭指定网卡
- => 为网卡配置地址
- => 为网卡配置地址与子网掩码
- => 为网卡配置地址、子网掩码以及广播包
- => 为网卡设置地址
- => 为网卡删除地址
- <br><br><br>先关闭,然后修改地址,最后再启动
- / => 启动/关闭协议
- => 设置最大传输单元为1500字节
激活/禁用网络接口
- => 激活网络接口
- => 关闭网络接口
显示网络状态,包括路由表、实际网络连接、每一个网络接口等
- => 显示系统网络状态中的所有连接信息
- => 显示连接信息
- => 显示连接信息
- => 显示和进程名
- => 显示监听端口
- => 显示监听端口
- => 显示监听端口
- => 显示监听端口
- => 显示所有端口的统计信息
- => 显示端口的统计信息
- => 显示端口的统计信息
- => 显示连接端口号使用信息
- => 显示网卡当前状态信息
- => 显示网络路由表状态信息
- => 找到某个服务器所对应的连接信息
显示活动套接字信息
- => 不解析服务名称,以数字方式显示
- => 显示所有套接字
- => 显示处于监听状态的套接字
- => 显示计时器信息
- => 显示详细的套接字信息
- => 显示套接字的内存使用情况
- => 显示使用套接字的进程
- => 显示内部的信息
- => 显示套接字使用概况
- => 仅显示的套接字
- => 仅显示的套接字
- => 显示套接字
- => 仅显示套接字
- => 仅显示套接字
- => 仅显示套接字
- => 仅显示套接字
- => 仅显示套接字
- => 将原始套接字信息转储到文件
- => 显示套接字
- => 显示套接字
- => 显示套接字使用概况
- => 列出所有打开的网络连接端口
- => 查看进程使用的
- => 找出打开套接字/端口的应用程序
- => 查看主机监听的端口
- => 解析和端口号
远程登入服务器,但是它采用的是明文的传送报文,安全性不强
- => 远程登录
- => 指定端口
远程连接工具,使用加密协议,安全性高
配置文件:
- => 远程登录
- or => 以身份远程登录
- => 指定端口号及用户名远程登录
- => 远程执行命令,并且在终端返回结果
文件传输协议客户端工具,数据未加密,安全性不高
- 去除前的,即去除该行的注释符号
- => 建立连接
- => 下载文件
- => 下载多个文件
- => 上传文件
- => 上传多个文件
交互式的文件传输工具,数据使用加密,安全性高
- => 连接服务器
- => 指定端口
- or => 查看支持的命令
- => 从远程服务器下载文件
- => 从远程服务器下载目录
- => 从本地上传文件
- => 从本地上传目录
- => 执行本地命令,如:
- or => 退出连接
功能强大的下载工具,支持很多协议:
界面及功能非常像,允许多个后台任务执行,书签排队,镜像,断点续传,多线程下载等
- => 远程登录
- or => 查看支持的命令
- or or => 下载文件/多个文件到本地<br>如果文件已存在,会报错,不会覆盖,但不会影响其它文件传输<br> => 断点续传,如果网络不稳定,或者文件比较大,下次下载的时候就可以直接在上一次传输的中途继续下载
- => 下载目录到本地
- or => 从本地上传文件/多个文件
- => 从本地上传目录
- or => 退出连接
从指定的上去下载文件,支持断点下载
如果下载的内容与已存在的内容重名了,那么新下载的内容会自动在文件名末尾添加之类的标识以区分
- => 下载指定文件里列出的地址
- => 下载后重命名文件
- => 打开断点续传
- => 启动后转入后台执行
- => 指定保存路径
- => 下载单个文件
- <br><br>=><br>在文件中键入所有需要下载的文件的地址,然后使用参数从文件里列出的地址一一下载
- => 将下载的文件重命名为
- => 将下载的文件保存到指定的目录
- => 限速下载
- => 打开断点续传<br>比如:下载到一半,由于网络因素等原因断开了连接(手动用来模拟),等问题排除后再一次运行相同的命令,下载不会从开始,而是继续从中断的位置往后下载
- => 后台下载<br> => 查看下载进度
远程拷贝文件
- => 从远程服务器指定用户的家目录下的文件,下载到本地的家目录下
- => 从远程服务器指定用户的家目录下的目录及其下的所有文件,下载到本地的家目录下
- => 从本地上传文件到远程服务器指定用户的家目录下
- => 从本地上传目录及其下的所有文件到远程服务器指定用户的家目录下
- => 使用指定端口号进行传输
- => 保留文件的最后修改时间及访问时间
数据传输工具
- => 指定新的本地文件名
- => 保留远程文件的原始名
- => 通过服务端配置的用户名和密码授权访问
- => 打印响应头信息
- => 设置用户代理标头信息
- => 设置用户信息
- => 支持断点续传
- => 静默模式,不输出任何信息
- => 上传文件
- => 获取指定网站的网页源码
- => 保存网页
- => 下载指定网站中的文件
- => 下载并重命名为
- => 断点续传
- => 打印指定网站的响应头文件
- => 通过下载指定文件服务器中的文件
- => 将本地的文件通过上传到指定的文件服务器中的指定目录下
域名查询,测试域名系统工作是否正常
- => 查询域名对应的地址
- => 显示执行域名查询的详细信息
- => 显示详细的信息
监听网络流量,能够记录所有经过服务器的数据包的信息,运行该命令需要管理员权限
- => 监视第一个网络接口上所有流过的数据包
- => 监视指定网络接口的数据包<br>通过来查看当前系统下有哪些网络接口
- => 显示指定数量的包
- => 以精简模式显示指定数量的包
- => 监视指定主机的数据包(主机名)
- => 监视指定主机的数据包(地址)
- => 监听指定端口号的数据包,并以文本形式展示
设置路由器,支持测试的和端口,也经常被使用于端口的扫描
- => 显示执行过程
- => 设置等待连线的时间
- => 使用0输入/输出模式,只在扫描通信端口使使用
- => 直接使用地址,而不通过域名服务器
- => 使用传输协议
- => 使用监听模式,管控传入的资料
- => 扫描指定的端口,范围为
- => 扫描指定的端口,范围为
- => 扫描指定端口
- => 监听某个端口
- => 连接某个端口
创建并设置账户信息
- => 指定用户登入时的目录
- => 初始群组
- => 非初始群组
- => 自动创建用户的家目录
- => 不要创建用户的家目录
- => 不要创建以用户名为名的群组
- => 指定用户登入后所使用的
- => 记录用户的信息<br>记录的格式:,其中,是隐藏的,用代替显示
- => 每个用户经过加密后的密码,如果没设置密码用表示
- => 组信息
- => 组对应的密码信息,一般不对其设置,除非需要很高的安全性
- => 直接创建新用户,用户名为
- => 常用创建方式
- => 指定家目录
- => 指定用户
- => 指定组
- => 分配多个组
- => 自定义注释
创建用户账户,与不同的是,是一个人机交互的过程,会一步步引导你输入对应的信息,而如果不自己手动添加参数或后续设置,将创建一个三无账户
=> 根据交互内容,一步步输入信息以创建账户
修改用户的密码
- => 删除已有密码
- => 锁定密码,不允许修改
- => 解除锁定,允许修改
- => 下次登录强制修改密码
- => 用户在期满后仍能使用
- => 查询密码状态
- => 修改当前用户的密码
- => 修改指定用户的密码(需要有管理员权限,同时还得知道该用户当前的密码)
删除用户账户
- => 删除指定的用户账户信息
- => 删除指定的用户账户信息、家目录及其目录下所有文件
切换用户身份
- or => 切换超级用户(某些系统不允许你切换超级用户)
- => 变更账号为,在执行完这一条命令后立即退出
- => 变更账号为并保留在当前工作目录
- => 变更账号为,同时切换到对应的家目录
以系统管理员身份执行指令
查看配置文件:<br><br>or<br>
- => 列出当前用户的权限
- => 指定以这一身份去执行这一条命令,默认情况下不加则是以管理员身份执行
- => 以管理员权限执行上一条命令
显示用户和组
- => 显示当前用户的所有信息
- => 显示指定用户信息
- => 显示指定用户所属组群的
- => 显示指定用户所属附加组群的
参数后不加用户名,则默认显示当前用户的信息
修改用户账户信息
- => 修改用户账户的备注文字
- => 修改用户登录时的家目录
- => 修改账号的有效期限
- => 修改在密码过期后多少天即关闭该账号
- => 修改用户所属的群组
- => 修改用户所属的附加群组
- => 修改用户账号名称
- => 锁定用户密码,使密码无效
- => 修改用户登录后所使用的
- => 修改用户
- => 解除密码锁定
- => 将账户的家目录更改为
- => 将账户的更改为
- => 将账户更名为
- => 锁定账户
- => 解锁账户
显示用户加入的所有的用户组
=> 显示用户加入的所有的用户组
创建新的用户组
- => 创建一个名为的用户组
- => 创建一个名为,用户组组为的用户组
- => 创建一个新的用户组,并将其设定为系统工作组
系统工作组定义在文件,字段是和,前者默认,后者默认,可自行修改
删除用户组
=> 将用户组删除
打印当前登录的用户
=> 查询当前登录的用户名
查看当前登录至系统的所有用户的信息
一个终端登入就算一个,所以查询得到的结果可能包含多个相同用户
- => 查看当前登录至系统的用户信息
- => 查看当前登录至系统的用户信息,并加上标题栏
- => 查看当前登录至系统的全部用户信息
- => 查看系统的最近启动时间
- => 显示终端属性
- => 以精简模式显示
显示已登入系统的用户列表,同时显示用户正在执行的命令
- => 显示目前登入系统的用户列表
- => 不打印标题栏
- => 显示/不显示用户从哪登录
- => 使用短格式输出
显示用户或终端的登录情况,可以看出谁曾经或企图登录系统
- => 省略的栏位
- => 把从何处登入系统的主机名或地址显示在最后一行
- or => 指定显示个数
- => 显示地址而不是主机名
- => 显示近期用户或终端的登录情况
- or => 简略显示,并指定显示个数
- => 最后一列显示主机地址
显示当前登录至系统的用户
一个终端登入就算一个,所以查询得到的结果可能包含多个相同用户
=> 显示当前登录至系统的用户
实时显示动态进程
- => 指定每两次屏幕信息刷新之间的时间间隔(单位为秒)
- => 切换显示命令名称和完整命令行
- => 通过指定监控进程来仅仅监控某个进程的状态
- => 信息更新最大次数
- => 显示进程绝对路径
- => 根据使用率排行
- => 根据物理内存使用率排行
- => 显示每个核的状况
- => 实时显示进程动态
- => 显示完整的进程信息<br>与直接打开后按快捷键等效
- => 指定信息刷新时间间隔为5秒
- => 仅监控进程为1877的进程动态
- => 设置信息刷新次数
显示进程状态
- => 显示所有进程
- => 显示所有终端机下执行的程序
- => 通常与一起使用,可以列出较为完整的信息
- => 列出程序时,显示每个程序所使用的环境变量
- => 用字符显示树状结构,表达程序间的相互关系
- => 列出属于该用户的程序的状况,也可以使用用户名称来指定
- => 用户名称
- => 进程号
- => 该进程所占用的百分比
- => 该进程所占用的内存百分比
- => 该进程所占用的虚拟内存大小
- => 进程所占用的实际内存大小
- => 该进程运行在哪个终端上,若与终端无关,则显示
- => 进程状态:
-
- => 运行
- => 可中断睡眠
- => 不可中断睡眠
- => 停止
- => 僵死
- => 进程启动时间
- => 进程实际占用的时间
- => 该进程对应的执行程序
- => 列出目前所有的正在内存当中的程序<br>内容较多不方便查看的话可以通过管道给打开:
- => 显示所有进程信息
- => 显示所有进程信息,连同命令行
- => 树形显示所有进程
- => 查找特定进程信息
- => 显示指定用户信息
- => 依据处理器使用量(第三列)的情况降序排序
以树状图显示进程
- => 以树状图显示进程
- => 显示该进程的完整指令及参数,遇到相同的进程名可以压缩显示
- => 显示当前所有进程的进程号和进程
- => 同时显示用户名
检索当前正在运行的进程
- => 设置一个字符串,用于分隔输出的每个进程
- => 匹配进程名(绝对路径)
- => 列出进程名及其进程
- => 选择仅匹配指定有效用户进程
- => 显示更多内容
- => 查找进程的
- => 指定分隔符输出<br>此时显示为一行,每个之间用空格隔开
- => 查询用户启动的进程的
- => 显示进程名及
- => 使用正则表达式
- => 匹配进程名(绝对路径中是否包含某字符串)
查看进程打开的文件
- => 列出打开文件存在的进程
- => 列出指定进程打开的文件
- => 列出号进程详情
- => 列出占用该文件号的进程
- => 列出目录下被打开的文件
- => 递归列出目录下被打开的文件
- => 列出使用的文件
- => 列出符合条件的进程
- => 列出指定进程号打开的文件
- => 列出号进程详情
- => 查看当前系统中全部文件与进程之间的对应信息<br>若查询结果出现,说明这一条信息需要管理员权限
- => 显示指定目录中被调用的文件信息
- => 递归显示指定目录中全部被调用的文件信息
- => 查看谁正在使用某个文件(查找某个文件相关的进程)
- => 列出某个用户打开的文件信息
- => 列出某个进程所打开的文件信息
- => 通过某个进程号显示该进程打开的文件
- => 根据文件描述列出对应的文件信息
终端任务调度
- => 列出当前的任务
- => 将2号任务调到前台运行
- => 将当前进程切到后台,但状态会停止
- => 恢复2号任务在后台运行(可以唤醒为)
- => 杀死3号任务,状态更改为<br>直接会报错,因为这代表另外的含义,具体可见下一节内容<br>上述命令中的后接的编号前也可以加
发送信号到进程
- => 终端断线
- => 中断,同
- => 退出,同
- => 终止
- => 强制终止
- => 继续,与相反
- => 暂停,同
- => 列出系统支持的所有信号
- => 不指定信号,通过进程号来终止某一个进程,等同于发送终止信号<br>有的进程可能会忽略这个信号从而不终止,此时需要发送强制终止:
- => 查看这个信号对应的数值
- => 杀死指定用户的所有进程
杀死一个或一组命令
- => 杀死所有名为的进程
- => 查看支持的所有信号
- => 发送指定信号
- => 杀死指定用户的所有进程
调整进程的优先级
- => 查看值,即标题为的列
- or => 启动命令在后台运行,同时将它的值设为15<br>值可设置范围在<br>注意:是直接设置为,而是在原值的基础上增加
- => 根据重新设置值为
- => 根据用户名重新设置值为
后台运行程序
- 有一个每隔1秒打印一段文字的程序:<br>在后台运行:,但是输出的文字还是会占用终端,而且,在关闭终端后该进程也将终止<br>与终端切断关联:,同时,输出的内容将会保存到程序同级目录下的文件中
- => 将输出重定向到文件中<br>其中,表示:将标准错误输出重定向到标准输出中,而标准输出又被重定向到了文件,所以,该进程产生的所有输出都将被重定向到文件<br>但是,运行后立即将发现没有任何内容,因为它存在一定缓存,需要到一定量才会输出到文件,过一会儿后再查看,会发现里面存在内容
包管理器
- => 列出所有可更新的软件清单
- => 升级所有可更新的软件包
- => 单独升级某一个软件包
- => 安装软件包
- => 删除软件包
- => 打印软件包信息
- => 清理不再使用的依赖和库文件
- => 列出已安装的所有软件包
包管理器
最初,包管理器被分散在这三个命令中,而包管理则是为了解决命令过于分散的问题,它相当于是这三个中最常用命令选项的集合
视觉功能更好
替换了部分系列命令,同时也有它独有的新增的命令
建议尽快适应并首选
设置或显示环境变量
环境变量指:在操作系统当中,用来指定操作系统运行的环境的一些参数,例如:,它用来保存可以搜索的目录、路径,可以通过查看
- => 代表中为函数名称
- => 删除指定的变量<br>实际上未被删除,只是不会输出到后续指令的执行环境中
- => 列出所有的赋予程序的环境变量
- 的作用效果仅限于本次登录
- 想要永久生效需要修改配置文件:
-
- => 所有用户
- => 当前用户
- => 列出当前所有的环境变量
- => 定义环境变量
- => 定义环境变量并赋值
- => 修改环境变量
- => 查看环境变量
在当前环境中从指定文件读取和执行命令,例如:在修改配置文件后,将其一下,就能使其生效,而不是重启
可以使用来替代
- or => 读取和执行文件
- => 执行刚修改的初始化文件,使之立即生效
设置/删除变量
- => 显示所有的变量
-
- => 定义一个新的变量
- => 将定义的变量输出到环境变量
- => 查看是否设置成功
- => 删除环境变量<br>注意:参数表示仅删除变量,参数表示仅删除函数
- => 优先删除变量
在终端输出字符串
- => 不输出结尾的换行符
- => 发出警告音
- => 删除前面一个字符
- => 结尾不加换行符,同时,后面的字符不会输出
- => 换行,光标仍停留在原来的坐标位置
- => 换行,光标移到行首
- => 光标移到行首,但不会换行,会覆写行开头的字符
- => 禁止反斜杠转译,与参数功能相反
- or => 在终端输出
- => 输出变量提取后的值
- => 取消转译
- => 重定向输出
- => 输出带有换行符的内容(开启转译)
格式化并输出结果
- => 警告字符,通常为的字符
- => 后退
- => 不显示输出结果中任何结尾的换行符,而且任何留在参数里的字符,任何接下来的参数以及任何留在格式字符串中的字符都被忽略
- => 换页
- => 换行
- => 回车
- => 水平制表符
- => 垂直制表符
- => 反斜杠字符
- => 字符,显示相对应参数的第一个字符
- => 十进制整数
- => 浮点格式
- => 浮点格式
- => 和之间转换,看哪一个较短,则删除结尾的零
- => 和之间转换,看哪一个较短,则删除结尾的零
- => 字符串
- => 不带正负号的十六进制,使用来表示
- => 字面意义的
- => 不带正负号的十六进制,使用来表示
- => 常见格式化字符,输出:
- => 输出:<br> => 该字符串宽度为,若字符串长度不足则在字符串前用空格补齐<br> => 含义同上,只不过当长度不足时在字符串后用空格补齐<br> => 该浮点数的整数部分最多显示四位,小数部分最多显示两位,表示左对齐,所以格式化后为
清除屏幕
显示并管理历史命令
- => 清空命令记录
- => 删除指定序号的命令记录
- => 读取命令记录
- => 显示执行过的全部命令记录
- => 显示执行过的最近5条命令
- => 重新执行2039号命令
- => 重新执行上一条命令
- => 将搜索与你输入相匹配的最近一个命令,并重新执行它
- => 调用命令历史记录的递归搜索
- => 删除特定序号的命令
- => 清空全部历史记录
登入/登出系统
退出终端/ssh连接
过滤器
- => 多行输出
- => 自定义一个定界符
- => 指定一个替换字符串
- => 打印执行的命令
- => 执行每一个命令时弹出确认
- => 多行输入单行输出,将换行符替换为空格
- => 分成三列进行输出
- => 通过进行分割,输出为
- => 执行每一个命令时弹出确认
- => 将结果的每一行都作为参数给命令,用来打印执行的命令
- => 查找当前文件下的所有后缀为的文件,将它们移动到目录下
- => 使用下载下所有的<br>如果添加是一行一行输送,而这里是整体输送
调用并执行指定命令
- => 调用并执行指定的命令,如果是在终端输入,那么在执行完后会退出终端
- => 结合命令使用
设置/取消命令别名
- => 查看系统已设置的别名
- => 给命令设置别名
- => 取消别名
显示指定命令的类型
- => 可以显示所有可能的类型,比如有些命令如是内建命令,同时也可以是外部命令
- => 只返回外部命令的信息,相当于命令
- => 只返回函数的信息
- => 返回指定类型的信息
- => 别名
- => 关键字,保留字
- => 函数,函数
- => 内建命令,内建命令
- => 文件,磁盘文件,外部命令
- => 没有找到
- =>
- =>
- =>
- =>
- => 显示包含该命令的所有位置
显示或设定系统日期和时间
- => 以默认格式显示当前时间和日期
- => 以指定格式显示当前时间和日期
- => 显示时间的同时加入更多信息
- => 显示昨天的日期<br>同理,也可以显示其它日期:<br>日期加减操作:<br>这些设定都需要跟在参数后
- or => 设置日期与时间<br>不过,系统自带时间校准,如果与互联网时间不一致,会自动更新
显示日历
- or => 显示当前月份日历
- => 显示近期3个月日历
- => 显示指定年月的日历
- or => 显示指定年份的所有日历
- => 显示自1月1日起到今天的天数
定时执行任务(重复)
- => 创建、编辑计划任务
- => 查看当前用户的计划任务
- => 删除当前用户的计划任务(所有)
- 计划任务实例(在通过打开后):
-
- => 每一分钟执行一次
- => 每个小时的第3和第15分钟执行
- => 每天的0-23小时内,每隔3小时的第30分钟执行<br>即:执行
- => 每两个小时重启一次
- => 每周六周日的一点十分重启一次
- => 每月1号和15号的5点50分检查磁盘
- => 每周日晚上10点执行
- => 每月的1、11、21、31号的6点30执行
- 依次表示分钟、小时、日期、月份、周,最后接上需要重复执行的命令
定时执行一次任务
- => 查看系统中的等待作业
- or => 删除系统中的编号为1的等待作业
- => 创建一个作业等到时执行,此时将进入交互式界面编写作业内容
-
- 例如:......
- 保存
- 取消
- => 立即执行脚本
- => 5分钟后执行脚本
- => 在17:00执行脚本
- => 在2024年11月6号的当前时间点执行脚本
显示命令执行时所消耗的时间
- => 挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其它进程所占用的时间片和进程被阻塞时所花费的时间
- => 进程花费在用户模式中的时间,这是唯一真正用于执行进程所花费的时间,其它进程和花费阻塞状态中的时间没有计算在内
- => 花费在内核模式中的时间,代表在内核中执行系统调用所花费的时间,这也是真正由进程使用的时间
=> 显示命令的时间统计结果
周期性执行命令
- => 重复执行命令(默认每2秒一次)
- => 每隔1秒执行一次,并高亮显示变化的数据
- => 监测当前目录中文件的变化
- => 监测磁盘和数据变化情况
数字计算器
- => 进入计算器
- 计算:
-
- => 加减乘除
- => 平方
- => 平方根
- => 设置小数位
- => 进制转换
- => 退出
- 通过管道计算:
-
- => 设置小数位计算结果<br>注意:这里必须小括号再除以一才能生效
- => 二进制转十进制
为文件创建快捷方式
软链接:相当于系统中的快捷方式,原始文件被移动或删除后,软链接的文件就无法使用
硬链接:将文件的属性块进行复制,将原始文件移动或删除后,硬链接文件依旧可以使用
- => 创建硬链接
- => 创建软链接
关闭/重启服务器
- 立即关机:
-
- (强制关机或重启)
- 立即重启
-
- (模拟重启过程,将过程写入到日志中)
- => 晚上11点关机
- => 5分钟后关机,并且通知所有人
- => 取消所有关机任务


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/172029.html