# Linux运维必会的命令详解（一）

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/10207.html | 发布：2022-09-19 | 更新：2022-09-19 | 分类：建站教程、投稿分享

## 1.mkdir

 

#### 简介

 

创建文件目录

 

#### 语法

 

mkdir [-p] dirName

 

#### 参数

 

-p 确认目录是否已经存在,若不存在则建立目录而不会报错

 

#### 示例

 

创建test文件夹及在其中创建new文件夹

 

$ mkdir -p test/new

 

## 2. find

 

#### 简介

 

文件搜索

 

#### 语法

 

find path -option [ expression ] [ -exec -ok command ] {} \;

 

#### 参数

 

expression表达式默认是 -print  
-mount -xdev 只查询和指定目录一个文件系统下的文件  
-amin n 在过去n分钟内被读取过  
-anewer file 读取时间迟于file的文件  
-atime n 在过去n天内被读取得文件  
-cmin n 在过去n分钟被修改过  
-cnewer file 比文件file更新的文件  
-ctime n 在过去n天内被修改过的文件  
-empty 空的文件  
-gid n or -group name gid 是 n 或是 group 名称是 name  
-ipath p -path p 路径符合p的文件，ipath会忽略大小写  
-name name -iname name 文件名符合name的文件，iname忽略大小写  
-size n 文件大小是n单位，b 代表 512 位元组的区块，c 表示字元数，k 表示 kilo bytes，w 是二个位元组  
-type  
c 文件类型是c的文件  
d 目录  
c 字型装置工作  
b 区块装置文件  
p 具名贮列  
f 一般文件  
i 符号连接  
s socket  
-pid n process id是n的文件

 

#### 示例

 

在当前目录及子目录以.sh结尾的文件列出来

 

$ find . -name "*.sh"

 

在当前目录及子目录列出20天内更新过的文件

 

$ find . -ctime -20

 

查找前目录中文件属主具有读、写权限，并且文件所属组的用户和其他用户具有读权限的文件

 

$ find . -type f -perm 644 -exec ls -l {} \;

 

## 3. awk

 

#### 简介

 

文本处理

 

#### 语法

 

awk 'condition { action }' filename

 

#### 参数

 

-F 指定字段分隔符  
action的相关函数：  
toupper()：字符转为大写  
tolower()：字符转为小写  
length()：返回字符串长度  
substr()：返回子字符串  
substr($1,2)：返回第一个字段，从第2个字符开始一直到结束  
substr($1,2,3)：返回第一个字段，从第2个字符开始开始后的3个字符  
sin()：正弦  
cos()：余弦  
sqrt()：平方根  
rand()：随机数

 

#### 示例

 

$ echo "aa bb cc dd" | awk -F "bb" '{ print $1}'  
aa

 

$ cat test.txt   
aa ss  
dd ff  
gg hh

 

$ cat test.txt | awk '{print NR")", $0}'  
1) aa ss  
2) dd ff  
3) gg hh

 

$ cat exp.txt   
/stsvc/fms/conf/application.yml  
/stsvc/sms/conf/application.yml  
/stsvc/tms/conf/application.yml  
/root/home/chenfan  
/root/home/jhhuang

 

$ cat exp.txt | awk '/stsvc/ {print $0}' #包含 stsvc 的行  
/stsvc/fms/conf/application.yml  
/stsvc/sms/conf/application.yml  
/stsvc/tms/conf/application.yml

 

$ cat exp.txt | awk '/stsvc\/fms/ {print $0}' #包含 stsvc/fms 的行  
/stsvc/fms/conf/application.yml

 

$ cat exp.txt | awk 'NR%2==1 {print $0}' #奇数行  
/stsvc/fms/conf/application.yml  
/stsvc/tms/conf/application.yml  
/root/home/jhhuang

 

$ echo "aa ss dds" | awk '{ if($3 == "dd") print $0; else print "nothing"}'  
nothing

 

## 4. sed

 

#### 简介

 

文本处理

 

#### 语法

 

sed [-hnV][-e<script>][-f<script文件>][文本文件]

 

#### 参数

 

-e<script> 以选项中指定的script来处理输入的文本文件  
-f<script> 以选项中指定的script来处理输入的文本文件  
-h 显示帮助  
-n 仅显示想script处理后的结果  
动作说明：  
a 新增，新增的内容出现在下一行  
i 插入，插入的内容出现在上一行  
c 取代，取代n1,n2之间的行  
d 删除  
p 打印，打印选择的数据，通常与sed -n一起运行  
s 取代，就是替换功能

 

#### 示例

 

在第二行下面添加Hello

 

$ sed '2a Hello'

 

搜索/etc/passwd包含root关键字的行

 

$ nl /etc/passwd| sed -n '/root/p'

 

删除/etc/passwd包含root关键字的行

 

$ nl /etc/passwd| sed '/root/d'

 

搜索/etc/passwd,找到root对应的行，执行后面花括号中的一组命令，每个命令之间用分号分隔，这里把bash替换为blueshell，再输出这行

 

$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'

 

$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'

 

数据的搜索与替换

 

$ sed 's/要被取代的字串/新的字串/g'

 

## 5. uniq

 

#### 简介

 

检查文件中的重复行列

 

#### 语法

 

uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]

 

#### 参数

 

-c 在列旁边显示该行重复次数  
-d 仅显示重复出现的行列  
-u 仅显示出行一次的行列  
-f<栏位> 忽略指定的栏位  
-s 忽略比较指定的字符  
-w<字符位置> 指定要比较的字符

 

#### 示例

 

$ cat testfile   
test 30   
test 30   
test 30   
Hello 95   
Hello 95   
Hello 95   
Hello 95   
Linux 85   
Linux 85

 

$ uniq -c testfile #删除重复行后的内容   
3 test 30 #前面的数字的意义为该行共出现了3次   
4 Hello 95 #前面的数字的意义为该行共出现了4次   
2 Linux 85 #前面的数字的意义为该行共出现了2次

 

## 6. sort

 

#### 简介

 

行列排序

 

#### 语法

 

sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

 

#### 参数

 

-b 忽略每行文本前面的空格  
-c 检查文件是否按照顺序排序  
-d 只处理英文字母。数字和空格，忽略其他字符  
-f 排序时，将小写字母看成大写字母  
-i 只处理040-176之间的ACSII码  
-m 将排序好的文件合并  
-M 将前面三个字母按照月份缩写排序  
-n 依照数值的大小排序  
-r 以相反的顺序排序  
-u 唯一，输出的结果是去重过的  
-t<分隔字符> 指定排序时所用的栏位分隔字符  
+<起始栏位>-<结束栏位> 以指定的栏位来排序，范围由起始栏位到结束栏位的前一个栏位

 

#### 示例

 

$ cat testfile #testfile文件原有排序   
test 30   
Hello 95   
Linux 85

 

$ sort testfile #重排结果   
Hello 95   
Linux 85   
test 30

 

## 7. tail

 

#### 简介

 

查看文件内容

 

#### 语法

 

tail [参数] [文件]

 

#### 参数

 

-f 循环读取  
-q 不显示处理信息  
-v 显示详细的处理信息  
-c<数目> 显示的字节数  
-n<行数> 显示文件的尾部 n 行内容  
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束  
-q, --quiet, --silent 从不输出给出文件名的首部  
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

 

#### 示例

 

循环显示notes.log的文件内容

 

$ tail -f notes.log

 

$ tail -f notes.log

 

## 8. head

 

#### 简介

 

查看文件开头部分内容

 

#### 语法

 

head [参数] [文件]

 

#### 参数

 

-q 隐藏文件名  
-v 显示文件名  
-c<数目> 显示的字节数。  
-n<行数> 显示的行数

 

#### 示例

 

显示 notes.log 文件的开头 5 行

 

$ head -n 5 runoob_notes.log

 

## 9. mkfs

 

#### 简介

 

在特定的分区建立文件系统

 

#### 语法

 

mkfs [-V] [-t fstype] [fs-options] filesys [blocks]

 

#### 参数

 

device ： 预备检查的硬盘分区，例如：/dev/sda1  
-V : 详细显示模式  
-t : 给定档案系统的型式，Linux 的预设值为 ext2  
-c : 在制做档案系统前，检查该partition 是否有坏轨  
-l bad_blocks_file : 将有坏轨的block资料加到 bad_blocks_file 里面  
block : 给定 block 的大小

 

#### 示例

 

在 /dev/hda5 上建一个 msdos 的档案系统，同时检查是否有坏轨存在

 

$ mkfs -V -t msdos -c /dev/hda5

 

将sda6分区格式化为ext3格式

 

$ mfks -t ext3 /dev/sda6

 

## 10. chmod

 

#### 简介

 

控制文件调用权限

 

#### 语法

 

chmod [-cfvR] [--help] [--version] mode file...

 

#### 参数

 

mode参数：

 

[ugoa...][[+-=][rwxX]...][,...]

 

(1) u 表示该文件的拥有者，g 表示与该文件的拥有者属于同一个群体(group)者，o 表示其他以外的人，a 表示这三者皆是  
(2) + 表示增加权限、- 表示取消权限、= 表示唯一设定权限  
(3) r 表示可读取，w 表示可写入，x 表示可执行，X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行

 

-c : 若该文件权限确实已经更改，才显示其更改动作  
-f : 若该文件权限无法被更改也不要显示错误讯息  
-v : 显示权限变更的详细资料  
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)

 

#### 示例

 

将文件 file1.txt 设为所有人皆可读取

 

$ chmod ugo+r file1.txt  
#或者  
$ chmod a+r file1.txt

 

将文件 file1.txt 与 file2.txt 设为该文件拥有者，与其所属同一个群体者可写入，但其他以外的人则不可写入

 

$ chmod ug+w,o-w file1.txt file2.txt

 

![Linux运维必会的命令详解（一）](https://www.mfisp.com/wp-content/uploads/2021/12/13281957246015c_1_post.jpg)

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
