当前位置: 首页 > news >正文

Linux基础学习笔记

Linux基础学习笔记

Linux目录结构:

具体的目录结构:

Ø /bin [重点] (/usr/bin 、 /usr/local/bin)

• 是Binary的缩写, 这个目录存放着最经常使用的命令

Ø /home [重点]

• 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般

该目录名是以用户的账号命名的。

Ø /root [重点]

• 该目录为系统管理员,也称作超级权限者的用户主目录。

/lib

• 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几

乎所有的应用程序都需要用到这些共享库。

Ø /lost+found

• 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。

Ø /etc [重点]

• 所有的系统管理所需要的配置文件和子目录 my.conf

Ø /usr [重点]

• 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与

windows下的program files目录。

Ø /boot [重点]

• 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

Ø /proc

• 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。

Ø /srv

• service缩写,该目录存放一些服务启动之后需要提取的数据。

Ø /sys

• 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs

Ø /tmp

• 这个目录是用来存放一些临时文件的。

Ø /dev

• 类似于windows的设备管理器,把所有的硬件用文件的形式存储。

Ø /media [重点]

• linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux

会把识别的设备挂载到这个目录下。

Ø /mnt [重点]

• 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂

载在/mnt/上,然后进入该目录就可以查看里的内容了。 d:/myshare

Ø /opt

• 这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。

默认为空。

Ø /usr/local [重点]

• 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。

Ø /var [重点]

• 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。

包括各种日志文件。

Ø /selinux [security-enhanced linux] 360

• SELinux是一种安全子系统,它能控制程序只能访问特定文件。

Linux实操:

vi和vim的基本介绍

所有的 Linux 系统都会内建 vi 文本编辑器。

Vim 具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别

语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别

丰富,在程序员中被广泛使用。

l vi和vim常用的三种模式

正常模式:

以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,

也可以使用『复制、贴上』来处理你的文件数据。

插入模式:

按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可.

命令行模式

在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!

快捷键练习:

  1. 拷贝当前行 yy , 拷贝当前行向下的5行 5yy,并粘贴。

  2. 删除当前行 dd , 删除当前行向下的5行 5dd

  3. 在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]

  4. 设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]

  5. 编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg]

  6. 在一个文件中输入 “hello” ,然后又撤销这个动作 u

  7. 编辑 /etc/profile 文件,并将光标移动到 20行 shift+g

关机&重启命令

基本介绍:

shutdown –h now 立该进行关机

shudown -h 1 “hello, 1 分钟后会关机了”

shutdown –r now 现在重新启动计算机

halt 关机,作用和上面一样.

reboot 现在重新启动计算机

sync 把内存的数据同步到磁盘.

用户登录和注销

基本介绍:

  1. 登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可

以利用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.

  1. 在提示符下输入 logout 即可注销用户

添加用户

基本语法

useradd 用户名

细节说明

  1. 当创建用户成功后,会自动的创建和用户同名的家目录

  2. 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录

指定/修改密码

基本语法

passwd 用户名

删除用户

基本语法

userdel 用户名

切换用户

介绍

在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root

基本语法

su – 切换用户名

细节说明

  1. 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。

  2. 当需要返回到原来用户时,使用exit指令

查看当前用户/登录用户

基本语法

whoami/ who am I

用户组

介绍

类似于角色,系统可以对有共性的多个用户进行统一的管理。

新增组

• 指令

groupadd 组名

删除组

• 指令(基本语法)

groupdel 组名

• 指令(基本语法)

useradd –g 用户组 用户名

增加一个用户 zwj, 直接将他指定到 wudang

修改用户的组

• 指令(基本语法)

usermod –g 用户组 用户名

用户和组的相关文件

/etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow 文件

口令的配置文件

每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警

告时间:不活动时间:失效时间:标志

/etc/group 文件

组(group)的配置文件,记录Linux包含的组的信息

每行含义:组名:口令:组标识号:组内用户列表

指定运行级别

基本介绍:

运行级别说明:

0 :关机

1 :单用户【找回丢失密码】

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用运行级别是3和5 ,要修改默认的运行级别可改文件

/etc/inittab的id:5:initdefault:这一行中的数字

命令:init [012356]

帮助指令

man 获得帮助信息

• 基本语法

man [命令或配置文件](功能描述:获得帮助信息)

help指令

• 基本语法

help 命令 (功能描述:获得shell内置命令的帮助信息)

文件目录类

pwd 指令

• 基本语法

pwd (功能描述:显示当前工作目录的绝对路径)

ls指令

• 基本语法

ls [选项] [目录或是文件]

• 常用选项

-a :显示当前目录所有的文件和目录,包括隐藏的。

-l :以列表的方式显示信息

cd 指令

• 基本语法

cd [参数] (功能描述:切换到指定目录)

• 常用参数

绝对路径和相对路径

cd ~ 或者cd :回到自己的家目录

cd … 回到当前目录的上一级目录

mkdir指令

mkdir指令用于创建目录

• 基本语法

mkdir [选项] 要创建的目录

• 常用选项

-p :创建多级目录

rmdir指令

rmdir指令删除空目录

• 基本语法

rmdir [选项] 要删除的空目录

• 使用细节

rmdir 删除的是空目录,如果目录下有内容时无法删除的。

提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录

touch指令

touch指令创建空文件

• 基本语法

touch 文件名称

cp指令

cp 指令拷贝文件到指定目录

• 基本语法

cp [选项] source dest

• 常用选项

-r :递归复制整个文件夹

• 使用细节

强制覆盖不提示的方法:\cp

rm指令

rm 指令移除文件或目录

• 基本语法

rm [选项] 要删除的文件或目录

• 常用选项

-r :递归删除整个文件夹

-f : 强制删除不提示

• 使用细节

强制删除不提示的方法:带上 -f 参数即可

mv指令

mv 移动文件与目录或重命名

• 基本语法

mv oldNameFile newNameFile (功能描述:重命名)

mv /temp/movefile /targetFolder (功能描述:移动文件)

cat指令

cat 查看文件内容

• 基本语法

cat [选项] 要查看的文件

• 常用选项

-n :显示行号

• 使用细节

cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more

more指令

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

more指令中内置了若干快捷键,详见操作说明

• 基本语法

more 要查看的文件

/etc/profile

操作 功能说明

空白键 (space) 代表向下翻一页;

Enter 代表向下翻『一行』;

q 代表立刻离开 more ,不再显示该文件内容。

Ctrl+F 向下滚动一屏

Ctrl+B 返回上一屏

= 输出当前行的行号

:f 输出文件名和当前行的行号

less指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

• 基本语法

less 要查看的文件

操作 功能说明

空白键 向下翻动一页;

[pagedown] 向下翻动一页

[pageup] 向上翻动一页;

/字串 向下搜寻『字串』的功能;n:向下查找;N:向上查找;

?字串 向上搜寻『字串』的功能;n:向上查找;N:向下查找;

q 离开 less 这个程序;

echo指令

echo输出内容到控制台。

• 基本语法

echo [选项] [输出内容]

head指令

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

• 基本语法

head 文件 (功能描述:查看文件头10行内容)

head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

tail指令

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容。

• 基本语法

  1. tail 文件 (功能描述:查看文件头10行内容)

  2. tail -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

  3. tail -f 文件 (功能描述:实时追踪该文档的所有更新)

指令 和 >> 指令

输出重定向和 >> 追加

• 基本语法

  1. ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))

  2. ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)

  3. cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)

  4. echo “内容”>> 文件

ln 指令

软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

• 基本语法

ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)

• 细节说明

当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。

history指令

查看已经执行过历史命令,也可以执行历史指令

• 基本语法

history (功能描述:查看已经执行过历史命令)

时间日期类

date指令-显示当前日期

• 基本语法

  1. date (功能描述:显示当前时间)

  2. date +%Y (功能描述:显示当前年份)

  3. date +%m (功能描述:显示当前月份)

  4. date +%d (功能描述:显示当前是哪一天)

  5. date “+%Y-%m-%d %H:%M:%S”(功能描述:显示年月日时分秒)

date指令-设置日期

• 基本语法

date -s 字符串时间

cal指令

查看日历指令

• 基本语法

cal [选项] (功能描述:不加选项,显示本月日历)

搜索查找类

find指令

find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终

端。

• 基本语法

find [搜索范围] [选项]

• 选项说明

locate指令

locaate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径

的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。

为了保证查询结果的准确度,管理员必须定期更新locate时刻。

• 基本语法

locate 搜索文件

• 特别说明

由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate

数据库。

grep指令和 管道符号 |

grep 过滤查找 , 管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。

• 基本语法

grep [选项] 查找内容 源文件

• 常用选项

gzip/gunzip 指令

gzip 用于压缩文件, gunzip 用于解压的

• 基本语法

gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)

gunzip 文件.gz (功能描述:解压缩文件命令)

zip/unzip 指令

zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的

• 基本语法

zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)

unzip [选项] XXX.zip (功能描述:解压缩文件)

• zip常用选项

-r:递归压缩,即压缩目录

• unzip的常用选项

-d<目录> :指定解压后文件的存放目录

tar 指令

tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。

• 基本语法

tar [选项] XXX.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)

• 选项说明

Linux组基本介绍

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件

有所有者、所在组、其它组的概念。

  1. 所有者

  2. 所在组

  3. 其它组

  4. 改变用户所在的组

文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

查看文件的所有者

指令:ls –ahl
修改文件所有者

• 指令:chown 用户名 文件名

组的创建

基本指令

groupadd 组名

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。

查看文件/目录所在组

• 基本指令

ls –ahl

• 基本指令

chgrp 组名 文件名

其它组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某

个用户所在的组。

改变用户所在组

  1. usermod –g 组名 用户名

  2. usermod –d 目录名 用户名 改变该用户登陆的初始目录

权限的基本介绍

ls -l 中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9位说明

  1. 第0位确定文件类型(d, - , l , c , b)

  2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User

  3. 第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group

  4. 第7-9位确定其他用户拥有该文件的权限 —Other

rwx权限详解

rwx作用到文件

  1. [ r ]代表可读(read): 可以读取,查看

  2. [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是

对该文件所在的目录有写权限,才能删除该文件.

  1. [ x ]代表可执行(execute):可以被执行

rwx作用到目录

  1. [ r ]代表可读(read): 可以读取,ls查看目录内容

  2. [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录

  3. [ x ]代表可执行(execute):可以进入该目录

文件及目录权限实际案例

ls -l 中显示的内容如下:

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

10个字符确定不同用户能对文件干什么

第一个字符代表文件类型: 文件 (-),目录(d),链接(l)

其余字符每3个一组(rwx) 读® 写(w) 执行(x)

第一组rwx : 文件拥有者的权限是读、写和执行

第二组rw- : 与文件拥有者同一组的用户的权限是读、写但不能执行

第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行

可用数字表示为: r=4,w=2,x=1 因此rwx=4+2+1=7

1 文件:硬连接数或 目录:子目录数

root 用户

root 组

1213 文件大小(字节),如果是文件夹,显示 4096字节

Feb 2 09:39 最后修改日期

abc 文件名

修改权限-chmod

基本说明:

通过chmod指令,可以修改文件或者目录的权限。

第一种方式:+ 、-、= 变更权限

u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

  1. chmod u=rwx,g=rx,o=x 文件目录名

  2. chmod o+w 文件目录名

  3. chmod a-x 文件目录名

第二种方式:通过数字变更权限

r=4 w=2 x=1 rwx=4+2+1=7

chmod u=rwx,g=rx,o=x 文件目录名

相当于 chmod 751 文件目录名

修改文件所有者-chown

基本介绍

chown newowner file 改变文件的所有者

chown newowner:newgroup file 改变用户的所有者和所有组

-R 如果是目录 则使其下所有子文件或目录递归生效

修改文件所在组-chgrp

基本介绍

chgrp newgroup file 改变文件的所有组

crond 任务调度

crontab 进行 定时任务的设置,。

概述

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等

2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

基本语法

crontab [选项]

常用选项

快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度。执行crontab –e命令。

接着输入任务到调度文件

如:*/1 * * * * ls –l /etc/ > /tmp/to.txt

意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令

参数细节说明

• 5个占位符的说明

参数细节说明

• 特殊符号的说明

参数细节说明

• 特定时间执行任务案例

crond 相关指令:

  1. conrtab –r:终止任务调度。

  2. crontab –l:列出当前有那些任务调度

  3. service crond restart [重启任务调度]

分区基础知识

分区的方式:

  1. mbr分区:

1.最多支持四个主分区

2.系统只能安装在主分区

3.扩展分区要占一个主分区

4.MBR最大只支持2TB,但拥有最好的兼容性

  1. gtp分区:

1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)

2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )

3.windows7 64位以后支持gtp

windows下的磁盘分区:

原理介绍

  1. Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独

立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。

  1. Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目

录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一

个目录下获得。

  1. 示意图

硬盘说明

  1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘

  2. 对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指

IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属

盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就

是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为

第二个IDE硬盘上的第二个主分区或扩展分区。

  1. 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余

则和IDE硬盘的表示方法一样。

查看所有设备挂载情况

命令 :lsblk 或者 lsblk -f

磁盘情况查询

查询系统整体磁盘使用情况

• 基本语法

df -h

查询指定目录的磁盘占用情况

• 基本语法

du -h /目录

查询指定目录的磁盘占用情况,默认为当前目录

-s 指定目录占用大小汇总

-h 带计量单位

-a 含文件

–max-depth=1 子目录深度

-c 列出明细的同时,增加汇总值

进程管理:

基本介绍

  1. 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一

个ID号。

  1. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例

如www服务器。

  1. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目

前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法

看到的进程,通常使用后台方式执行。

  1. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到

关机才才结束。

显示系统执行的进程

基本介绍

ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。

可以不加任何参数.

显示系统执行的进程

ps详解

  1. 指令:ps –aux|grep xxx ,比如我看看有没有sshd服务

  2. 指令说明

• System V展示风格

• USER:用户名称

• PID:进程号

• %CPU:进程占用CPU的百分比

• %MEM:进程占用物理内存的百分比

• VSZ:进程占用的虚拟内存大小(单位:KB)

• RSS:进程占用的物理内存大小(单位:KB)

• TT:终端名称,缩写 .

• STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通

优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等

• STARTED:进程的启动时间

• TIME:CPU时间,即进程使用CPU的总时间

• COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

终止进程kill和killall

介绍:

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该

进程。使用kill命令来完成此项任务。

基本语法:

kill [选项] 进程号(功能描述:通过进程号杀死进程)

killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负

载过大而变得很慢时很有用)

常用选项:

-9 :表示强迫进程立即停止

查看进程树pstree

基本语法:

pstree [选项] ,可以更加直观的来看进程信息

常用选项:

-p :显示进程的PID

-u :显示进程的所属用户

服务(service)管理

介绍:

服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程

序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的

知识点。【原理图】

service管理指令:

service 服务名 [start | stop | restart | reload | status]

在CentOS7.0后 不再使用service ,而是 systemctl

查看服务名:

方式1:使用setup -> 系统服务 就可以看到。

方式2: /etc/init.d/服务名称

服务的运行级别(runlevel):

查看或者修改默认级别: vi /etc/inittab

Linux系统有7种运行级别(runlevel):常用的是级别3和5

• 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

• 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆

• 运行级别2:多用户状态(没有NFS),不支持网络

• 运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式

• 运行级别4:系统未使用,保留

• 运行级别5:X11控制台,登陆后进入图形GUI模式

• 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

开机的流程说明:

chkconfig指令:

• 介绍

通过chkconfig 命令可以给每个服务的各个运行级别设置自启动/关闭

• 基本语法

  1. 查看服务 chkconfig --list|grep xxx

  2. chkconfig 服务名 --list

  3. chkconfig --level 5 服务名 on/off

动态监控进程:

介绍:

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。

基本语法:

top [选项]

选项说明:

交互操作说明:

查看系统网络情况netstat

• 基本语法

netstat [选项]

• 选项说明

-an 按一定顺序排列输出

-p 显示哪个进程在调用

检测主机连接命令ping:

是一种网络检测检测工具,它主要是用检测远程主机是否正常,或是两部主机间

的介质是否为断、网线是否脱落或网卡故障。

如: ping 对方ip地址

Shell编程:

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的

界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

Shell脚本的执行方式

脚本格式要求

  1. 脚本以#!/bin/bash开头

  2. 脚本需要有可执行权限

编写第一个Shell脚本

• 需求说明

创建一个Shell脚本,输出hello world!

脚本的常用执行方式

• 方式1(输入脚本的绝对路径或相对路径)

1)首先要赋予helloworld.sh 脚本的+x权限

2)执行脚本

• 方式2(sh+脚本)

说明:不用赋予脚本+x权限,直接执行即可。

Shell的变量

Shell的变量的介绍

1)Linux Shell中的变量分为,系统变量和用户自定义变量。

2)系统变量: H O M E 、 HOME、 HOMEPWD、 S H E L L 、 SHELL、 SHELLUSER等等

比如: echo $HOME 等等…

3)显示当前shell中所有变量:set

shell变量的定义

• 基本语法

1)定义变量:变量=值

2)撤销变量:unset 变量

  1. 声明静态变量:readonly变量,注意:不能unset

shell变量的定义

• 定义变量的规则

  1. 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。

  2. 等号两侧不能有空格

  3. 变量名称一般习惯为大写

• 将命令的返回值赋给变量

1)A=ls -la 反引号,运行里面的命令,并把结果返回给变量A

2)A=$(ls -la) 等价于反引号

设置环境变量

基本语法

  1. export 变量名=变量值 (功能描述:将shell变量输出为环境变量)

  2. source 配置文件 (功能描述:让修改后的配置信息立即生效)

  3. echo $变量名 (功能描述:查询环境变量的值)

快速入门

  1. 在/etc/profile文件中定义TOMCAT_HOME环境变量

  2. 查看环境变量TOMCAT_HOME的值

  3. 在另外一个shell程序中使用 TOMCAT_HOME

注意:在输出JAVA_HOME 环境变量前,需要让其生效

source /etc/profile

位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量

比如 : ./myshell.sh 100 200 , 这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息

基本语法

$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参

数需要用大括号包含,如${10})

∗ (功能描述:这个变量代表命令行中所有的参数, * (功能描述:这个变量代表命令行中所有的参数, (功能描述:这个变量代表命令行中所有的参数,*把所有的参数看成一个整体)

@ (功能描述:这个变量也代表命令行中所有的参数,不过 @(功能描述:这个变量也代表命令行中所有的参数,不过 @(功能描述:这个变量也代表命令行中所有的参数,不过@把每个参数区分对待)

$#(功能描述:这个变量代表命令行中所有参数的个数)

预定义变量

基本介绍

就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用

基本语法

$$ (功能描述:当前进程的进程号(PID))

$! (功能描述:后台运行的最后一个进程的进程号(PID))

$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)

运算符

基本语法

  1. ( ( 运算式 ) ) ”或“ ((运算式))”或“ ((运算式))[运算式]”

  2. expr m + n

注意expr运算符间要有空格

  1. expr m - n

  2. expr *, /, % 乘,除,取余

条件判断

判断语句

• 基本语法

[ condition ](注意condition前后要有空格)

#非空返回true,可使用$?验证(0为true,>1为false)

判断语句

• 常用判断条件

  1. 两个整数的比较

= 字符串比较

-lt 小于

-le 小于等于

-eq 等于

-gt 大于

-ge 大于等于

-ne 不等于

  1. 按照文件权限进行判断

-r 有读的权限

-w 有写的权限

-x 有执行的权限

3)按照文件类型进行判断

-f 文件存在并且是一个常规的文件

-e 文件存在

-d 文件存在并是一个目录

流程控制

if 判断

• 基本语法

if [ 条件判断式 ];then

程序

fi

或者

if [ 条件判断式 ]

then

程序

elif [条件判断式]

then

程序

fi

注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2) 推荐使用第二种方式

case语句

• 基本语法

case $变量名 in

“值1”)

如果变量的值等于值1,则执行程序1

;;

“值2”)

如果变量的值等于值2,则执行程序2

;;

…省略其他分支…

*)

如果变量的值都不是以上的值,则执行此程序

;;

esac

for循环

• 基本语法1

for 变量 in 值1 值2 值3…

do

程序

done

• 基本语法2

for (( 初始值;循环控制条件;变量变化 ))

do

程序

done

while循环

• 基本语法1

while [ 条件判断式 ]

do

程序

done

read读取控制台输入

基本语法

read(选项)(参数)

选项:

-p:指定读取值时的提示符;

-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。

参数

变量:指定读取值的变量名

函数

函数介绍

shell编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,

我们这里就介绍两个。

系统函数

• basename基本语法

功能:返回完整路径最后 / 的部分,常用于获取文件名

basename [pathname] [suffix]

basename [string] [suffix] (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)

字符,然后将字符串显示出来。

选项:

suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。

系统函数

• dirname基本语法

功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分

dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),

然后返回剩下的路径(目录的部分))

自定义函数

• 基本语法

[ function ] funname[()]

{

Action;

[return int;]

}

调用直接写函数名:funname [值]

相关文章:

Linux基础学习笔记

Linux基础学习笔记 Linux目录结构&#xff1a; 具体的目录结构: /bin [重点] (/usr/bin 、 /usr/local/bin) • 是Binary的缩写, 这个目录存放着最经常使用的命令 /home [重点] • 存放普通用户的主目录&#xff0c;在Linux中每个用户都有一个自己的目录&#xff0c;一…...

自动泊车端到端算法 ParkingE2E 介绍

01 算法介绍 自主泊车是智能驾驶领域中的一项关键任务。传统的泊车算法通常使用基于规则的方案来实现。因为算法设计复杂&#xff0c;这些方法在复杂泊车场景中的有效性较低。 相比之下&#xff0c;基于神经网络的方法往往比基于规则的方法更加直观和多功能。通过收集大量专家…...

《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)

文章目录 第十七章 数据类型转换工厂设计实现背景技术背景Spring数据转换实现方式类型转换器&#xff08;Converter&#xff09;接口设计实现 业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件转换器工厂Bean测试用例测试结果&#xff1a; 总结 第十七章 数…...

W3C HTML 活动

关于W3C&#xff08;万维网联盟&#xff09;的HTML活动&#xff0c;我们可以从HTML的不同版本的发展历程中了解其主要的活跃时期和贡献。 HTML 2.0&#xff1a;这个版本的HTML是由Internet工程工作小组&#xff08;IETF&#xff09;的HTML工作组于1996年开发的。它是HTML的早期…...

机器学习—为什么我们需要激活函数

如果我们使用神经网络中每个神经元的线性激活函数&#xff0c;回想一下这个需求预测示例&#xff0c;如果对所有节点使用线性激活函数&#xff0c;在这个神经网络中&#xff0c;事实证明&#xff0c;这个大神经网络将变得与线性回归没有什么不同&#xff0c;所以这将挫败使用神…...

软考系统架构设计师论文:论软件的可靠性评价

试题四 论软件的可靠性评价 软件可靠性评价是软件可靠性活动的重要组成部分,既适用于软件开发过程,也可针对最 终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否可以终止测试并发布软件,同时还可以预计软件要达…...

C++:线程(thread)的创建、调用及销毁

在 C 中&#xff0c;线程的管理主要依赖于标准库 std::thread&#xff0c;自 C11 起&#xff0c;这一功能被标准化&#xff0c;使得我们能够更加方便地创建、管理和销毁线程。这里我们详细讲解线程的创建、调用和销毁流程。 1. 线程的创建 创建线程通常是为了在单独的线程中执…...

关于随身wifi,看了再决定要不要买!2024年最受欢迎的随身wifi品牌推荐!

话费、流量费缴纳起来肉疼&#xff0c;毕竟不是每个月都有很大需求&#xff0c;主打一个该省省该花花。特别是短租人群、在校学生、出差或旅游的人群、追求高性价比的人群&#xff0c;随身Wifi特别实用&#xff0c;出门当WiFi&#xff0c;在家当宽带&#xff0c;两不耽误&#…...

SpringMVC总结 我的学习笔记

SpringMVC总结 我的学习笔记 一、SpringMVC简介1.MVC2.SpringMVC概述3. SpringMVC中的核心组件4.SpringMVC核心架构流程 二、SpringMVC框架实例具体实现使用注解实现 四、数据处理及跳转1.结果跳转方式2.处理器方法的参数与返回值处理提交数据数据显示到前端 五、RestFul风格1.…...

DevCheck Pro手机硬件检测工具v5.33

前言 DevCheck Pro是一款手机硬件和操作系统信息检测查看工具&#xff0c;该软件的功能非常强大&#xff0c;为用户提供了系统、硬件、应用程序、相机、网络、电池等一系列信息查看功能 安装环境 [名称]&#xff1a;DevCheckPro [版本]&#xff1a;5.33 [大小]&a…...

数据分析ReAct工作流

让我用一个数据分析项目的例子来展示plan-and-execute框架的应用。这个例子会涉及数据处理、分析和可视化等任务。 from typing import List, Dict, Any from dataclasses import dataclass import json from enum import Enum import logging from datetime import datetime#…...

Rust-AOP编程实战

文章本天成&#xff0c;妙手偶得之。粹然无疵瑕&#xff0c;岂复须人为&#xff1f;君看古彝器&#xff0c;巧拙两无施。汉最近先秦&#xff0c;固已殊淳漓。胡部何为者&#xff0c;豪竹杂哀丝。后夔不复作&#xff0c;千载谁与期&#xff1f; ——《文章》宋陆游 【哲理】文章…...

Flutter鸿蒙next 中的 Expanded 和 Flexible 使用技巧详解

在 Flutter 开发中&#xff0c;Expanded 和 Flexible 是两个非常常用的布局控件&#xff0c;它们可以帮助开发者更加灵活地管理 UI 布局的空间分配。虽然它们看起来非常相似&#xff0c;但它们的功能和使用场景有所不同。理解这两者的区别&#xff0c;能帮助你在构建复杂 UI 布…...

【微信小游戏学习心得】

这里是引用 微信小游戏学习心得 简介了解微信小游戏理解2d游戏原理数据驱动视图总结 简介 本人通过学习了解微信小游戏&#xff0c;学习微信小游戏&#xff0c;加深了对前端框架&#xff0c;vue和react基于数据驱动视图的理解&#xff0c;及浏览器文档模型和javaScript之间的关…...

Python | Leetcode Python题解之第539题最小时间差

题目&#xff1a; 题解&#xff1a; def getMinutes(t: str) -> int:return ((ord(t[0]) - ord(0)) * 10 ord(t[1]) - ord(0)) * 60 (ord(t[3]) - ord(0)) * 10 ord(t[4]) - ord(0)class Solution:def findMinDifference(self, timePoints: List[str]) -> int:n len…...

Zookeeper运维秘籍:四字命令基础、详解及业务应用全解析

文章目录 一、四字命令基础二、四字命令详解三、四字命令的开启与配置四、结合业务解读四字命令confconsenvi命令Stat命令MNTR命令ruok命令dump命令wchswchp ZooKeeper&#xff0c;作为一款分布式协调服务&#xff0c;提供了丰富的四字命令&#xff08;也称为四字短语&#xff…...

Error: `slot-scope` are deprecated报错解决

本人新手菜鸡&#xff0c;文章为自己遇到问题的记录&#xff0c;如有错误或不足还请大佬批评指正 问题描述 在Vue3环境下使用slot插槽&#xff0c;出现‘slot-scope’ are deprecated报错问题&#xff0c;经过查找发现&#xff0c;是因为在slot插槽使用中&#xff0c;vue2和vu…...

Excel(图例)中使用上标下标

单元格中 1、在Excel单元格中刷黑要设置成上标的字符&#xff0c;如m2中的2&#xff1b; 2、单击右键&#xff0c;在弹出的对话框中选择“设置单元格格式”&#xff1b; 3、在弹出的“设置单元格格式”对话框中选择上标&#xff08;或下标&#xff09;&#xff1b; 4、最后…...

熔断和降级

目录 隔离和降级 FeignClient整合Sentinel 通过Feign设置服务降级 1.创建类实现FallbackFactory接口&#xff0c;并让这个类和使用FeignClient的接口类绑定 2.让order-service服务的feign开启sentinel 3.测试&#xff0c;只开启order-service服务&#xff0c;而不开启user-…...

【学习笔记】Linux系统基础知识 6 —— su命令详解

提示&#xff1a;学习Linux系统基础命令 su 命令详解&#xff0c;包含通过 su 命令切换用户实例 一、前期准备 1.已经正确安装并成功进入Linux系统 说明&#xff1a;本实验采用的 Redhat 系统&#xff08;因系统不一致&#xff0c;可能部分显示存在差异&#xff09; 二、学…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...