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 、显示行号等的动作则是在此模式中达成的!
快捷键练习:
-
拷贝当前行 yy , 拷贝当前行向下的5行 5yy,并粘贴。
-
删除当前行 dd , 删除当前行向下的5行 5dd
-
在文件中查找某个单词 [命令行下 /关键字 , 回车 查找 , 输入 n 就是查找下一个 ]
-
设置文件的行号,取消文件的行号.[命令行下 : set nu 和 :set nonu]
-
编辑 /etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg]
-
在一个文件中输入 “hello” ,然后又撤销这个动作 u
-
编辑 /etc/profile 文件,并将光标移动到 20行 shift+g
关机&重启命令
基本介绍:
shutdown –h now 立该进行关机
shudown -h 1 “hello, 1 分钟后会关机了”
shutdown –r now 现在重新启动计算机
halt 关机,作用和上面一样.
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘.
用户登录和注销
基本介绍:
- 登录时尽量少用root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可
以利用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.
- 在提示符下输入 logout 即可注销用户
添加用户
基本语法
useradd 用户名
细节说明
-
当创建用户成功后,会自动的创建和用户同名的家目录
-
也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
指定/修改密码
基本语法
passwd 用户名
删除用户
基本语法
userdel 用户名
切换用户
介绍
在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root
基本语法
su – 切换用户名
细节说明
-
从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
-
当需要返回到原来用户时,使用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行内容。
• 基本语法
-
tail 文件 (功能描述:查看文件头10行内容)
-
tail -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)
-
tail -f 文件 (功能描述:实时追踪该文档的所有更新)
指令 和 >> 指令
输出重定向和 >> 追加
• 基本语法
-
ls -l >文件 (功能描述:列表的内容写入文件a.txt中(覆盖写))
-
ls -al >>文件 (功能描述:列表的内容追加到文件aa.txt的末尾)
-
cat 文件1 > 文件2 (功能描述:将文件1的内容覆盖到文件2)
-
echo “内容”>> 文件
ln 指令
软链接也成为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
• 基本语法
ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
• 细节说明
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录。
history指令
查看已经执行过历史命令,也可以执行历史指令
• 基本语法
history (功能描述:查看已经执行过历史命令)
时间日期类
date指令-显示当前日期
• 基本语法
-
date (功能描述:显示当前时间)
-
date +%Y (功能描述:显示当前年份)
-
date +%m (功能描述:显示当前月份)
-
date +%d (功能描述:显示当前是哪一天)
-
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中每个文件
有所有者、所在组、其它组的概念。
-
所有者
-
所在组
-
其它组
-
改变用户所在的组
文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
查看文件的所有者
指令:ls –ahl
修改文件所有者
• 指令:chown 用户名 文件名
组的创建
基本指令
groupadd 组名
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
查看文件/目录所在组
• 基本指令
ls –ahl
• 基本指令
chgrp 组名 文件名
其它组
除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组。
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某
个用户所在的组。
改变用户所在组
-
usermod –g 组名 用户名
-
usermod –d 目录名 用户名 改变该用户登陆的初始目录
权限的基本介绍
ls -l 中显示的内容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位说明
-
第0位确定文件类型(d, - , l , c , b)
-
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
-
第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group
-
第7-9位确定其他用户拥有该文件的权限 —Other
rwx权限详解
rwx作用到文件
-
[ r ]代表可读(read): 可以读取,查看
-
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是
对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被执行
rwx作用到目录
-
[ r ]代表可读(read): 可以读取,ls查看目录内容
-
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
-
[ 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的总和)
-
chmod u=rwx,g=rx,o=x 文件目录名
-
chmod o+w 文件目录名
-
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 相关指令:
-
conrtab –r:终止任务调度。
-
crontab –l:列出当前有那些任务调度
-
service crond restart [重启任务调度]
分区基础知识
分区的方式:
- mbr分区:
1.最多支持四个主分区
2.系统只能安装在主分区
3.扩展分区要占一个主分区
4.MBR最大只支持2TB,但拥有最好的兼容性
- gtp分区:
1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
3.windows7 64位以后支持gtp
windows下的磁盘分区:
原理介绍
- Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独
立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目
录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一
个目录下获得。
- 示意图
硬盘说明
-
Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
-
对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指
IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属
盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就
是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为
第二个IDE硬盘上的第二个主分区或扩展分区。
- 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余
则和IDE硬盘的表示方法一样。
查看所有设备挂载情况
命令 :lsblk 或者 lsblk -f
磁盘情况查询
查询系统整体磁盘使用情况
• 基本语法
df -h
查询指定目录的磁盘占用情况
• 基本语法
du -h /目录
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
进程管理:
基本介绍
- 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一
个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例
如www服务器。
- 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目
前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法
看到的进程,通常使用后台方式执行。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到
关机才才结束。
显示系统执行的进程
基本介绍
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。
可以不加任何参数.
显示系统执行的进程
ps详解
-
指令:ps –aux|grep xxx ,比如我看看有没有sshd服务
-
指令说明
• 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 命令可以给每个服务的各个运行级别设置自启动/关闭
• 基本语法
-
查看服务 chkconfig --list|grep xxx
-
chkconfig 服务名 --list
-
chkconfig --level 5 服务名 on/off
动态监控进程:
介绍:
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。
基本语法:
top [选项]
选项说明:
交互操作说明:
查看系统网络情况netstat
• 基本语法
netstat [选项]
• 选项说明
-an 按一定顺序排列输出
-p 显示哪个进程在调用
检测主机连接命令ping:
是一种网络检测检测工具,它主要是用检测远程主机是否正常,或是两部主机间
的介质是否为断、网线是否脱落或网卡故障。
如: ping 对方ip地址
Shell编程:
Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的
界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
Shell脚本的执行方式
脚本格式要求
-
脚本以#!/bin/bash开头
-
脚本需要有可执行权限
编写第一个Shell脚本
• 需求说明
创建一个Shell脚本,输出hello world!
脚本的常用执行方式
• 方式1(输入脚本的绝对路径或相对路径)
1)首先要赋予helloworld.sh 脚本的+x权限
2)执行脚本
• 方式2(sh+脚本)
说明:不用赋予脚本+x权限,直接执行即可。
Shell的变量
Shell的变量的介绍
1)Linux Shell中的变量分为,系统变量和用户自定义变量。
2)系统变量: H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER等等
比如: echo $HOME 等等…
3)显示当前shell中所有变量:set
shell变量的定义
• 基本语法
1)定义变量:变量=值
2)撤销变量:unset 变量
- 声明静态变量:readonly变量,注意:不能unset
shell变量的定义
• 定义变量的规则
-
变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
-
等号两侧不能有空格
-
变量名称一般习惯为大写
• 将命令的返回值赋给变量
1)A=ls -la 反引号,运行里面的命令,并把结果返回给变量A
2)A=$(ls -la) 等价于反引号
设置环境变量
基本语法
-
export 变量名=变量值 (功能描述:将shell变量输出为环境变量)
-
source 配置文件 (功能描述:让修改后的配置信息立即生效)
-
echo $变量名 (功能描述:查询环境变量的值)
快速入门
-
在/etc/profile文件中定义TOMCAT_HOME环境变量
-
查看环境变量TOMCAT_HOME的值
-
在另外一个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(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
运算符
基本语法
-
“ ( ( 运算式 ) ) ”或“ ((运算式))”或“ ((运算式))”或“[运算式]”
-
expr m + n
注意expr运算符间要有空格
-
expr m - n
-
expr *, /, % 乘,除,取余
条件判断
判断语句
• 基本语法
[ condition ](注意condition前后要有空格)
#非空返回true,可使用$?验证(0为true,>1为false)
判断语句
• 常用判断条件
- 两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
- 按照文件权限进行判断
-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目录结构: 具体的目录结构: /bin [重点] (/usr/bin 、 /usr/local/bin) • 是Binary的缩写, 这个目录存放着最经常使用的命令 /home [重点] • 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一…...
自动泊车端到端算法 ParkingE2E 介绍
01 算法介绍 自主泊车是智能驾驶领域中的一项关键任务。传统的泊车算法通常使用基于规则的方案来实现。因为算法设计复杂,这些方法在复杂泊车场景中的有效性较低。 相比之下,基于神经网络的方法往往比基于规则的方法更加直观和多功能。通过收集大量专家…...
《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)
文章目录 第十七章 数据类型转换工厂设计实现背景技术背景Spring数据转换实现方式类型转换器(Converter)接口设计实现 业务背景 目标设计实现代码结构类图实现步骤 测试事先准备属性配置文件转换器工厂Bean测试用例测试结果: 总结 第十七章 数…...
W3C HTML 活动
关于W3C(万维网联盟)的HTML活动,我们可以从HTML的不同版本的发展历程中了解其主要的活跃时期和贡献。 HTML 2.0:这个版本的HTML是由Internet工程工作小组(IETF)的HTML工作组于1996年开发的。它是HTML的早期…...
机器学习—为什么我们需要激活函数
如果我们使用神经网络中每个神经元的线性激活函数,回想一下这个需求预测示例,如果对所有节点使用线性激活函数,在这个神经网络中,事实证明,这个大神经网络将变得与线性回归没有什么不同,所以这将挫败使用神…...
软考系统架构设计师论文:论软件的可靠性评价
试题四 论软件的可靠性评价 软件可靠性评价是软件可靠性活动的重要组成部分,既适用于软件开发过程,也可针对最 终软件系统。在软件开发过程中使用软件可靠性评价,可以使用软件可靠性模型,估计软件当前的可靠性,以确认是否可以终止测试并发布软件,同时还可以预计软件要达…...
C++:线程(thread)的创建、调用及销毁
在 C 中,线程的管理主要依赖于标准库 std::thread,自 C11 起,这一功能被标准化,使得我们能够更加方便地创建、管理和销毁线程。这里我们详细讲解线程的创建、调用和销毁流程。 1. 线程的创建 创建线程通常是为了在单独的线程中执…...
关于随身wifi,看了再决定要不要买!2024年最受欢迎的随身wifi品牌推荐!
话费、流量费缴纳起来肉疼,毕竟不是每个月都有很大需求,主打一个该省省该花花。特别是短租人群、在校学生、出差或旅游的人群、追求高性价比的人群,随身Wifi特别实用,出门当WiFi,在家当宽带,两不耽误&#…...
SpringMVC总结 我的学习笔记
SpringMVC总结 我的学习笔记 一、SpringMVC简介1.MVC2.SpringMVC概述3. SpringMVC中的核心组件4.SpringMVC核心架构流程 二、SpringMVC框架实例具体实现使用注解实现 四、数据处理及跳转1.结果跳转方式2.处理器方法的参数与返回值处理提交数据数据显示到前端 五、RestFul风格1.…...
DevCheck Pro手机硬件检测工具v5.33
前言 DevCheck Pro是一款手机硬件和操作系统信息检测查看工具,该软件的功能非常强大,为用户提供了系统、硬件、应用程序、相机、网络、电池等一系列信息查看功能 安装环境 [名称]:DevCheckPro [版本]: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编程实战
文章本天成,妙手偶得之。粹然无疵瑕,岂复须人为?君看古彝器,巧拙两无施。汉最近先秦,固已殊淳漓。胡部何为者,豪竹杂哀丝。后夔不复作,千载谁与期? ——《文章》宋陆游 【哲理】文章…...
Flutter鸿蒙next 中的 Expanded 和 Flexible 使用技巧详解
在 Flutter 开发中,Expanded 和 Flexible 是两个非常常用的布局控件,它们可以帮助开发者更加灵活地管理 UI 布局的空间分配。虽然它们看起来非常相似,但它们的功能和使用场景有所不同。理解这两者的区别,能帮助你在构建复杂 UI 布…...
【微信小游戏学习心得】
这里是引用 微信小游戏学习心得 简介了解微信小游戏理解2d游戏原理数据驱动视图总结 简介 本人通过学习了解微信小游戏,学习微信小游戏,加深了对前端框架,vue和react基于数据驱动视图的理解,及浏览器文档模型和javaScript之间的关…...
Python | Leetcode Python题解之第539题最小时间差
题目: 题解: 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,作为一款分布式协调服务,提供了丰富的四字命令(也称为四字短语ÿ…...
Error: `slot-scope` are deprecated报错解决
本人新手菜鸡,文章为自己遇到问题的记录,如有错误或不足还请大佬批评指正 问题描述 在Vue3环境下使用slot插槽,出现‘slot-scope’ are deprecated报错问题,经过查找发现,是因为在slot插槽使用中,vue2和vu…...
Excel(图例)中使用上标下标
单元格中 1、在Excel单元格中刷黑要设置成上标的字符,如m2中的2; 2、单击右键,在弹出的对话框中选择“设置单元格格式”; 3、在弹出的“设置单元格格式”对话框中选择上标(或下标); 4、最后…...
熔断和降级
目录 隔离和降级 FeignClient整合Sentinel 通过Feign设置服务降级 1.创建类实现FallbackFactory接口,并让这个类和使用FeignClient的接口类绑定 2.让order-service服务的feign开启sentinel 3.测试,只开启order-service服务,而不开启user-…...
【学习笔记】Linux系统基础知识 6 —— su命令详解
提示:学习Linux系统基础命令 su 命令详解,包含通过 su 命令切换用户实例 一、前期准备 1.已经正确安装并成功进入Linux系统 说明:本实验采用的 Redhat 系统(因系统不一致,可能部分显示存在差异) 二、学…...
超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
