Linux预习
零碎知识点
- “Shell”——也可称为"壳",充当的是人与内核(硬件)的翻译官,用户将一些命令"告诉"Shell,它就会调用相应的程序服务执行工作
- 若一个命令太长一行放不下,可在行尾输入"\"并按回车,可转到下一行输入
- .开头的隐藏文件,用 ls -a才能查看
- 定义别名、shell变量赋值时“=”两端不能有空格
Linux常用命令
概述
1 | who #命令列出所有正在使用系统的用户、所用终端名和注册到系统的时间 |
详细可查阅
命令详细
1.wc
wc命令统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。
**语法格式:**wc [参数] [文件]
常用参数:
-w | 统计字数,或–words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串 |
---|---|
-c | 统计字节数,或–bytes或–chars:只显示Bytes数 |
-l | 统计行数,或–lines:只显示列数 |
-m | 统计字符数 |
-L | 打印最长行的长度 |
–help | 显示帮助信息 |
–version | 显示版本信息 |
2.rm
rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。 rm也是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
**语法格式:**rm [参数] [文件]
常用参数:
-f | 忽略不存在的文件,不会出现警告信息 |
---|---|
-i | 删除前会询问用户是否操作 |
-r/R | 递归删除 |
-v | 显示指令的详细执行过程 |
3.cp
cp命令可以理解为英文单词copy的缩写,其功能为复制文件或目录。
cp命令可以将多个文件复制到一个具体的文件名或一个已经存在的目录下,也可以同时复制多个文件到一个指定的目录中。
**语法格式:**cp [参数] [文件]
常用参数:
-f | 若目标文件已存在,则会直接覆盖原文件 |
---|---|
-i | 若目标文件已存在,则会询问是否覆盖 |
-p | 保留源文件或目录的所有属性 |
-r | 递归复制文件和目录 |
-d | 当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录 |
-l | 对源文件建立硬连接,而非复制文件 |
-s | 对源文件建立符号连接,而非复制文件 |
-b | 覆盖已存在的文件目标前将目标文件备份 |
-v | 详细显示cp命令执行的操作过程 |
-a | 等价于“dpr”选项 |
4.diff命令 – 比较文件的差异
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录 。
**语法格式:**diff [参数] [目录]
常用参数:
-a | diff预设只会逐行比较文本文件 |
---|---|
-i | 忽略大小写 |
-b | 不检查空格字符的不同 |
-W | 在使用-y参数时,指定栏宽 |
-x | 不比较选项中所指定的文件或目录 |
-X | 您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件 |
-y | 以并列的方式显示文件的异同之处 |
–help | 查看帮助信息 |
–left-column | 在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容 |
–suppress-common-lines | 在使用-y参数时,仅显示不同之处 |
5.df命令 – 显示磁盘空间使用情况
df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
语法格式: df [参数] [指定文件]
常用参数:
-a | 显示所有系统文件 |
---|---|
-B <块大小> | 指定显示时的块大小 |
-h | 以容易阅读的方式显示 |
-H | 以1000字节为换算单位来显示 |
-i | 显示索引字节信息 |
-k | 指定块大小为1KB |
-l | 只显示本地文件系统 |
-t <文件系统类型> | 只显示指定类型的文件系统 |
-T | 输出时显示文件系统类型 |
– -sync | 在取得磁盘使用信息前,先执行sync命令 |
6.du命令 – 查看空间
du命令的英文全称是“Disk Usage”,即用于查看磁盘占用空间的意思。但是与df命令不同的是du命令是对文件和目录磁盘使用的空间的查看,而不是某个分区。
**语法格式:**du [参数] [文件]
常用参数:
-a | 显示目录中所有文件大小 |
---|---|
-k | 以KB为单位显示文件大小 |
-m | 以MB为单位显示文件大小 |
-g | 以GB为单位显示文件大小 |
-h | 以易读方式显示文件大小 |
-s | 仅显示总计 |
du查看当前目录及递归查看子目录大小, du -a在du基础上查看了文件大小
7.less命令 – 分页显示工具
浏览文字档案的内容,用less命令显示文件时,PageUp键向上翻页,PageDown键向下翻页,要退出less程序,应按Q键。
less的作用与more十分相似,不同点为less命令允许用户向前或向后浏览文件,而more命令只能向前浏览 。
**语法格式:**less [参数] [文件]
常用参数:
-b | 置缓冲区的大小 |
---|---|
-e | 当文件显示结束后,自动离开 |
-f | 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 |
-g | 只标志最后搜索的关键词 |
-i | 忽略搜索时的大小写 |
-m | 显示类似more命令的百分比 |
-N | 显示每行的行号 |
-o | 将less 输出的内容在指定文件中保存起来 |
-Q | 不使用警告音 |
-s | 显示连续空行为一行 |
-S | 在单行显示较长的内容,而不换行显示 |
-x | 将TAB字符显示为指定个数的空格字符 |
8.cmp命令 – 比较两个文件是否有差异
cmp命令有用于比较两个任意类型的文件,若两个文件相同则默认不输出任何信息,若两个文件不同,则会输出第一个不同之处的字符和列数编号,结果输出到标准输出。
若不指定任何文件名称或是所给予的文件名为”-“,则cmp命令会从标准输入设备读取数据。
**语法格式:**cmp [参数] [文件] [文件]
常用参数:
–help | 显示帮助 |
---|---|
-v/–version | 显示版本信息 |
-s/–quit/–silent | 不显示错误信息 |
-l/–verbose | 标示出所有不一样的地方 |
-i/–ignore-initial | 指定一个数目 |
-c/–print-chars | 除了标明差异处的十进制字码之外,一并显示该字符所对应字符 |
9.cut命令 – 连接文件并打印到标准输出设备上
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
**语法格式:**cut [参数] [文件]
常用参数:
-b | 以字节为单位进行分割 ,仅显示行中指定直接范围的内容 |
---|---|
-c | 以字符为单位进行分割 , 仅显示行中指定范围的字符 |
-d | 自定义分隔符,默认为制表符”TAB” |
-f | 显示指定字段的内容 , 与-d一起使用 |
-n | 取消分割多字节字符 |
–complement | 补足被选择的字节、字符或字段 |
–out-delimiter | 指定输出内容是的字段分割符 |
1 | #截取每一行字符@之前的内容 |
10.ln命令 – 为文件创建链接
ln命令是linux系统中一个非常重要命令,英文全称是“link”,即链接的意思,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接。
通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小,但是事实上却不占任何空间。符号链接可以理解为类似windows一样的快捷方式。
符号链接 :
- \1. 符号链接以路径的形式存在,类似于Windows操作系统中的快捷方式。
- \2. 符号链接可以跨文件系统 ,硬链接不可以。
- \3. 符号链接可以对一个不存在的文件名进行链接,硬链接不可以。
- \4. 符号链接可以对目录进行链接,硬链接不可以。
硬链接:
- 1.硬链接以文件副本的形式存在,但不占用实际空间。
- \2. 硬链接不允许给目录创建硬链接。
- 3.硬链接只有在同一个文件系统中才能创建。
语法格式: ln [参数] [源文件或目录] [目标文件或目录]
常用参数:
-b | 为每个已存在的目标文件创建备份文件 |
---|---|
-d | 此选项允许“root”用户建立目录的硬链接 |
-f | 强制创建链接,即使目标文件已经存在 |
-n | 把指向目录的符号链接视为一个普通文件 |
-i | 交互模式,若目标文件已经存在,则提示用户确认进行覆盖 |
-s | 对源文件建立符号链接,而非硬链接 |
-v | 详细信息模式,输出指令的详细执行过程 |
11.stat命令 – 显示文件状态信息
stat命令用来显示文件或文件系统的详细信息
**语法格式:**stat [参数]
常用参数:
-L | 支持符号链接 |
---|---|
-f | 显示文件系统的信息 |
-t | 以简洁的方式输出 |
–help | 显示命令帮助信息 |
–version | 显示命令版本信息 |
例子:
1 | $stat temp1 |
12.ls命令 – 显示指定工作目录下的内容及属性信息
ls 命令是Linux下最常用的指令之一。ls命令为英文单词 list 的缩写,正如英文单词 list 的意思,其功能是列出指定目录下的内容及其相关属性信息。
默认状态下,ls命令会列出当前目录的内容。而带上参数后,我们可以用ls做更多的事情。作为最基础同时又是使用频率很高的命令,我们很有必要搞清楚ls命令的用法,那么接下来一起看看吧!
语法格式: ls [选项] [文件]
常用参数:
-a | 显示所有文件及目录 (包括以“.”开头的隐藏文件) |
---|---|
-l | 使用长格式列出文件及目录信息 |
-r | 将文件以相反次序显示(默认依英文字母次序) |
-t | 根据最后的修改时间排序 |
-A | 同 -a ,但不列出 “.” (当前目录) 及 “…” (父目录) |
-S | 根据文件大小排序 |
-R | 递归列出所有子目录 |
13.awk命令 – 文本和数据进行处理的编程语言
awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理。
而且它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。
awk认为文件都是结构化的,也就是说都是由单 词和各种空白字符组成的,这里的“空白字符”包括 空格、Tab,以及连续的空格和Tab等。每个非空白 的部分叫做“域”,从左到右依次是第一个域、第二 个域,等等。$1,$2分别用于表示域,$0则表示全部域。
**语法格式:**awk [参数] [文件]
常用参数:
-F | 指定输入时用到的字段分隔符 |
---|---|
-v | 自定义变量 |
-f | 从脚本中读取awk命令 |
-m | 对val值设置内在限制 |
例子:
awk '{ print $2,$3 }' file
打印file每行第二个和第三个字段awk -F, '{ print $2,$3 }' file
,以逗号分隔字段,打印file每行第二个和第三个字段
1 | #可以使用substr()函数对指定域截取字符串 |
14.comm命令 – 比较两个已排过序的文件
comm命令会一列列地比较两个已排序文件的差异,并将其结果显示出来,如果没有指定任何参数,则会把结果分成3行显示:第1行仅是在第1个文件中出现过的列,第2行是仅在第2个文件中出现过的列,第3行则是在第1与第2个文件里都出现过的列。若给予的文件名称为”-“,则comm指令会从标准输入设备读取数据。
语法格式:[参数] [文件1][文件2]
-1 | 不显示只在第1个文件里出现过的列 |
---|---|
-2 | 不显示只在第2个文件里出现过的列 |
-3 | 不显示只在第1和第2个文件里出现过的列 |
–help | 在线帮助 |
–version | 显示版本信息 |
15.grep命令 – 强大的文本搜索工具
grep是“global search regular expression and print out the line”的简称,意思是全面搜索正则表达式,并将其打印出来。这个命令可以结合正则表达式使用,它也是linux使用最为广泛的命令。
grep命令的选项用于对搜索过程的补充,而其命令的模式十分灵活,可以是变量、字符串、正则表达式。需要注意的是:一当模式中包含了空格,务必要用双引号将其引起来。
linux系统支持三种形式的grep命令,大儿子就是grep,标准,模仿的代表。二儿子兴趣爱好多-egrep,简称扩展grep命令,其实和grep -E等价,支持基本和扩展的正则表达式。小儿子跑的最快-fgrep,简称快速grep命令,其实和grep -F等价,不支持正则表达式,按照字符串表面意思进行匹配。
简单来说,grep命令可以从文件中查找包含pattern部分字符串的行,并将该文件的路径和该行输出至屏幕
语法格式: grep [选项]… PATTERN [FILE]…
常用参数:
-i | 搜索时,忽略大小写 |
---|---|
-c | 只输出匹配行的数量 |
-l | 只列出符合匹配的文件名,不列出具体的匹配行 |
-n | 列出所有的匹配行,显示行号 |
-h | 查询多文件时不显示文件名 |
-s | 不显示不存在、没有匹配文本的错误信息 |
-v | 显示不包含匹配文本的所有行 |
-w | 匹配整词 |
-x | 匹配整行 |
-r | 递归搜索 |
-q | 禁止输出任何结果,已退出状态表示搜索是否成功 |
-b | 打印匹配行距文件头部的偏移量,以字节为单位 |
-o | 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位 |
-A<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 |
-B<显示行数> | 除了显示符合范本样式的那一列之外,并显示该行之前的内容。 |
从文件内容查找匹配指定字符串的行:
1 | $ grep "被查找的字符串" 文件名 |
例子:在当前目录里第一级文件夹中寻找包含指定字符串的 .in 文件
1 | grep "thermcontact" /.in |
从文件内容查找与正则表达式匹配的行:
1 | $ grep –e "正则表达式" 文件名 |
查找时不区分大小写:
1 | $ grep –i "被查找的字符串" 文件名 |
查找匹配的行数:
1 | $ grep -c "被查找的字符串" 文件名 |
从文件内容查找不匹配指定字符串的行:
1 | $ grep –v "被查找的字符串" 文件名 |
16.find命令 – 查找和搜索文件
find命令可以根据给定的路径和表达式查找的文件或目录。find参数选项很多,并且支持正则,功能强大。和管道结合使用可以实现复杂的功能,是系统管理者和普通用户必须掌握的命令。
find如不加任何参数,表示查找当前路径下的所有文件和目录,如果服务器负载比较高尽量不要在高峰期使用find命令,find命令模糊搜索还是比较消耗系统资源的。
语法格式:find [路径] [参数] [查找和搜索范围]
常用参数:
-name | 按名称查找 “*.c” |
---|---|
-size | 按大小查找 (0 +1M大于1M) |
-user | 按属性查找 |
-type | 按类型查找 (d: 目录 f: 一般文件 l: 符号连结) |
-iname | 忽略大小写 |
-
使用find命令并加上-name选项可以在当前目录下递归地查找符合参数所示文件名的文件,并将文件的路径输出至屏幕上。
1
2find
用法:find -name 文件名
例子
1 | find . -name "*.c" #将当前目录及其子目录下所有文件后缀为 .c 的文件列出来: |
17.let命令 – 执行一个或多个表达式
let命令是bash中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。
语法格式: let [参数]
例子:
1 | let "j=6+2" #等价于((j=6+2)) |
let使用C语言算术表达式语法
18.fold命令 – 限制文件列宽
fold命令会从指定的文件里读取内容,将超过限定列宽的列加入增列字符后(就是换行),输出到标准输出设备。若不指定任何文件名称,或是所给予的文件名为”-“,则fold指令会从标准输入设备读取数据。
**语法格式:**fold [参数] [文件]
常用参数:
-b | 以Byte为单位计算列宽,而非采用行数编号为单位 |
---|---|
-s | 以空格字符作为换列点 |
-w | 设置每列的最大行数 |
–help | 在线帮助 |
–version | 显示版本信息 |
19.sed命令 – 处理编辑文本文件
Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处理、编辑文本文件。sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed表达式通常用单引号来引用。不过也可以使用双引号。shell会在调用sed前先扩展双引号中的内容。如果想在sed表达式中使用变量,双引号就能派上用场了
**语法格式:**sed [参数] [文本文件]
常用参数:
-e或–expression=<script> | 以选项中指定的script来处理输入的文本文件 |
---|---|
-f<script文件>或–file=<script文件> | 以选项中指定的script文件来处理输入的文本文件 |
-h或–help | 显示帮助 |
-n或–quiet或–silent | 仅显示script处理后的结果 |
-V或–version | 显示版本信息 |
- sed使用命令行参数
1 | sed -i "s/"$2"/"$3"/g" "$1" #$1,$2,$3是命令行参数 |
- -e
1 | sed -e 's/this/That/g' - e 's/line/LINE/g' Sed.txt #使用-e 参数和分号连接多编辑命令 #两个编辑命令前都要使用-e 参数,如果有更多的编辑需求,以此类推即可 |
<script>中动作说明
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
1 | sed '/Empty/d' Sed.txt #删除所有包含Empty 的行 |
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦
1 | # sed -n 's/the/THE/p' Sed.txt #使用p 命令,则只打印实际处理过的行,简化了输出(使用-n 参数) |
1 | ### /#g标记可以使sed替换第N次出现的匹配: |
sed例子
20.nl命令-添加行号
nl命令是一个很好用的编号过滤工具。该命令可以读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。
**语法格式:**nl [参数] [文件]
常用参数:
-b | 指定行号指定的方式 |
---|---|
-n | 列出行号表示的方式 |
-w | 行号栏位的占用的位数 |
-p | 在逻辑定界符处不重新开始计算。 |
21.expr命令 – 命令行计数器
expr命令的英文全称是“expression”,即是表达式的意思,作用是一个命令行的计数器,常用于在UNIX/LINUX系统中求表达式变量的值,一般用于整数值,也可用于字符串。
**语法格式:**expr [表达式]
常用参数:
空格 | 隔开每个项 |
---|---|
\(反斜杠) | 放在 shell 特定的字符前面 |
“”(引号) | 对包含空格和其他特殊字符的字符串要用引号括起来 |
参考实例
- 正则表达式匹配 :
“string : REGEX"字符串匹配示例。要输出匹配到的字符串结果,需要使用”(“和”)",否则返回的将是匹配到的字符串数量。
1 | [root@xuexi ~]# expr abcde : 'ab\(.*\)' |
注意,由于REGEX中隐含了"^",所以使得匹配时都是从string首字符开始的。
1 | [root@xuexi ~]# expr abcde : 'cd.*' |
之所以为0,是因为真正的正则表达式是"^cd.*",而abcde不是c开头而是a开头的,所以无法匹配到任何结果。因此,任何字符串匹配时,都应该从首字符开始。
字符串匹配时,会先将两端参数转换为字符格式。
-
计算字串长度:
1 | [root@linuxcool ~]# expr length “this is a test” |
-
抓取字串(substr string pos len):
该表达式是从string中取出从pos位置开始长度为len的子字符串。如果pos或len为非正整数时,将返回空字符串。
1 | [root@linuxcool ~]# expr substr “this is a test” 3 5 |
-
抓取第一个字符数字串出现的位置(index string chars):
该表达式是从string中搜索chars中某个字符的位置,这个字符是string中最靠前的字符
1 | [root@linuxcool ~]# expr index "sarasara" a |
-
整数运算:
1 | [root@linuxcool ~]# expr 14 % 9 |
注意:使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义
-
使用expr进行四则运算:
1 | [root@linuxcool ~]# expr \( 10 + 10 \) \* 2 + 100 |
22.sort命令 – 排序文件并输出
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
**语法格式:**sort [参数] [文件]
常用参数:
-b | 忽略每行前面开始出的空格字符 |
---|---|
-c | 检查文件是否已经按照顺序排序 |
-d | 排序时,处理英文字母、数字及空格字符外,忽略其他的字符 |
-f | 排序时,将小写字母视为大写字母 |
-i | 排序时,除了040至176之间的ASCII字符外,忽略其他的字符 |
-m | 将几个排序号的文件进行合并 |
-M | 将前面3个字母依照月份的缩写进行排序 |
-n | 依照数值的大小排序 |
-o <输出文件> | 将排序后的结果存入制定的文件 |
-r | 以相反的顺序来排序 |
-t <分隔字符> | 指定排序时所用的栏位分隔字符 |
-k | 指定需要排序的栏位 -k 2 根据第二列拍排 -k 2, 4根据第二到四列排 |
-u | 忽略相同行 |
23.uniq命令 – 去除文件中的重复行
uniq命令全称是“unique”,中文释义是“独特的,唯一的”。该命令的作用是用来去除文本文件中连续的重复行,中间不能夹杂其他文本行。去除了重复的,保留的都是唯一的,也就是独特的,唯一的了。
我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。
**语法格式:**uniq [参数] [文件]
常用参数:
-c | 打印每行在文本中重复出现的次数 |
---|---|
-d | 只显示有重复的纪录,每个重复纪录只出现一次 |
-u | 只显示没有重复的纪录 |
24.tr命令 – 字符转换
tr的英文全称是“ transform ”,即转换的意思。该命令的作用是一种可将字符进行替换、压缩、删除,他可以将一组字符转换成另一组字符。tr他只能从标准输入中读取数据,因此,tr要么将输入文件重定向到标准输入,要么从管道读入数据。
注意:tr类似于sed命令,但是比sed简单,所以tr能实现的功能,sed都能实现。
**语法格式:**tr [参数] [字符串1] [字符串2]
-c | 选定字符串1中字符集的补集,即反选字符串1的补集 |
---|---|
-d | 删除字符串1中出现的所有字符 |
-s | 删除所有重复出现的字符序列,只保留一个 |
1 | cat Words.txt| tr -s ' ' '\n' |
25.打印命令
- 指定打印前几行:$ head -n 4 file 该命令会打印出文件的前4行。
- 打印最后5行:$ tail -n 5 file
- 標題: Linux预习
- 作者: sdjasj
- 撰寫于: 2022-02-18 20:03:55
- 更新于: 2022-03-16 21:57:02
- 連結: https://redefine.ohevan.com/2022/02/18/Linux预习/
- 版權宣告: 本作品采用 CC BY-NC-SA 4.0 进行许可。