Linux学习笔记

Linux

Linux命令——账号管理

创建用户: useradd(选项)用户名

用户口令:password(选项)用户名

修改用户:usermod(选项)用户名

删除用户:userdel(选项)用户名

* 跟用户相关的命令权限都必须在管理员的权限下(root)

* 切换用户口令: su 用户名

* 密码要求:长度大于8  必须是数字和字母的组合  不能为回文

* 修改用户 usermod 的时候要退出当前用户,可以按快捷键 Ctrl+d 来退出当前用户

Linux命令——用户组

创建用户组:groupadd(选项)用户组名

修改用户组:groupmod(选项)用户组名

查询用户所属组:groups 用户名

删除用户组:groupdel 用户组名

* 跟用户组相关的命令权限都必须在管理员的权限下(root)

——管理用户组内成员

语法: gpasswd(选项)组名

gpasswd是Linux下面的管理工具,用于将一个用户添加到组中或者从组中删除。

  • -a:添加用户到组  gpasswd -a 用户名 组名
  • -d:从组中删除用户
  • -A:指定管理员
  • -M:指定组成员(和-A的用途差不多)
  • -r:删除密码
  • -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组

(grep '组名'  /etc/group   查看组内所包含的组员)注意:组名是单引号,组名后面还有个空格

Linux命令——日期管理

语法:date[参数选项]  例:date  //显示系统时间

参数选项:

  • -d:<字符串>:显示字符串所指的日期与时间,字符串前后必须加上双引号。例:date -d "2022-12-12 11:11:11"  //2022年12月12日 11时11分11秒  CST(CST表示北京时间)
  • -s:<字符串>:根据字符串来设置日期与时间,字符创前后必需加上双引号。例:date -s "2022-12-12 11:11:11"  //修改当前系统时间(需注意,得用管理员账号,其他账号无权限)
  • -u:显示GMT(GMT英国格林威治时间)
  • --help:在线帮助
  • --version:显示版本信息

 Linux命令——显示用户

语法:logname[--help][--version]    显示登录账号的信息

参数选项:

  • --help:在线帮助
  • --version:显示版本信息

 Linux命令——切换用户

语法:su[参数]

例如:

切换用户: su 用户名

切换用户执行一条命令后在切回该用户:su -c  要执行的命令  要切换的用户

su -c ls root  //切换到root用户执行一条ls命令在切换回原来的用户

 

 Linux命令——id命令

语法:id[参数]  查看当前用户的详细信息(用户id(uid),群组id(gid),所属组)

 

 Linux命令——sudo命令

语法:sudo [参数选项]   提高普通用户的操作权限

参数选项:

  • -V:显示版本编号
  • -h:会显示版本编号和指令的使用方式说明
  • -l:显示出自己的权限
  • -v:超出N分钟没有使用,要求再次输入密码(默认5分钟)
  • -k:下一次执行sudo时问密码
  • -s:执行环境变数中的SHELL所制定的shell,或是/etc/password里所制定的shell
  • -h:将环境变数中的HOME指定为要变更身份的使用者HOME目录
  • sudo command:要以系统管理者身份(或以-u更改为其他人)执行的命令

Linux——跟系统进程相关的命令

 Linux命令——top命令

语法:top[参数]     实时显示process(进程)的动态

直接输入top可显示Linux的进程信息(PID每个进程id,USER该进程的所属用户,PR进程优先级,NI进程优先级(负数-高优先级,正数-低优先级),VIRT表示当前进程使用虚拟内存的总量,S表示当前进程的运行状态S-睡眠状态,R-运行状态,COMMAND表示命令的名字)按q可以退出进程监控

参数选项:

  • -d:改变显示的更新速度,或是在交谈式指令列(interactive command)按s
  • -q:没有任何延迟的显示速度,如果使用者是有superuser的权限,则top将会以最高的优先序执行
  • -c:切换显示模式,共有两种模式,一是显示执行档的名称,另一种是现实完整的路径与名称
  • -s:安全模式,将交谈式指令取消,避免潜在的危机
  • -S:累积模式,会将会将已完成或消失的子进程(dead child process)的CPU time累积起来
  • -i:不显示任何的闲置(idle)或者无用(zombie)的行程
  • -n:更新的次数,完成后将退出top
  • -b:彼此档模式,搭配“n”参数一起使用,可以用来将top的结果输出到档案内
  • -p:top -p 进程id  只监视对应id的一条进程

 Linux命令——ps命令

语法:ps[参数]     查看进程信息(无法实时监控,只能获取当前现在的进程信息)

  • ps -u 用户名:显示指定用户的所有进程信息
  • ps -A:显示系统中所有的进程信息
  • ps -ef:显示系统中所有的进程信息(完整信息)

 Linux命令——kill命令

语法:kill [-s<信息名称或编号>] [程序]    中断执行中的程序

kill [-l<信息编号>]

参数选项:

  • -l<信息编号>:若不加信息编号选项,则-l参数会列出全部的信息名称
  • 直接加程序的PID或PGID也可以是工作编号
  • -u 用户名:杀死这个用户的所有进程
  • 例如:kill -编号 PID    // kill表示要杀死,编号表示怎么杀,PID表示要杀死谁  如:kill -9 2344  表示强制杀死编号为2344的进程
  • 全部杀死某个用户的所有进程:

kill -9 $(ps -ef | grep 用户名)       其中$(ps -ef | grep 用户名) 表示把该用户所有的进程过滤出来,然后在强制杀死

killall -u 用户名

 Linux命令——关机命令 

语法:shutdown [参数]   关机

参数选项:

  • shutdown:不同版本有所不同(得在root用户权限下操作)
  • shutdown -h now:立马关机
  • shutdown +1 “警告信息”:延迟一分钟后关机,并且提示警告信息
  • shutdown -r +1 “警告信息”:延迟一分钟后重启,并提示警告信息
  • shutdown -c:取消当前关机操作

 Linux命令——重启命令

语法:reboot [参数]  立马重启

 Linux命令——who命令

语法:who -[husfV] [user]        显示当前登录系统的用户

参数选项:

  • who:显示当前登录系统的用户
  • who -H:显示明细(标题)信息

 Linux命令——timedatectl命令

语法:timedatectl    校正服务器时间、时区

参数选项:

  • timedatectl status:显示系统当前时间和时区
  • timedatectl list-timezones:查看所有可用的时区
  • timedatectl set-timezone "Asia/Shanghai:设置本地时区
  • timedatectl set-ntp false:禁用时间同步
  • timedatectl set-time "2022-3-18 22:22:22" :设置时间
  • timdatectl set-ntp true:启用时间同步

 Linux命令——clear命令

语法:clear:清除屏幕

 

Linux的目录管理相关的命令

目录常用命令:

  • ls:列出目录
  • cd:切换目录    有相对路径和绝对路径,/为根目录     cd .. 为回退
  • pwd或者pwd -P:显示当前的目录
  • mkdir:创建新目录
  • rmdir:删除空目录
  • cp:复制文件或目录
  • rm:删除文件或目录
  • mv:移动文件或目录/修改文件或者目录的名字

目录命令——ls

语法:ls[参数选项] 目录名称        列出目录里的内容

参数选项:

  • -a:显示所有文件或目录(包含隐藏文件和目录)
  • -d:仅列出目录本身,而不是列出目录里的文件数据(常用)
  • -l:长数据串列出,包换文件的属性和权限等数据(常用)
  • -al:将所有的文件和目录以详细信息的格式列出来

 目录命令——mkdir

语法:mkdir [参数]  文件夹的名字            创建目录

参数选项:

  • -p :确保目录名称存在,不存在就创建一个(可用于创建多级目录时,父级目录不存在的情况)

 目录命令——rmdir

语法:

  • rmdir 文件夹的名字            删除空的文件夹
  • rmdir -p bbb/ccc                 删除ccc若删完之后bbb也是空的,则bbb也一起删除

 目录命令——rmdir

语法:rm [选项]  文件/目录       删除文件或目录     

rm 文件路径    删除文件

rm -r 目录路径   删除目录和目录里的所有内容

选项参数:

  • -i:删除前注意询问确认
  • -f:即使原文件属性设为只读,也可直接删除,无需逐一询问
  • -r:将目录和里面的内容全部删除

 目录命令——cp

语法:cp [ 选项] 数据源  目的地

cp aaa/a.txt ccc    将aaa文件夹中的a.txt文件复制到ccc文件夹中

cp -r aaa/* ccc      将aaa文件夹中的文件和目录全部拷贝到ccc文件夹中

 目录命令——mv

语法: mv [选项] 数据源  目的地      改名/移动文件/文件夹 (如果数据源和目的地在同一个文件夹下可就是改名,不同就是移动)

mv aaa/* ccc   将文件夹aaa下面的所有东西移动到ccc文件夹下

mv ccc/a.txt aaa    将ccc文件夹下的a.txt文件移动到aaa文件夹下

mv 文件名  文件名  将源文件名改为目标文件名

mv 目录名 目录名   目标目录已存在,则将源目录移动到目标目录,若目标目录不存在,则改名

Linux ——文件基本属性

文件权限:r:可读    w:可写    x:可执行    -:没有当前权限

例如:drwxr-xr-x          

  • 第一位:文件类型:d 目录,- 文件,| 链接文档。
  • 2-4位:属主权限   (文件所属用户的权限)
  • 5-7位:属组权限   (文件所属用户所属的组的权限)
  • 8-10位:其他用户权限   (除了开发组外其他所有的成员的权限)
  • 例:-rwxr-xr-x     表示:他是一个文件,表示他的所属用户可读可写可执行,其他同组成员可读不可写可执行,组外其他人也是可读可执行,不可写。

 Linux ——更改属主和属组

chgrp命令:

语法:chgrp [选项参数] [要改为的所属组] [文件或目录]           更改属组(只能更改属组)注:更改文件权限得切换到root用户

例如:chgrp -v root aaa    将aaa的数组改为root(加上参数 -v 会提示更改的具体信息,不加不会提示信息)

chown命令:

语法:chown 属主名 文件名     更改属主

   chown [参数选项] 属主名:属主名 文件名     更改属主和属组

选项参数:

  • -R:处理指定目录以及其子目录下的所有文件

例如:

  • chown root aaa        将aaa的属主改为root
  • chown root:root bbb    将bbb 的属主和属组改为root
  • chown -R root:root aaa   将aaa文件夹和里面的所有文件的属主和属组全部改为root

 Linux ——更改权限

chmod命令       修改属主、属组、其他用户的权限

修改方式:数字方式、符号方式

数字方式:

数字权限 
 权限  英文  缩写 数字序号
 读  read  r  4
 写  write  w  2
 执行  execute  x  1
 无权限    -  0

 

语法:chmod [参数选项]  数字权限  文件或目录

参数选项:

  • -c:若该档案权限确实已经更改,才显示其更改动作
  • -f:若该档案权限无法被更改也不要显示错误信息
  • -v:显示权限变更的详细资料
  • -R:对当前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
  • --help:现实辅助说明
  • --version:显示版本信息
  • 数字权限:数字类型的权限属性,为rwx对应数值相加的和

例如:chmod -R 770 aaa      对aaa目录以及其目录下的子文件进行权限修改,属主权限与属组权限为可读可写可执行,其他用户权限不可读不可写不可执行

符号方式:

语法:chmod [参数选项]  符号权限  文件或目录

 
chmod

u(user属主权限)

g(group数组权限)

o(others其它权限)

a(all所有权限)

+(加入)

-(除去)

=(设定)

 

r

w

x

文件或目录

 

例如:

chmod u=rwx,g=rx,o=r a.txt       给a.txt文件设置权限,属主可读可写可执行,数组可读可执行,其他用户可读

chmod -R a=rwx bbb                   给bbb目录及其子文件设置权限,属主、属组、其他用户都是可读可写可执行

chmod -R o- bbb                          将bbb文件夹及其子目录下的所有文件的其他用户的所有权限去掉

参数选项与数字方式基本相同

综合案例:

需求:一个公司的开发团队有三个用户:java、Python、JavaScript,有一个文件目录tmp/work供他们开发,如何实现让这三个用户都对其具有写权限。

实现步骤:

  1. 创建三个用户java、Python、JavaScript
  2. 创建一个用户组dev-group,并把这三个用户添加到这个组当中
  3. 创建文件夹:/tmp/work(因为文件夹有可能是管理员创建的,所以要修改文件夹的属组为dev-group)
  4. 修改文件夹用户组的权限

Linux——文件管理

Linux文件管理——touch命令

语法:touch [参数选项]  文件名         如果文件不存在就创建文件,如果文件存在,就修改时间属性

参数选项:

  • a:改变文件的读时间记录
  • m:改变文件的修改时间记录
  • c:假如目标文件不存在,不会创建新的文件,与--no-create的效果一样
  • d:设定时间与日期,可以使用各种不同的格式
  • t:设定文件的时间记录,格式与date指令相同

常用命令:

touch a.txt     不存在a.txt就创建,存在就修改时间属性

touch a{1..10}.txt     批量创建空文件(创建10个文件:a1.txt a2.txt a3.txt...a10.txt)

start a.txt         查看文件的详细信

Linux——vi/vim编辑器

vi:只能编辑文本类容不能对字体段落进行排版,不支持鼠标操作,没有菜单只有命令。

vim:是从vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富。

vi/vim三种模式:

命令模式   切换至   编辑模式   按下i

编辑模式   切换至   命令模式   按下Esc

命令模式   切换至   末行模式   按下冒号

末行模式   切换至   命令模式   按两下Esc

打开和新建文件:

语法:vim 文件名           如果文件已经存在,会直接打开该文件 / 如果文件不存在,会打开一个临时文件,在将内容保存并退出后,就会新建一个文件。

该命令刚进去之后就是命令模式,进入编辑模式可按以下命令。

进入编辑模式:

命令 英文 功能 常用
i insert 在当前字符前插入文本 常用
I insert 在行首插入文本 较常用
a append 在当前字符后添加文本  
A append 在行末添加文本 较常用
o   在当前行后面插入一空行 常用
O   在当前行前面插入一空行 常用

 

进入末行模式保存文件:

语法:

  • :q         当vim进入文件对文件没做任何操作时,可以按“q”退出
  • :q!        当vim进入文件对文件内容有操作,但是不想保存退出时
  • :wq      正常保存退出
  • :wq!     强行保存退出,只针对于root用户或文件所有人

 Linux——文件查看

  • cat 文件名                    查看小文件内容
  • cat -n 文件名                查看小文件的内容(内容有行号)
  • less -N 文件名              分屏显示大文件内容
  • head -n 文件名             查看文件的前一部分
  • tail -n 文件名                 查看文件的最后部分
  • grep 关键字 文件名       根据关键字搜索文本文件的内容

 cat命令:查看小文件

cat a.txt    查看a.txt的内容

cat -n a.txt     查看a.txt的内容(加了行号)

less命令:查看大文件

less big.txt      查看大文件big.txt的内容

less -N big.txt    查看大文件big.txt的内容(加了行号)

在分屏显示时候,可通过上下键来调整查看内容

阅读完毕后可以按  “q”  退出

tail命令:查看文件的最后部分

参数选项:

  • -数字:显示文件的最后几行
  • -f:循环读取文件的最后10行(读取日志文件)
  • -n<行数>:显示文件的内容,从指定行到文件末尾
  • -c:显示最后指定的字数

例如:

tail -3 big.txt         显示文件最后3行

tail -f big.txt          动态显示最后10行

tail -4f big.txt         动态显示最后4行

tail -n +2 big.txt     显示big.txt 文件从第2行至末尾的内容

tail -c 45 big.txt      显示big.txt文件的最后45个字

grep命令:

  语法:grep [参数选项] 关键字 文件               根据关键词搜索文本文件内容

  参数选项:

  • -n:把包含关键词的行展示出来
  • -i:把包含关键词的行展示出来,搜索时忽略大小写
  • -v:把包含关键词的行展示出来

  与进程相关:

  结合 ps -ef 命令:展示系统的所有进程

  ps -ef | grep 关键字                                   查询关键字指定的进程信息,包含grep进程

  ps -ef | grep 关键字 | grep -v  "grep"         查询关键字指定的进程信息,不包含grep进程

  ps -ef | grep -c 关键字               查找关键字指定的进程的个数

Linux——vim定位行

语法:vim 文件名 +行数       查看文件并定位到指定行数

Linux——vim异常处理

  如果vim异常退出,在磁盘上可能会保存有交换文件,下次再使用vim编辑的时候,会提示发现交换文件的一些信息,出现该问题时,先按A进行中止,再直接将该交换文件删除即可。

  交换文件:如果对a.txt可进行编辑,不会在原文件上进行修改,而是会产生一个交换文件 a.txt.swp  ,会在这个交换文件上进行修改。

 

Linux文件管理——echo命令

  语法:

  • echo "字符串"               展示文本
  • echo "字符串"  >  文件名             将字符串写到文件中(覆盖文件中内容)
  • echo "字符串"  >>  文件名             将字符串写到文件中(不覆盖文件中内容)
  • cat 不存在的目录  &>>  error.log    将命令的失败结果追加到error.log文件的后面

Linux——awk语法

awk语法——过滤和切割

  语法:awk [参数选项]  ’语法'  文件

案例:

学生成绩表
zhangsan 68 99 26
lisi 98 66 96
wangwu 3 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46

 

 
选项 含义
-F  ',' 使用指定字符进行分割
$ + 数字 获取第几段内容
$0 获取当前行内容
OFS="字符" 向外输出时的每段间的分割字符串

awk

'BEGIN{初始化操作}

{每次都执行的操作}

END{结束时操作}'

文件名

固定语法

'BEGIN{这里面放的是执行前的语句}

{这里面放的是执行每一行时要执行的语句}

END{这是处理完所有的行后要执行的语句}'

文件名

基本函数
函数名 作用
toupper() 字符转成大写
tolower() 字符转成小写
length() 返回字符长度

需求1:搜索含有zhang和li的学生成绩

cat a.txt | awk '/zhang|li/'

需求2:将每一行按照空格进行切割,在输出切割后的每一个小串

cat a.txt | awk -F ' ' '{print $1,$2,$3,$4}'

awk语法——切割后按照指定方式展示

  需求3:每一行按照空格切割,再输出切割后的每一个小串多个小串间用“===”间隔

  cat a.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3,$4}'

  需求4:每一行按照空格切割,再输出切割后的每一个小串多个小串间用 “\t” 间隔

  cat a.txt | awk -F ' ' '{OFS="\t"}{print $1,$2,$3,$4}'

  需求5:每一行按照空格切割,将第一段内容转换成大写并显示

  cat a.txt | awk -F ' ' '{print toupper($1)}'

awk语法——计算

  需求6:每一行按照空格切割,计算第四列总分并显示

  cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel}'       此处totel是定义的一个变量

  需求7:每一行按照空格切割,计算第四列总分,显示总分,总人数

  cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR}'       此处NR表示行号,有多少行,行号就是多少

  需求8:每一行按照空格切割,计算第四列总分,显示总分,总人数,平均分

  cat a.txt | awk -F ' ' 'BEGIN{}{totel=totel+$4}END{print totel,NR,(totel/NR)}'  

Linux——软连接

  类似于Windows系统的快捷方式。

  语法:ln  -s  目标文件路径  快捷方式路径

Linux——find命令

  语法:find [参数选项] <指定目录> <指定条件> <指定内容>        在指定目录下查找文件

  参数选项:

  • -name  文件名      按文件名查找文件
  • -ctime -n或+n       按时间查找文件,-n表示在n天内,+n表示在n天前

  find . -name "*.txt"      在当前文件夹查找所有txt文件

  find / -name "*.txt"       在全盘查找txt文件

Linux——备份压缩

gzip命令

  语法:gzip [参数选项] [文件]        压缩文件

  gzip a.txt       压缩文件

  gzip *            压缩当前目录下所有文件

  gzip -dv *      解压文件并;列出详细信息

gunzip命令

  语法:gunzip [参数选项] [文件]       解压文件

  gunzip *            解压当前目录下所有文件

tar命令

  语法:tar [必要参数] [选择参数] [文件]       打包、压缩和解压(文件\文件夹

  注意:tar本身具有压缩功能,他是调用别人的压缩功能来实现的

  参数选项:

  • -c:建立新的压缩文件
  • -v:显示指令执行过程
  • -f:<备份文件>指定压缩文件
  • -z:通过gzip指令处理压缩文件
  • -t:列出压缩文件中的内容
  • -x:表示解压

  tar -cvf 打包之后文件名 文件名                             打包文件并指定打包之后的文件名(仅打包不压缩)

tar -zcvf 压缩后文件名 文件名/文件夹名              压缩文件或文件夹并指定压缩后的文件名(打包压缩)

tar -ztvf 压缩文件名                                              查看压缩文件中有哪些文件

tar -zxvf 压缩文件名                                             解压

zip命令

  语法:zip [必要参数] [选择参数] [文件]       压缩

  注意:zip是个使用广泛的压缩程序,文件经过它压缩后会另外产生具有“.zip”扩展名的压缩文件

    参数选项:

  • -q:不显示指令执行过程
  • -r:递归处理,将指定目录下的所有文件和子目录一并处理

  zip -q -r 压缩后的文件名  文件/文件夹        压缩文件或文件夹

unzip命令

  语法:unzip [必要参数] [选择参数] [文件]      解压

  注意:只能加压“.zip”扩展名的压缩文件

  参数选项:

  • -l:显示压缩文件内所包含的文件
  • -d<目录>:指定文件解压后要存储的目录

  unzip -l 压缩后文件名                             查看压缩文件的内容

  unzip -d 要解压到的文件夹 压缩文件      解压

bzip2命令

  语法:bzip2 [参数选项] [文件]      压缩

  注意:使用新的压缩算法,压缩后的文件比原来的要小,但是时间花费较长,若不加任何参数,bzip2压缩文件后会产生 “.bz2” 的压缩文件,并删除原始的文件

  bzip2 a.txt      压缩文件

bunzip2命令

  语法:bunzip2 [参数选项] [文件]      解压

  参数选项:

  • -v:解压缩文件时,显示详细的信息

 Linux——网络与磁盘管理

ifconfig命令

  语法:ifconfig [参数选项]                      显示或配置网络设备的命令

ifconfig                                                  显示激活的网卡信息

ifconfig 网卡名 down                             关闭网卡   ifconfig ens37 down   关闭ens37这张网卡

ifconfig 网卡名 up                                  启动网卡   ifconfig ens37 up  启动ens37这张网卡

ifconfig 网卡名 ip                                    配置ip地址   ifconfig ens37 192.168.23.199   配置ip地址

ifconfig 网卡名 ip netmask 子网掩码      配置IP地址和子网掩码    ifconfig ens37 192.168.23.199 netmask 255.255.266.0    配置IP地址和子网掩码

ping命令

ping www.baidu.com            检测是否与百度连通

ping -c 2 www.baidu.com     指定接收包的次数

netstat命令

netstat -a        显示连接的详细状况

netstat -i         显示网卡列表

lsblk命令

  lsblk             列出硬盘的使用情况

  lsblk -f         显示系统信息

df命令

  df                  显示整个硬盘使用情况

  df 文件夹      显示文件夹使用情况

  df --total       显示所有的信息

  df -h             将结果转换成KB MB GB 的形式,利于阅读

mount命令

  语法:mount [参数选项] 目录                       用于挂载Linux系统以外的设备

  注意:挂载点的目录需要有以下几个要求:

  • 目录事先存在,可以用mkdir命令创建新目录
  • 挂载点目录不可以被其他进程所使用到
  • 挂载点原有文件将被隐藏

mkdir 文件夹                             创建文件夹(也就是创建一个挂载点)

mount -t auto 目录 文件夹         开始挂载

umount 文件夹                           卸载

yum命令

  在Linux中如果我们想要查找、安装、下载或者是卸载另外的软件,就需要通过yum来进行操作

  例如安装一下tree这一款工具:

  yum -y install tree       安装tree  -y表示在安装过程中,一律选择yes

  tree                             执行tree,展示当前目录结构

  yum remove tree        移除tree

  yum list tom*               找出以tom开头的软件名称

yum源

yum install -y wget                            安装下载工具wget

wget -O CentOS-base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 下载阿里云的Centos-7.repo文件

yum clean all                                    清理之前的缓存,并重新加载yum

yum makecache                               建立一个缓存文件

yum search tomcat                          查找软件(tomcat),验证阿里云的yum源是否可以正常使用

yum和rpm工具的区别

  rpm:

  在最初RedHat Linux发行版本专门用来管理Linux各项套件的程序

  区别:

  rpm只能安装已经下载到本地机器上的rmp包

  yum能在线下载并安装rpm包,能更新系统,还能自动处理包与包之间的依赖问题,这个是rpm工具不具备的

Linux——shell

shell入门

  在计算机科学中,shell就是一个命令解释器,shell是位于操作系统和应用程序之间,是它们二者最主要的接口。

  一句话说:shell就是操作系统和应用程序之间的一个命令翻译工具

  Windows和Linux中的shell:

  Windows系统:cmd.exe         命令提示符

  Linux系统:    sh/csh/ksh/bash/.......linux中有很多的shell但所有的根都是sh,现在Linux中默认的shell是bash

  shell的使用方式

  手工方式:手工敲击键盘输入命令按enter执行,逐行输入命令,逐行确认执行

  脚本方式把命令写入一个文件中,然后运行这个文件,这个文件就叫脚本文件

编写shell

  • 新建一个文件,后缀名为.sh
  • 书写内容
  • 执行

shell注释

  单行注释

    # 注释内容

  多行注释

    :<<!

      注释的内容

     !

  此处感叹号可用其他任意字符代替,但一般常用的就是感叹号。

shell变量

  • 定义变量(普通变量、命令变量)
  • 使用变量
  • 只读变量
  • 删除变量

shell定义变量

  普通变量

    方式一:变量名=变量值  变量值必须是一个整体,中间没有特殊字符

    方式二:变量名='变量值'  将单引号中的内容原样赋值

    方式三:变量名="变量值"  如果双引号里面有其他变量,会将变量的值与双引号里其他内容进行拼接,然后赋值

  使用习惯:数字不加引号,其他默认加双引号

  命令变量

    方式一:变量名=`命令`  注意:`` 是反引号,Tab键上面的按键,用英文版

    方式二:变量名=$(命令)  

    执行流程:先执行 `` 或$()里面的命令,然后将命令执行的结果赋值给变量

 

shell使用变量

  使用变量

    方式一:$变量名  非标准写法,图省事

    方式二:"$变量名"  非标准写法

    方式三:${变量名}  在双引号里面要使用变量的值。例如:d=$(date)       result="现在的时间为${d}"

    方式四:"${变量名}"  标准的方式

shell只读变量

  readonly 变量名

shell删除变量

  unset 变量名

shell数组

  • 定义数组                      数组名=(值1 值2 值3 ...)               arr=(1 2 3 4)  注:中间用空格隔开
  • 给数组的元素赋值       数组名[索引]=值                            arr[0]=1
  • 获取元素                     ${数组名[下标]}                              ${arr[0]}
  • 获取长度                     ${#数组名[*]}或${#数组名[@}       ${#arr[*]}或${#arr[@]}

shell算术运算符

运算符 说明 举例
+ expr $a + $b
- expr $a - $b
* expr $a \* $b
/ expr $a / $b
% 取余 expr $a % $b
= 赋值 a=$b
++/-- 自增、自减 ((a++))

注意点:

  1. 原生的bash不支持简单的数学运算,可以通过其他命令实现 expr
  2. 表达式和运算符之间要有空格
  3. 完整的表达式要用反引号包含

举例:`expr 2 + 2`

 

shell字符串运算符

运算符 说明 举例
=

检测两个字符串是否相等

相等返回true

[ $a = $b ]
!=

检测两个字符串是否不相等

不相等返回true
[ $a != $b ]
-z

检测字符串长度是否为0

为0返回true

[ -z $a ]
-n

检测字符串长度是否不为0

不为0返回true
[ -n $a ]
$

检测字符串是否不为空

不为空返回true

[ $a ]

注意:获取a字符串长度 "${#a}"

  $?可以获取上一条语句的执行结果

shell关系运算符

运算符 说明 举例
-eq

检测两个数是否相等

相等返回true

[ $a -eq $b ]
-ne

检测两个数是否不相等

不相等返回true
[ $a -ne $b ]
-gt

检测a是否大于b

如果是,则返回true

[ $a -gt $b ]
-lt

检测a是否小于b

如果是,则返回true
[ $a -lt $b ]
-ge

检测a是否大于等于b

如果是,则返回true
[ $a -ge $b ]
-le

检测a是否小于等于b

如果是,则返回true
[ $a -le $b ]

  关系运算符只支持数字,不支持字符串,除非字符串的值是数字

shell布尔运算符

运算符 说明 举例
取反运算 [ ! false ]返回true
-o 或运算,有一个为true就返回true [ $a -lt 20 -o $b -gt 100 ]
-a 与运算,都为true才返回true [ $a -lt 20 -a $b -gt 100 ]

shell逻辑运算符

运算符 说明 举例
&& 逻辑的and [[ true && true ]] 返回true
|| 逻辑的or [[ false || false ]] 返回false

shell判断语句

第一种if判断:

  if [ 条件 ]

  then

    语句体

  fi

第二种if判断:

  if [ 条件 ]

  then

    语句体

  else

    语句体

  fi

第三种if判断:

  if [ 条件 ]

  then

    语句体

  elif [ 条件2 ]

    语句体

  else

    语句体

  fi

shell选择语句

  casein

  模式1)

    语句体1

    ;;

  模式2)

    语句体2

    ;;

  esac

  例如:

  v="czbk"

  case "${v}" in

  "czbk")

      echo "传智播客"

      ;;

 

  "baidu")

 

      echo "百度"

 

      ;;

 

  "guge")

 

      echo "谷歌"

 

      ;;

  esac

 

shell for 循环

  for 变量 in 变量变化范围

  do

    循环体

  done

  例如:循环打印loop的值A B C

  for loop in A B C

  do

    echo $loop

  done

shell while循环

  while 条件

  do

    循环体

  done

  例如:打印1~10之间的每一个数

  a=1

  while [ "${a}" -le 10 ]

  do

    echo "${a}"

    ((a++))

  done

shell函数

无参无返回值 有参无返回值 有参有返回值

函数名 (){

  函数体

}

czbk(){

  echo "第一个参数$1"

  echo "第二个参数$2"
}

#调用函数czbk()

czbk a b

czbk(){

  echo "接收到参数$1和$2"

  return $(($1 + $2))

}

#调用函数czbk()

czbk 10 20

#获取并打印函数调用后的返回值

echo $?

shell函数练习

需求:在方法中键盘录入两个整数,返回这两个整数的和

注意:read 变量名 --表示把键盘录入的数据赋值给这个变量

  method(){

    echo "请录入第一个数:"

    read number1

    echo "请录入第二个数:"

    read number2

    return $(($number1 + $number2))

    

  }

  method

  echo "两数之和为$?"

 

 

 

 

 

 

 

 

 

  

 

posted @ 2022-03-26 23:24  我挺菜  阅读(123)  评论(0)    收藏  举报