Linux常用命令总结(建议收藏)

news2024/11/23 21:28:54

在这里插入图片描述


文章目录

  • 一、文件管理
    • 1、cat:查看文件内容
      • 案例1:输出内容+行数
    • 2、chmod:是控制用户对文件的权限的命令
      • 案例1::将user文件修改成用户、组、其他用户都可以读写可执行的权限
    • 3、diff:用于比较文件的差异
    • 4、find:命令用来在指定目录下查找文件。
      • 案例1:查找当前目录下以.sh结束的所有文件
      • 案例2:查找当前目录下以f开头的所有文件
      • 案例3:最近60分钟内修改过的文件
      • 案例4:查找当前目录下以sh结尾的文件,并且把这些文件复制到20221214目录下
    • 5、cut:截切、取出文本中指定的列、默认以空格或者tab键进行分割(不支持不规则的空格) 选项。
      • 案例1:查看第一列的内容(默认以制表符)
      • 案例2:以冒号为准,查看第一列的内容(默认以制表符)
      • 案例3:以冒号为准,查看第一列到第3列的内容
    • 6、less:可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。
    • 7、more:类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读
    • 8、mv:用来为文件或目录改名、或将文件或目录移入其它位置
    • 9、rm:删除文件或者目录
    • 10、touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件
    • 11、cp:复制文件或者目录
    • 12、scp: scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
      • 1、从本地将文件传输到服务器
      • 2、从本地将文件夹传输到服务器
      • 3、将服务器上的文件传输到本地
      • 4、将服务器上的文件夹传输到本地
    • 13、awk:一种处理文本文件的语言,是一个强大的文本分析工具
      • 案例1:、打印文本中所有行的内容(空格)
      • 案例2:、打印文本中第一列的内容(空格)
      • 案例3:、打印出文本中最后一列的内容(空格)
      • 案例4:、打印出文本中倒数第二列的内容(空格)
      • 案例5:、将包含www关键字的所在行的第3列取出
      • 案例6:、将以gdm开头到mysql开头之间所有行的最后一列取出(按照冒号分割)
      • 案例7:、打印第一行中的第一列
      • 案例8:、打印第1到第5行中的第一列
      • 案例9:、将文件从10到18行,并且第一列和最后一列打印出来
      • 案例10:、将文件从10到18行,并且第一列和最后一列打印出来(左对齐)
    • 14、read:用于从标准输入读取数值
      • 案例1:简单读取
      • 案例2:-p 参数,允许在 read 命令行中直接指定一个提示。
      • 案例3:-n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。
    • 15、head:用于查看文件的开头部分的内容,
    • 16、tail:用于查看文件的内容,
  • 二、文档编辑
    • 1、grep:用于查找文件里符合条件的字符串
      • 案例1、查找文件下包含mysql关键字的所在行
      • 案例2、查找某个目录下包含mysql关键字的内容
      • 案例3、查找某个目录下包含mysql关键字的路径
      • 案例4、查找以redis开头的所有行
      • 案例5、查找以false结尾的所有行
      • 案例6、查找包含“oo”的内容
      • 案例7、统计包含“oo”关键字的行数
    • 2、sed:文本的增删改查
      • 案例1、将第4行打印出来
      • 案例2、将第5行到第8行打印出来
      • 案例3、将包含root的内容打印出来
      • 案例4、将以m开头的内容打印出来
      • 案例5、将以man开头到list开头中间的内容打印出来
      • 案例6、在man开头的下面新增内容
      • 案例7、将文本中包含“四”关键字的行删除
      • 案例8、将文本中包含五的行和空行删除
      • 案例9、将第2和3行删除
      • 案例10、删除第2到最后一行
      • 案例11、将jm改成zhil(如果一行有多个,默认修改的是第一个)
      • 案例12、将jm改成zhil,全局修改
      • 案例13、将第2~4行的jm改成zhil,全局修改
    • 3、sort:对文本的内容进行排序
      • 案例1:以数值大小(从大到小)进行排序
      • 案例2:sort -n file | uniq:去重(前提进行排序)
    • 4、expr:手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串
    • 5、uniq:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。
    • 6、wc:计算文本数量
  • 三、磁盘管理
    • 1、cd:用于切换当前工作目录
    • 2、df:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计
    • 3、du:用于显示目录或文件的大小。
    • 4、mkdir:用于创建目录。
    • 5、pwd:用于显示工作目录。
    • 6、rmdir:删除空的目录
    • 7、tree:用于以树状图列出目录的内容
    • 8、ls:用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)
  • 四、网络通信
    • 1、ifconfig:用于显示或设置网络设备
    • 2、netstat:用于显示网络状态
    • 3、ping:用于检测主机
  • 五、系统管理
    • 1、useradd、passwd、userdel:用于建立用户帐号,设置密码、用于删除用户帐号
      • 案例1:添加user1用户
      • 案例2:查看所添加用户
      • 案例3:修改用户密码
      • 案例4:删除用户
    • 2、date:可以用来显示或设定系统的日期与时间
    • 3、kill:用于删除执行中的程序或工作
    • 4、ps:用于显示当前进程的状态,类似于 windows 的任务管理器。
    • 5、top:用于实时显示 process 的动态
    • 6、sudo:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
    • 7、su:用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
    • 8、id:用于显示用户的ID,以及所属群组的ID
    • 9、free:用于显示内存状态
  • 六、系统设置
    • 1、clear:用于清除屏幕
    • 2、unset:用于删除变量或函数
    • 3、export:用于设置或显示环境变量
  • 七、备份压缩
    • 1、tar:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。
      • 案例1:将当前目录下所有的文件和目录进行压缩
      • 案例2:解包
      • 案例3:将当前目录下以txt结尾的文件,进行压缩成tar.gz类型的文件
      • 案例4:解压

一、文件管理

1、cat:查看文件内容

-n:由 1 开始对所有输出的行数编号。

ubuntu@VM-24-12-ubuntu:~/20221212$ cat case.sh 
#!/bin/bash
echo "请输入数字:"
read num
case $num in
        1)
                echo "你选择了1"
                ;;
        2)
                echo "你选择了2"
                ;;
        3)
                echo "你选择了3"
                ;;
        4)
                echo "你选择了4"
                ;;
        *)
                echo "输入错误"
                ;;
esac

案例1:输出内容+行数

ubuntu@VM-24-12-ubuntu:~/20221212$ cat -n case.sh 
     1  #!/bin/bash
     2  echo "请输入数字:" num
     3  read -p -n1 "你输入的num是" num 
     4  case $num in
     5          1)
     6                  echo "你选择了1"
     7                  ;;
     8          2)
     9                  echo "你选择了2"
    10                  ;;
    11          3)
    12                  echo "你选择了3"
    13                  ;;
    14          4)
    15                  echo "你选择了4"
    16                  ;;
    17          *)
    18                  echo "输入错误"
    19                  ;;
    20  esac

2、chmod:是控制用户对文件的权限的命令

每个文件的属性由左边第一部分的 10 个字符来确定(如下图)
在这里插入图片描述

从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,
第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,
第7-9位确定其他用户拥有该文件的权限。
其中,
第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;
第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。

Linux/Unix 的文件调用权限分为三级 :
文件所有者(Owner)
用户组(Group)
其它用户(Other Users)

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

r:4
w:2
x:1

每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx— 分数则是:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:

案例1::将user文件修改成用户、组、其他用户都可以读写可执行的权限

ubuntu@VM-24-12-ubuntu:~/20221212$ chmod 777 users 

3、diff:用于比较文件的差异

diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。

ubuntu@VM-24-12-ubuntu:~/20221212$ diff func1.sh func2.sh 
4c4
<       echo "输入的第一个数为:"
---
>       echo "请输入的第一个数为:"
6c6
<       echo "输入的第二个数为:"
---
>       echo "请输入的第二个数为:"
11a12
> 
13c14
< echo "输入的两个数字之和为:$?"
---
> echo "两个数字之和为:$?"

4、find:命令用来在指定目录下查找文件。

案例1:查找当前目录下以.sh结束的所有文件

ubuntu@VM-24-12-ubuntu:~/20221212$ find ./ -name '*.sh'
./func1.sh
./for.sh
./test2.sh
./break.sh
./case.sh
./test1.sh
./func2.sh
./func.sh
./while.sh
./if.sh

案例2:查找当前目录下以f开头的所有文件

ubuntu@VM-24-12-ubuntu:~/20221212$ find ./ -name 'f*'
./func1.sh
./for.sh
./func2.sh
./func.sh

案例3:最近60分钟内修改过的文件

ubuntu@VM-24-12-ubuntu:~/20221212$ find -cmin -60
.
./test3.sh

案例4:查找当前目录下以sh结尾的文件,并且把这些文件复制到20221214目录下

ubuntu@VM-24-12-ubuntu:~/20221212$ find ./ -name "*.sh" -exec cp {} ./20221214/ \;

5、cut:截切、取出文本中指定的列、默认以空格或者tab键进行分割(不支持不规则的空格) 选项。

参数:

-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。

test1.txt文件

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ cat test1.txt 
name    area            age
kobe    beijing         18
jm      shanghai        19
james   changsha        20

案例1:查看第一列的内容(默认以制表符)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ cut -f1 test1.txt 
name
kobe 
jm
james

案例2:以冒号为准,查看第一列的内容(默认以制表符)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ cut -d":" -f1 passwd 
root
daemon
bin
sys
sync
games
man

案例3:以冒号为准,查看第一列到第3列的内容

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ cut -d: -f1-3 passwd 
root:x:0
daemon:x:1
bin:x:2
sys:x:3
sync:x:4
games:x:5
man:x:6

6、less:可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

ps查看进程信息并通过less分页显示

ubuntu@VM-24-12-ubuntu:~/20221212$ ps -ef | less

7、more:类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读

8、mv:用来为文件或目录改名、或将文件或目录移入其它位置

命令格式运行结果

mv source_file(文件) dest_file(文件)
将源文件名 source_file 改为目标文件名 dest_file

mv source_file(文件) dest_directory(目录)
将文件 source_file 移动到目标目录 dest_directory 中

mv source_directory(目录) dest_directory(目录)
目录名 dest_directory 已存在,将 source_directory 移动到目录名 dest_directory 中;目录名 dest_directory 不存在则 source_directory 改名为目录名 dest_directory

mv source_directory(目录) dest_file(文件) 出错

9、rm:删除文件或者目录

-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。

删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:

rm  test.txt 
rm:是否删除 一般文件 "test.txt"? y  

rm  homework  
rm: 无法删除目录"homework": 是一个目录  

rm  -r  homework  
rm:是否删除 目录 "homework"? y 

10、touch:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件

使用指令"touch"修改文件"test1.sh "的时间属性为当前系统时间,输入如下命令:

首先,使用ls命令查看"test1.sh "文件的属性,如下所示:

ubuntu@VM-24-12-ubuntu:~/20221212$ ls -al test1.sh 
-rw-rw-r-- 1 ubuntu ubuntu 242 Dec 12 23:11 test1.sh

执行指令"touch"修改文件属性以后,并再次查看该文件的时间属性,如下所示:

ubuntu@VM-24-12-ubuntu:~/20221212$ touch test1.sh 
ubuntu@VM-24-12-ubuntu:~/20221212$ ls -al test1.sh 
-rw-rw-r-- 1 ubuntu ubuntu 242 Dec 14 23:07 test1.sh

11、cp:复制文件或者目录

-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。

使用指令 cp 将当前目录 test/ 下的所有文件复制到新目录 newtest 下,输入如下命令:

$ cp –r test/ newtest          

12、scp: scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

1、从本地将文件传输到服务器

scp【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】

scp /root/test ubuntu@82.156.178.247:/home/ubuntu/20221212/

2、从本地将文件夹传输到服务器

scp -r【本地文件的路径】【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】

scp /root/my.txt ubuntu@82.156.178.247:/home/ubuntu/20221212/

3、将服务器上的文件传输到本地

scp 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】

scp root@82.156.178.247:/data/wwwroot/default/111.png /Users/Desktop

4、将服务器上的文件夹传输到本地

scp -r 【服务器用户名】@【服务器地址】:【服务器上存放文件的路径】【本地文件的路径】

scp -r root@82.156.178.247:/data/wwwroot/default/test /Users/Desktop

13、awk:一种处理文本文件的语言,是一个强大的文本分析工具

BEGIN{}:处理数据之前执行,只执行一次
pattern:匹配模式
{commands}:处理的命令
END{}:处理数据之后执行,只执行一次

内置变量

$0:整行内容
$1-$n:当前行的第1-n个字段
NF:当前行的字段数
NR:当前行行号
FS:输入字段分隔符,默认为空格或者tab键
RS:输入行分隔符,默认为回车符

案例1:、打印文本中所有行的内容(空格)

ubuntu@VM-24-12-ubuntu:~/20221212$ awk '{print $0}' test1.sh 
#!/bin/bash
echo "shell脚本中传递参数:"
echo "脚本名称:$0"
echo "传递的第一个参数:$1"
echo "传递的第二个参数:$2"
echo "传递的参数个数:$#"
echo "传递的参数有:$@"
echo "传递的参数有:$*"

案例2:、打印文本中第一列的内容(空格)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk '{print $1}' test1.txt 
name
kobe
jm
james

zilv
jm

案例3:、打印出文本中最后一列的内容(空格)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk '{print $NF}' test1.txt 
age
18
19
20

16
21

案例4:、打印出文本中倒数第二列的内容(空格)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk '{print $(NF-1)}' test1.txt 
area
beijing
shanghai
changsha
awk: cmd. line:1: (FILENAME=test1.txt FNR=5) fatal: attempt to access field -1

案例5:、将包含www关键字的所在行的第3列取出

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk '/jm/ {print $2}' test1.txt 
shanghai
wuhan

案例6:、将以gdm开头到mysql开头之间所有行的最后一列取出(按照冒号分割)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk -F: '/^gdm/,/^mysql/ {print $NF}' passwd 
/bin/false
/usr/sbin/nologin
/bin/bash
/usr/sbin/nologin
/bin/false

案例7:、打印第一行中的第一列

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk -F: 'NR==10 {print $1}' passwd 
lp

案例8:、打印第1到第5行中的第一列

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk -F: 'NR==1,NR==5 {print $1}' passwd 

t
daemon
bin
sys

案例9:、将文件从10到18行,并且第一列和最后一列打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk -F: 'NR==10,NR==18 {print $1,$NF}' passwd 
lp /usr/sbin/nologin
mail /usr/sbin/nologin
news /usr/sbin/nologin
uucp /usr/sbin/nologin
proxy /usr/sbin/nologin
www-data /usr/sbin/nologin
backup /usr/sbin/nologin
list /usr/sbin/nologin
irc /usr/sbin/nologin

案例10:、将文件从10到18行,并且第一列和最后一列打印出来(左对齐)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ awk -F: 'NR==10,NR==18 {printf "%-15s%-20s\n",$1,$NF}' passwd 
lp             /usr/sbin/nologin   
mail           /usr/sbin/nologin   
news           /usr/sbin/nologin   
uucp           /usr/sbin/nologin   
proxy          /usr/sbin/nologin   
www-data       /usr/sbin/nologin   
backup         /usr/sbin/nologin   
list           /usr/sbin/nologin   
irc            /usr/sbin/nologin   

14、read:用于从标准输入读取数值

-p 后面跟提示信息,即在输入前打印提示信息
-n 后跟一个数字,定义输入文本的长度,很实用。

案例1:简单读取

echo "请输入数字:"
read num
case $num in
        1)
                echo "你选择了1"
                ;;
        2)
                echo "你选择了2"
                ;;
        3)
                echo "你选择了3"
                ;;
        4)
                echo "你选择了4"
                ;;
        *)
                echo "输入错误"
                ;;
esac
ubuntu@VM-24-12-ubuntu:~/20221212$ bash case.sh 
请输入数字:
2
你选择了2

案例2:-p 参数,允许在 read 命令行中直接指定一个提示。

#!/bin/bash
echo "请输入数字:" num
read -p "你输入的num是" num
case $num in
        1)
                echo "你选择了1"
                ;;
        2)
                echo "你选择了2"
                ;;
        3)
                echo "你选择了3"
                ;;
        4)
                echo "你选择了4"
                ;;
        *)
                echo "输入错误"
                ;;
esac
ubuntu@VM-24-12-ubuntu:~/20221212$ bash case.sh 
请输入数字: num
你输入的num是2
你选择了2

案例3:-n 参数设置 read 命令计数输入的字符。当输入的字符数目达到预定数目时,自动退出,并将输入的数据赋值给变量。

#!/bin/bash
read -n1 -p "请你输入[Y/N]" answer
case $answer in
        Y | y)
                echo "继续"
                ;;
        N | n)
                echo "bye"
                ;;
        *)
                echo "error choice"
                ;;
esac
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ bash read.sh 
请你输入[Y/N]Y继续
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ bash read.sh 
请你输入[Y/N]Merror choice
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ bash read.sh 
请你输入[Y/N]
error choice

15、head:用于查看文件的开头部分的内容,

有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

案例:显示前3行内容

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ head -n3 read.sh 
#!/bin/bash
read -n1 -p "请你输入[Y/N]" answer
case $answer in

16、tail:用于查看文件的内容,

有一个常用的参数 -f 常用于查阅正在改变的日志文件

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

命令格式:

tail [参数] [文件]

tail notes.log # 默认显示最后 10 行

要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:

tail -f notes.log

二、文档编辑

1、grep:用于查找文件里符合条件的字符串

-i:忽略大小写
-c:只输出匹配行的数量
-n:显示行号
-r:递归搜索
-l:只列出匹配的文件名

案例1、查找文件下包含mysql关键字的所在行

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -n 'mysql' passwd 
48:mysql:x:127:134:MySQL Server,,,:/nonexistent:/bin/false

案例2、查找某个目录下包含mysql关键字的内容

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -n -r 'mysql' ./
./passwd:48:mysql:x:127:134:MySQL Server,,,:/nonexistent:/bin/false

案例3、查找某个目录下包含mysql关键字的路径

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -l -r 'mysql' ../
../20221215/passwd

案例4、查找以redis开头的所有行

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -n '^redis' passwd 
49:redis:x:128:135::/var/lib/redis:/usr/sbin/nologin

案例5、查找以false结尾的所有行

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -n 'false$' passwd 
27:tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
35:speech-dispatcher:x:114:29:Speech Dispatcher,,,:/run/speech-dispatcher:/bin/false
38:hplip:x:119:7:HPLIP system user,,,:/run/hplip:/bin/false
39:whoopsie:x:120:125::/nonexistent:/bin/false
43:gnome-initial-setup:x:124:65534::/run/gnome-initial-setup/:/bin/false
44:gdm:x:125:130:Gnome Display Manager:/var/lib/gdm3:/bin/false
48:mysql:x:127:134:MySQL Server,,,:/nonexistent:/bin/false

案例6、查找包含“oo”的内容

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -n 'oo' passwd 
2:t:x:0:0:root:/root:/bin/bash
10:lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
12:news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
13:uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
37:kernoops:x:116:65534:Kernel Oops Tracking Daemon,,,:/:/usr/sbin/nologin
39:whoopsie:x:120:125::/nonexistent:/bin/false

案例7、统计包含“oo”关键字的行数

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ grep -i -c 'oo' passwd 
6

2、sed:文本的增删改查

-n:只打印模式匹配的行
-f:加载存放动作的文件
-r:支持拓展正则
-i:直接修改文件

案例1、将第4行打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -n '4 p' passwd 
bin:x:2:2:bin:/bin:/usr/sbin/nologin

案例2、将第5行到第8行打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -n '5,8 p' passwd 
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin

案例3、将包含root的内容打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -n '/root/ p' passwd 
t:x:0:0:root:/root:/bin/bash

案例4、将以m开头的内容打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -n '/^m/ p' passwd 
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
mysql:x:127:134:MySQL Server,,,:/nonexistent:/bin/false

案例5、将以man开头到list开头中间的内容打印出来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -n  '/^man/,/^list/ p' passwd 
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
666666666这三新增的内容
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin

案例6、在man开头的下面新增内容

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed '/^man/ a 20221215新增的内容' passwd 
t:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
20221215新增的内容
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

案例7、将文本中包含“四”关键字的行删除

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed '/jm/ d' test1.txt 
name    area            age
kobe    beijing         18
james   changsha        20

案例8、将文本中包含五的行和空行删除

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed -r '/^jm|^$/ d' test1.txt 
name    area            age
kobe    beijing         18
james   changsha        20
zilv    beijing         16

案例9、将第2和3行删除

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed '2,3 d' test1.txt 
name    area            age
james   changsha        20

zilv    beijing         16

案例10、删除第2到最后一行

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed '2,$ d' test1.txt 
name    area            age

案例11、将jm改成zhil(如果一行有多个,默认修改的是第一个)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed 's/jm/zhil/g' test1.txt 
name    area            age
kobe    beijing         18
zhil    shanghai        19
james   changsha        20

zilv    beijing         16

案例12、将jm改成zhil,全局修改

g:全局修改
i:忽略大小写

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed 's/jm/zhil/gi' test1.txt 
name    area            age
kobe    beijing         18
zhil    shanghai        19
james   changsha        20

zilv    beijing         16
zhil    wuhan           21

案例13、将第2~4行的jm改成zhil,全局修改

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sed '2,4 s/jm/zhil/g' test1.txt 
name    area            age
kobe    beijing         18
zhil    shanghai        19
james   changsha        20

zilv    beijing         16
jm      wuhan           21

3、sort:对文本的内容进行排序

默认以字符的ASCII数码值从小到大排序

-n:以数值大小进行排序
-r:倒序
-t:指定分隔符,默认为空格
-k num:指定某个字段进行排序

案例1:以数值大小(从大到小)进行排序

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sort -n sort.txt 
1 
2
3
4
5
7
8
8
8
9
9 

案例2:sort -n file | uniq:去重(前提进行排序)

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sort -n sort.txt | uniq
1 
2
3
4
5
7
8
9

4、expr:手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串

用空格隔开每个项;
用反斜杠 \ 放在 shell 特定的字符前面;
对包含空格和其他特殊字符的字符串要用引号括起来

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ expr 2 + 3
5

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ expr 2 - 3 
-1

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ expr 2 \* 3 
6

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ expr 8 / 2 
4

5、uniq:用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用。

6、wc:计算文本数量

wc -l 打印行数
wc -w 打印单词数

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ wc -l test1.txt 
4 test1.txt
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ wc -w test1.txt 
12 test1.txt

三、磁盘管理

1、cd:用于切换当前工作目录

2、df:用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计

ubuntu@VM-24-12-ubuntu:~/20221212$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              966068       0    966068   0% /dev
tmpfs             203016     740    202276   1% /run
/dev/vda2       41174636 5004576  34397372  13% /
tmpfs            1015060      24   1015036   1% /dev/shm
tmpfs               5120       0      5120   0% /run/lock
tmpfs            1015060       0   1015060   0% /sys/fs/cgroup
tmpfs             203012       0    203012   0% /run/user/1000

-h选项,通过它可以产生可读的格式df命令的输出

ubuntu@VM-24-12-ubuntu:~/20221212$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            944M     0  944M   0% /dev
tmpfs           199M  740K  198M   1% /run
/dev/vda2        40G  4.8G   33G  13% /
tmpfs           992M   24K  992M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           992M     0  992M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/1000

3、du:用于显示目录或文件的大小。

4、mkdir:用于创建目录。

-p 确保目录名称存在,不存在的就建一个

案例1:在工作目录下的 runoob2 目录中,建立一个名为 test 的子目录。
若 runoob2 目录原本不存在,则建立一个。

mkdir -p runoob2/test

5、pwd:用于显示工作目录。

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ pwd
/home/ubuntu/20221212/20221215

6、rmdir:删除空的目录

-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。

rmdir -p BBB/Test

7、tree:用于以树状图列出目录的内容

ubuntu@VM-24-12-ubuntu:~/20221212$ tree
.
├── 20221214
│   └── data.txt
├── a.txt
├── break.sh
├── case.sh
├── for.sh
├── func1.sh
├── func2.sh
├── func.sh
├── if.sh
├── myfile
├── test1.sh
├── test2.sh
├── time.txt
├── users
└── while.sh

1 directory, 15 files

8、ls:用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)

-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ ls -a
.  ..  passwd  read.sh  sort.txt  test1.txt
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ ls -al
total 24
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 15 09:43 .
drwxrwxr-x 4 ubuntu ubuntu 4096 Dec 15 09:29 ..
-rw-rw-r-- 1 ubuntu ubuntu 2807 Dec 15 08:59 passwd
-rw-rw-r-- 1 ubuntu ubuntu  167 Dec 15 09:35 read.sh
-rw-rw-r-- 1 ubuntu ubuntu   24 Dec 15 09:43 sort.txt
-rw-rw-r-- 1 ubuntu ubuntu   66 Dec 15 09:07 test1.txt

四、网络通信

1、ifconfig:用于显示或设置网络设备

2、netstat:用于显示网络状态

3、ping:用于检测主机

执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=251 time=10.3 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=251 time=10.3 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=251 time=10.3 ms

五、系统管理

1、useradd、passwd、userdel:用于建立用户帐号,设置密码、用于删除用户帐号

useradd 可用来建立用户帐号。帐号建好之后,
再用 passwd 设定帐号的密码。
而可用 userdel 删除帐号。
使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中

案例1:添加user1用户

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sudo useradd user1

案例2:查看所添加用户

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ cat /etc/passwd | grep user1
user1:x:1002:1002::/home/user1:/bin/sh

案例3:修改用户密码

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sudo passwd user1
New password: 
Retype new password: 
passwd: password updated successfully

案例4:删除用户

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ sudo userdel user1

2、date:可以用来显示或设定系统的日期与时间

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ date
Thu 15 Dec 2022 09:55:12 AM CST

3、kill:用于删除执行中的程序或工作

彻底杀死进程

kill -9 123456

4、ps:用于显示当前进程的状态,类似于 windows 的任务管理器。

ps -ef | grep 进程关键字

5、top:用于实时显示 process 的动态

6、sudo:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

7、su:用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。

8、id:用于显示用户的ID,以及所属群组的ID

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ id root
uid=0(root) gid=0(root) groups=0(root)

9、free:用于显示内存状态

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ free
              total        used        free      shared  buff/cache   available
Mem:        2030124      277180       96608        2332     1656336     1557592
Swap:             0           0           0

六、系统设置

1、clear:用于清除屏幕

2、unset:用于删除变量或函数

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ a=24
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ echo $a
24
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ unset a
ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ echo $a

3、export:用于设置或显示环境变量

export -p 列出当前的环境变量值
export MYENV=7 定义环境变量并赋值

七、备份压缩

1、tar:用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。

案例1:将当前目录下所有的文件和目录进行压缩

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ tar -cvf log.tar ./*
./1/
./1/log.tar
./passwd
./read.sh
./sort.txt
./test1.txt

案例2:解包

ubuntu@VM-24-12-ubuntu:~/20221212/20221215/1$ tar -xvf log.tar 
./sort.txt
./test1.txt

案例3:将当前目录下以txt结尾的文件,进行压缩成tar.gz类型的文件

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ tar -czvf log.tar.gz ./*.txt
./sort.txt
./test1.txt

案例4:解压

ubuntu@VM-24-12-ubuntu:~/20221212/20221215$ tar -xzvf log.tar.gz 
./sort.txt
./test1.txt


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/91510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ELK (一)部署ELK+Filebeat日志收集分析系统

说明&#xff1a;此安装流程只适用于8.0.0以下的版本 1. ElasticSearch 部署 1.1 下载ElasticSearch的wget指令&#xff1a; wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.4-linux-x86_64.tar.gz1.2 解压安装包到指定目录 指定解压缩到 …

【指纹识别】指纹识别【含GUI Matlab源码 586期】

⛄一、指纹识别简介 1 指纹识别的引入和原理 1.1 指纹的基本知识 指纹&#xff0c;由于其具有终身不变性、唯一性和方便性&#xff0c;已几乎成为生物特征识别的代名词。指纹是指人的手指末端正面皮肤上凸凹不平产生的纹线。纹线有规律的排列形成不同的纹型。纹线的起点、终点…

SpringBoot+Vue实现前后端分离的旅游网站

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

【Effective_Objective-C_2对象,消息,运行期1】

文章目录前言6 理解”属性“这一概念定义变量不兼容现象的出现解决不兼容现象-Property使用属性更便捷属性特质原子性读写权限内存管理语义方法名原子性和非原子性要点总结7 在对象内部尽量直接访问实例变量要点总结8 理解“对象等同性” 和 isEqual“” 判断的依据“isEuqalTo…

RTL8380M/82M管理型交换机系统软件操作指南四:QoS/服务质量

接下来对QoS进行详细的描述&#xff0c;主要包括以下七大内容&#xff1a;QoS概述、功能简介、拥塞管理、策略分类、调度方式、优先级映射配置、QoS端口配置. 1.1 QoS概述 QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;是用各种手段解决网络延迟和阻塞等…

[附源码]Python计算机毕业设计SSM基于Java动漫论坛系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

业务模型设计

业务模型设计业务模型设计统一语言、术语统一单词业务数据表模型规范数据库范式几个经验业务模型索引主键&#xff1a; 自增id、雪花id、和uuid 差别创建表字符集设置myisam 和 innodb 区别业务模型设计 统一语言、术语 定义&#xff1a;需求分析的过程&#xff08;系统目标、…

001、【C语言编程题目】猴子吃桃问题

001、【题目】猴子吃桃问题 猴子吃桃问题&#xff1a;猴子第一天吃了若干个桃子&#xff0c;当即吃了一半&#xff0c;还不解馋&#xff0c;又多吃了一个&#xff1b; 第二天&#xff0c;吃剩下的桃子的一半&#xff0c;还不过瘾&#xff0c;又多吃了一个&#xff1b;以后每天…

艾美捷针对性检测—游离维多珠单抗ADA水平检测试剂盒

艾美捷游离维多珠单抗ADA水平检测试剂盒可靠地测定游离ADA针对维多利单抗&#xff08;如ENTYVIO&#xff09;). 风湿因子的联合测定或排除不规则抗体。连同确定维多利单抗的活性物质浓度由IDK监测仪指示 维多利单抗免费ADA ELISA&#xff0c;主治医师有可能陪同治疗并在早期阶段…

用Python作一条已知曲线的等距曲线

参考资料&#xff1a; 该如何作一条已知曲线的等距曲线&#xff1f; - 知乎 等距线_百度百科 目录 1.等距线 2.数学推导 3.示例 4.代码与结果 1.等距线 等距线&#xff08;equidistant line&#xff09;亦称平行曲线&#xff0c;一种平面曲线&#xff0c;即由一已知曲线…

准备Plan B 如何设计兜底方案

对于很多秒杀系统而言&#xff0c;在诸如双十一这样的大流量的迅猛冲击下&#xff0c;都曾经或多或少发生过宕机的情况。当一个系统面临的大流量时&#xff0c;它其实很难单靠自身调整来恢复状态&#xff0c;你必须等待流量自然下降或者认人为地把流量切走才行&#xff0c;这无…

Android OpenGL ES 学习(九) – 坐标系统和实现3D效果

OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学习(三) – 绘制平面图形 Android OpenGL ES 学习(四) – 正交投影 Android OpenGL ES 学习(五) – 渐变色 Android OpenGL ES 学习(六) – 使用…

高通Ride软件开发包使用指南(7)

高通Ride软件开发包使用指南&#xff08;7&#xff09;6.5 构建 x86 Ubuntu SDK6.6端到端可视化6.7 x86 Ubuntu上的功能验证6.7.1简单比特率验证6.7.2在x86笔记本上用 8xCams HEVC格式 录制 FPS6.8记录仪6.5 构建 x86 Ubuntu SDK 构建 x86 ubuntu ~/src/qride/stack-sdk$ ./ex…

十个精妙绝伦的SQL语句,说尽SQL精华

目录引子十大SQL1. 统计班级总分前十名2. 删除重复记录, 且保留一条3. 最大连续登陆天数的问题4. 计算除去部门最高工资&#xff0c;和最低工资的平均工资5. 计算占比和同比增长6. 算成绩7.算昨天每个城市top 10消费金额的用户&#xff0c;输出city_id,city_name,uid, 消费总金…

C语言刷题(3)

&#x1f412;博客名&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;别人可以拷贝我的模式&#xff0c;但不能拷贝我不断往前的激情 目录 计算体重指数 计算三角形周长和面积 KiKi和酸奶 网购 变种水仙花 计算体重指数 描述 问题&#xff1a;计算BMI指数&#xff0…

安全可信 | 强墙出击!天翼云Web应用防火墙(原生版)硬核亮相!

12月9日&#xff0c;由中国信息通信研究院主办的“墙墙联合——云上防火墙技术沙龙”在线上顺利举行&#xff0c;天翼云科技有限公司研发专家吴雷分享了新标准、新需求下云Web应用防火墙&#xff08;云WAF&#xff09;的发展方向&#xff0c;并介绍了天翼云Web应用防火墙&#…

如何从 OVF 或 OVA 文件中部署虚拟机

从 OVF 或 OVA 文件中部署虚拟机 使用新建虚拟机向导从 OV F和 VMDK 文件或 OVA 文件部署虚拟机。由于 Web 浏览器的限制,OVA 部署仅限于1GB以下的文件。要部署大于1GB的 OVA 文件,请使用 tar 提取 OVA 文件并分别提供OVF和VMDK文件。 一、右键单击导航器中的‘‘虚拟机“,…

Android:远程调试WebView

目录 前言 配置WebView 手机设置 远程调试 前言 APP中使用WebView展示网页的结果可能不太理想&#xff0c;那么我们想调试的话就没有在浏览器当中调试方便&#xff0c;不过谷歌浏览器给我们提供了能远程调试的方案。 官方文档&#xff1a;https://developer.chrome.com…

Blazor也可以用MarkDown!Vditor-Blazor基础使用教程以及部分源码解析!Ant-Designer-Blazor

前言 Ant-Designer-Blazor组件库是一款非常好用的Blazor的UI框架库&#xff0c;使用很少的精力就可以搭建出一个漂亮的UI界面了。 但是Ant-Designer-Blazor中尚缺少对MarkDown组件的支持&#xff0c;所以只能下载Nuget包里面的一个Vditor&#xff08;也是Ant-Designer的&#…

设计师常用网站,建议收藏

这几个设计师常用网站&#xff0c;你不知道就落后了 设计党赶紧收藏&#xff01;1、菜鸟图库 https://www.sucai999.com/?vNTYwNDUx 免费设计素材。 站内平面海报、UI设计、电商淘宝、免抠、高清图片、样机模板等素材非常齐全。还有在线抠图、CDR版本转换功能&#xff0c;能有…