Linux笔记(没有消息就是好消息)
文章目录
常用指令
# 切换当前工作目录
cd [dirName]
cd ~ # 回到自己家目录
cd .. # 回到当前目录的上一级目录
# 显示当前所在目录的绝对路径
pwd
# 清除客户端当前显示的内容
clear
# 获得帮助信息
man [命令或配置文件] # 获得帮助信息
help 命令 # 获得shell内置命令的帮助信息
ls -a # 列出所有文件,包括隐藏文件,隐藏文件都是以 . 开头的
linux目录结构
-
/
系统的根目录,Linux中的所有目录都存在这个目录下面
-
/bin [常用] (/usr/bin、/usr/local/bin)
是binary的缩写,存放着经常使用的命令
-
/sbin (/usr/sbin、/usr/local/sbin)
存放系统管理员使用的系统管理程序
-
/root [常用]
系统管理员的主目录
-
/home [常用]
存放普通用户的主目录,其中的目录一般是以每个用户的账号命名的
-
/lost+found [隐藏目录]
当系统非法关机后,这里才会存放一些文件
-
/lib
系统开机或者其中的应用程序需要用到的一些共享库
-
/etc [常用]
所有的系统管理所需要的配置文件和子目录
-
/usr [常用]
用户的很多应用程序和文件存放的位置,类似windows中的program files
-
/boot [常用]
存放启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
-
/proc (不要随意修改)
这个目录时一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息
-
/srv (不要随意修改)
是service的缩写,存放一些服务启动之后需要提取的数据
-
/sys (不要随意修改)
这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
-
/tmp
存放一些临时文件
-
/dev
类似windos的设备管理器,把所有硬件用文件的形式存储
-
/media [常用]
Linux会把识别的一些外部设备挂载到这个目录下,如U盘、光驱等等。
-
/mnt [常用]
供以临时挂载别的文件系统,可以将外部的存储挂载到此目录中,然后进入该目录就能查看到其中过的内容
-
/opt
存放主机额外安装软件所需要的软件包
-
/usr/local [常用]
这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式安装的程序
-
/var [常用]
这个目录存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。
-
/selinux [security-enhanced linux]
SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置,未开启安全模式此目录就不存在
Vi和Vim的基本使用
vi和vim的三种模式
-
正常模式
以vim打开一个档案就直接进入一般模式了(默认),在该模式下,可以使用上下左右按键来移动光标,你可以使用删除字符和删除整行来处理文档内容,也可以使用复制粘贴来处理你的文件数据
-
编辑模式
按下i、o、a、r(大小写都可以)其中一个,就可以进入该模式
-
命令行模式
在编辑模式下按Esc,再输入一个 : ,就能够进入该模式。在该模式下,你可以使用一些相关指令,完成读取、保存、替换、离开vim、显示啊行号等操作
常用快捷键
# vim中退出,命令行模式输入
:q
:q!
# vim中复制一行或多行,正常模式下输入
yy # 复制当前行
3yy # 复制当前行向下共三行
# 粘贴,正常模式下输入
p
# 删除一行或多行
dd # 删除当前行
5dd # 删除当前行向下共五行
# 查找,命令行模式下
/查找内容 # 按回车插值
n # 按n跳到下一个
# 显示行号,命令行模式下
set nu
# 不显示行号,命令行模式下
set nonu
# 跳转末行,正常模式下
G # 大写
# 跳转首行
gg
# 撤销上一步操作,正常模式下
u
# 跳到指定行,正常模式下
20 shift+g
关机重启
shutdown -h now # h为halt(等等)缩写,现在立刻关机
shutdown -h 1 # 一分钟之后关机,并提醒所连接的终端
shutdown # 与shutdown -h 1功能一样
shutdown -r now # r为reboot缩写,现在立刻重启
halt # 立刻关机
reboot # 立刻重启
sync # 将内存的数据同步到磁盘
用户注销
su - 用户名 # 切换用户
su # 切换用户为root
logout # 用户注销
用户管理
useradd 用户名 # 添加一个指定用户名的用户
useradd -d 目录名 用户名 # 添加一个用户并创建指定家目录
passwd 用户名 # 给指定用户修改密码
passwd # 给当前登录用户修改密码
userdel 用户名 # 删除指定用户,并保留其家目录
userdel -r 用户名 # 删除指定用户,并删除其家目录
id 用户名 # 查看指定用户的信息
who am i # 查看当前客户端第一次登录的用户
用户组(用于多用户权限管理)
groupadd 组名 # 添加一个组
groupdel 组名 # 删除一个组
useradd -g 用户组 用户名 # 添加一个指定用户并将其添加到指定用户组
usermod -g 用户组 用户名 # 修改一个指定用户所在的用户组
用户和组的相关文件
-
/etc/password文件
用户的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell -
/etc/shadow文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告是按:不活动时间:失效时间:标志 -
/etc/group文件
组的配置文件,记录Linux包含的组的信息
每行的含义:组名:口令:组标识号:组内用户列表
Linux运行级别
运行级别 | 描述 |
---|---|
0 | 关机 |
1 | 单用户[找回丢失密码] |
2 | 多用户状态没有网络服务 |
3 | 多用户状态有网络服务 |
4 | 系统未使用保留给用户 |
5 | 图形界面 |
6 | 系统重启 |
init [0123456] # 切换到指定的运行级别
systemctl get-default # 获取默认系统运行级别
systemctl set-default target # 设置系统的默认运行级别
文件目录指令
- cd指令
cd 目录 # 切换当前工作目录
cd ~ # 切换到当前用户家目录
cd .. # 切换到当前目录的上一级目录
- mkdir指令
mkdir 目录名 # 创建指定名的目录
mkdir -p 目录名 # 创建多级目录
- rmdir指令
rmdir 要删除的空目录 # 删除一个空目录
rm -rf 目录名 # 强制删除一个目录,不论是否为空
- touch指令
touch 文件名称 # 创建空文件
- cp指令
cp [选项] source dest # 拷贝文件到指定目录
cp -r source dest # 递归拷贝整个文件夹
\cp -r source dest # 强制覆盖不提示拷贝
-
rm指令
常用选项:
选项 | 描述 |
---|---|
-r | 递归删除整个文件夹 |
-f | 强制删除不提示 |
rm [选项] 要删除的文件或目录
- mv指令:移动文件或目录或重命名
mv oldFileName newFileName # 重命名
mv 目录名 另一个目录名 # 移动目录
-
cat指令:查看文件内容
常用选项:
选项 | 描述 |
---|---|
-n | 显示行号 |
cat [选项] 要查看的文件
-
| 管道符号
将管道符前面指令的结果交给管道符后面的指令继续执行
cat 要查看的文件 | more # 把cat获得的内容交给more处理
-
more指令
more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容,more指令中内置了若干快捷键
常用快捷键:
选项 | 描述 |
---|---|
空格键 | 向下翻一页 |
enter | 向下翻一行 |
q | 立刻离开more |
ctrl+f | 向下滚动一屏 |
ctrl+b | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
more 要查看的文件
-
less指令:分屏查看文件内容,与more指令类似,但是比more更加强大,而且会动态加载文件内容,对于大型文件具有较高的效率
常用快捷键:
选项 | 描述 |
---|---|
空格键 | 向下翻一页 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字串 | 向下搜寻字串的功能:n:向下查找;N:向上查找 |
?字串 | 向上搜寻字串的功能,同上/ |
q | 退出less |
less 要查看的文件名
- echo指令:输出内容到控制台
echo [选项] [输出内容]
- head指令:显示文件的开头部分内容,默认情况下head会显示文件的前10行内容
head 文件名 # 默认查看10行文件的内容
head -n 5 文件名 # 查看指定行数的文件内容
- tail指令:输出文件中尾部的内容,默认显示前10行内容
tail 文件 # 查看尾10行内容
tail -n 5 文件 # 查看文件尾5行内容
tail -f 文件 # 实时追踪该文档的所有更新
-
>指令和>>指令
>输出重定向和>>追加
ls -l > 文件
cat 文件1 > 文件2
- ln指令:创建软链接,类似windows中的快捷方式
ln -s 原文件或目录 软链接名 # 创建软链接
rm 软链接名 # 删除一个软链接
- history指令:查看历史执行的指令
history # 查看所有历史命令
history 10 # 查看最近使用过的10条指令
!10 # 执行历史编号为10的指令
时间日期指令
- date指令:显示当前日期
date # 显示当前时间
date +%Y # 显示当前年份
date +%m # 显示当前月份
date +%d # 显示当前是哪一天
date "%Y-%m-%d %H:%M:%S" # 格式化输出年月日时分秒
date -s 字符串时间 # 设置系统当前时间
- cal指令
cal # 查看本月日历
cal 2021 # 查看2021年的每个月的日历
查找指令
-
find指令
常用选项:
选项 | 描述 |
---|---|
-name<文件名> | 按照指定文件名查找文件 |
-user<用户名> | 查找指定用户的的所有文件 |
-size<文件大小> | 按照指定文件大小查找文件 |
find [搜索范围] [选项]
find / -size +200M # 查找根目录下大于200m的文件
find / -size -200M # 查找根目录下小于200m的文件
find / -size 200M # 查找根目录下等于200m的文件
- locate指令:快速定位文件路径,通过查找事先建立的locate数据库实现快速定位
- updatedb更新当前的locate数据库
locate 搜索文件
- which指令:查看某个指令所在的目录
which ls # 查看ls指令所在的目录
-
grep指令
常用选项:
选项 | 描述 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略字母大小写 |
grep [选项] 查找内容 源文件
压缩和解压
- gzip/gunzip指令:gzip用于压缩文件,gunzip用于解压缩文件
gzip 文件 # 压缩指定文件
gunzip 文件.gz # 解压缩文件命令
-
zip/unzip指令:zip用于压缩文件,unzip用于解压
zip常用选项
选项 | 描述 |
---|---|
-r | 递归压缩,即压缩目录 |
unzip常用选项
选项 | 描述 |
---|---|
-d<目录> | 指定解压后文件的存放目录 |
zip [选项] xxx.zip 将要压缩的内容 # 将要压缩的内容
unzip [选项] xxx.zip # 解压缩文件
-
tar指令:tar指令是打包指令,最后打包的文件是.tar.gz文件
选项说明:
选项 | 描述 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
-C | 指定解压文件到那个目录 |
tar [选项] xxx.tar.gz 打包的内容
Linux组的概念
- 所有者:一般文件的创建者就是该文件的所有者
ls -ahl # 查看文件的所有者
chown 用户名 文件名 # 修改文件所有者
- 所在组:文件所在的组,当一个用户创建一个文件时,该文件所在的组默认就是该文件所有者所在的组
chgrp 新的组 文件 # 将指定文件所在组修改为新的组
usermod -g 新组名 用户名 # 修改用户的所在组
usermod -d 目录名 用户名 # 修改用户的家目录
Linux中rwx权限
在使用ls -l命令时显示内容如下:
drwxr-xr-x. 2 root root 4096 8月 10 23:51 公共
0-9位说明:
-
第0位确定文件类型(d , - , l , c , b)
-是普通文件,如hello.txt
l是链接,相当于windows中的快捷方式
d是目录,相当于windows中的文件夹
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):可以进入该目录
-
查看文件或目录时每列信息代表的含义
rwx可以用数字标识:r=4,w=2,x=1 ,因此rwx=4+2+1=7
后面的每一列说明:
示例 | 描述 |
---|---|
1 | 文件:硬链接数量 目录:子目录数量 |
root | 所有者(用户) |
root | 所在组 |
0 | 文件大小(字节),如果是文件夹,显示4096字节 |
8月 18 20:09 | 最后修改时间 |
cat.txt | 文件名或目录名 |
修改权限
使用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 新所有者 文件/目录 # 改变所有者
chown 新所有者:新所在组 # 同时修改所在组和所有者
# -R 如果是目录,则使其下的所有子目录或文件递归生效
chgrp指令
chgrp 新的所在组 文件/目录 # 改变文件或目录的所在组
Linux定时任务调度
-
任务调度:是指系统在某个时间执行的特定的命令或程序
-
任务调度的分类
- 系统工作:有些重要的工作必须周而复始地执行,如病毒扫描
- 个别用户工作:个别用户可能希望执行某些程序,比如对数据库的备份
-
crontab指令:对定时任务进行设置
常用选项:
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
先执行crontab -e
然后输入 */1 * * * * ls -l /etc/ > /tmp/to.txt
之后就可以开启一个调度任务,该任务会每分钟执行一次
ls -l /etc/ > /tmp/to.txt
- cron表达式解释
*/1 * * * *
项目 | 含义 | 范围 |
---|---|---|
第一个 “*” | 一小时当中的第几分钟 | 0-59 |
第二个 “*” | 一天当中的第几小时 | 0-23 |
第三个 “*” | 一个月当中的第几天 | 1-31 |
第四个 “*” | 一年当中的第几月 | 1-12 |
第五个 “*” | 一周当中的星期几 | 0-7(0和7都代表周日) |
- at任务调度机制
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。
- 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
- 在使用at命令时,必须保证atd进程的启动,可以使用如下命令来查看atd进程是否启动
ps -ef | grep atd
-
at指令
常用选项:
选项 | 描述 |
---|---|
-m | 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q <队列> | 使用指定的队列 |
-f <文件> | 从指定文件读入任务而不是从标准输入读入 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
at [选项] [时间] # 输入指令后,再输入需要执行的任务,然后按两次Ctrl+D
atq # 查看当前存在的任务
atrm [任务号] # 移除指定任务
Linux磁盘分区机制
- lsblk指令:查看系统当前磁盘及分区信息
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 17G 0 part /
└─sda3 8:3 0 2G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
lsblk -f # 查看磁盘分区的详细信息
- 分区指令fdisk
fdisk /dev/sdb # 对sdb磁盘进行分区
分区中常用的一些命令
命令 | 描述 |
---|---|
m | 显示命令列表 |
p | 显示磁盘分区 同fdisk -l |
n | 新增分区 |
d | 删除分区 |
w | w写入并退出 |
步骤说明:开始分区后输入n,新增分区,然后选择p,分区类型位主分区,两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q
- 格式化磁盘:没有格式化的磁盘分区是不能够使用的
mkfs -t ext4 /dev/sdb1
- 挂载磁盘
mount [磁盘分区文件] [要挂载的目录] # 挂载磁盘分区
umount [磁盘分区文件] # 将指定磁盘分区卸载掉
- 查看磁盘使用情况
df -h # 查看当前系统中的磁盘使用情况信息
- 查看目录磁盘使用情况
du -h # 查询指定目录的磁盘占用情况,默认为当前目录
常用选项:
选项 | 描述 |
---|---|
-s | 指定目录占用大小汇总 |
-h | 带计量单位 |
-a | 含文件 |
–max-depth=1 | 子目录深度 |
-c | 列出明细的同时,增加汇总值 |
Linux网络配置
- 修改Linux的IP地址信息
首先要修改Linux的ip地址,需要输入如下命令
vim /etc/sysconfig/network-scripts/ifcfg-ens33
并添加如下选项
# ip地址换成自己想要指定的网段
BOOTPROTO="static"
IPADDR=192.168.200.130
GATEWAY=192.168.200.2
DNS1=192.168.200.2
然后再重启Linux或者重启网络服务
reboot 或 service network restart
- 修改Linux的主机名
hostname # 查询当前的主机名
- 修改主机名
# 在文件中直接修改主机名并保存退出,然后重启Linux
vim /etc/hostname
- 配置Linux中的hosts主机映射
# 在文件中添加IP和主机名的映射关系,与windows中修改host文件一样
vim /etc/hosts
- 在windows中查看和清理dns域名缓存
ipconfig /displaydns # 查看DNS域名解析缓存
ipconfig /flushdns # 手动清理dns缓存
Linux进程
- ps指令
# 常用选项组合
ps -a # 显示当前终端的所有进程信息
ps -u # 以用户的格式显示进程信息
ps -x # 显示后台进程运行的参数
ps -ef # 以全格式显示当前所有的进程,-e显示所有进程,-f全格式
- kill指令和killall指令
kill [选项] 进程号 # 通过进程号杀死/终止进程
killall 进程名称 # 通过进程名称杀死进程,也支持通配符
kill -9 进程号 # 强制终止一个进程
/bin/systemctl start sshd.service # 重启sshd服务
-
pstree指令
常用选项:
选项 | 描述 |
---|---|
-p | 显示进程的PID |
-u | 显示进程的所属用户 |
Linux服务管理
服务的本质就是进程,但是通常是运行在后台并监听某个端口,等待其他进程的请求,比如mysqld,sshd,防火墙等等,因此我们又称守护进程
- service指令:centos7后能使用service管理的服务在/etc/init.d中
service 服务名 [start|stop|restart|reload|status]
setup # 可以查看系统运行的服务
- systemctl指令
systemctl get-default # 获取系统默认启动级别
systemctl set—default [运行级别target]#设置系统默认启动级别
- chkconfig指令
# 列出部分服务在不同级别是否启动
chkconfig --list [| grep xxx]
# 设置某个服务在某个级别是否启动
ckhconfig --level 5 服务名 on/off
- systemctl指令:可以在/usr/lib/systemd/system查看可管理服务
systemctl [start|stop|restart|status] 服务名 # 管理服务
systemctl list-unit-files # 查看服务开机启动状态
systemctl enable 服务名 # 设置服务开机启动
systemctl disable 服务名 # 关闭服务开机启动
systemctl is-enabled 服务名 # 查询某个服务是否是自启动的
- firewall指令
# 打开端口
firewall-cmd --permanent --add-port=端口号/协议
# 关闭端口
firewall-cmd --permanent --remove-port=端口号/协议
# 重新载入
firewall-cmd --reload
# 查看端口是否开放
firewall-cmd --query-port=端口/协议
-
top指令:动态监控
常用选项:
选项 | 功能 |
---|---|
-d 秒数 | 指定top命令每隔几秒更新,默认是3秒 |
-i | 使top不显示任何闲置或者僵死进程 |
-p | 通过指定监控进程ID来仅仅监控某个进程状态 |
top [选项]
交互操作指令:
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认项 |
M | 以内存的使用率排序 |
N | 以PID排序 |
q | 退出top |
- netstat指令:查看系统网络情况
netstat -an # 按一定顺序排列输出
netstat -p # 显示哪个进程在调用
RPM管理
rpm -qa [|grep xx] # 查询当前系统安装的rpm包
rpm -qi 软件包名 # 查询软件包信息
rpm -ql 软件包名 # 查询软件包中的文件
rpm -qf 文件全路径 # 查询文件所属的软件包
rpm -e 软件包名 # 删除指定软件包
rpm -e --nodeps 软件包名 # 强制删除软件包
# 安装rpm包 i=install安装 v=verbose提示 h=hash进度条
rpm -ivh rpm包全路径名称
Yum管理
yum list[|grep xxx] # 查询yum服务器是否有某个软件
yum install 软件名 # 安装指定软件
Linux Shell编程
推荐shell文件使用.sh后缀名
Shell变量
-
定义变量:变量名=值
-
撤销变量:unset 变量名
-
生命静态变量:readonly 变量名
#!/bin/bash
#声明一个变量A
A=100
#输出变量需要加上$
echo A=$A
#撤销一个变量
unset A
#声名一个静态变量B,不能unset
readonly B=2
#在要将某个命令的值赋给变量时需要加上反引号或者使用$()
C=`date`
C=$(date)
注意:定义变量的时候等号两边不能加空格
设置环境变量
- export 变量名=变量值:将shell变量输出为环境变量/全局变量
- source 配置文件:让修改的配置信息立即生效
- echo $变量名:查询环境变量的值
shell脚本中的多行注释::<<! !
位置参数变量
$n:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 使 用 大 括 号 括 起 来 , 9代表第一到第九个参数,十以上的参数需要使用大括号括起来, 9代表第一到第九个参数,十以上的参数需要使用大括号括起来,{10}
$*:这个变量代表命令行的所有变量,所有变量为一个整体
@ : 这 个 变 量 与 @:这个变量与 @:这个变量与*类似,但是会把每个参数区分对待
$#:这个变量代表命令行的参数个数
顺序排列输出
netstat -p # 显示哪个进程在调用
# RPM管理
```bash
rpm -qa [|grep xx] # 查询当前系统安装的rpm包
rpm -qi 软件包名 # 查询软件包信息
rpm -ql 软件包名 # 查询软件包中的文件
rpm -qf 文件全路径 # 查询文件所属的软件包
rpm -e 软件包名 # 删除指定软件包
rpm -e --nodeps 软件包名 # 强制删除软件包
# 安装rpm包 i=install安装 v=verbose提示 h=hash进度条
rpm -ivh rpm包全路径名称
Yum管理
yum list[|grep xxx] # 查询yum服务器是否有某个软件
yum install 软件名 # 安装指定软件
Linux Shell编程
推荐shell文件使用.sh后缀名
Shell变量
-
定义变量:变量名=值
-
撤销变量:unset 变量名
-
生命静态变量:readonly 变量名
#!/bin/bash
#声明一个变量A
A=100
#输出变量需要加上$
echo A=$A
#撤销一个变量
unset A
#声名一个静态变量B,不能unset
readonly B=2
#在要将某个命令的值赋给变量时需要加上反引号或者使用$()
C=`date`
C=$(date)
注意:定义变量的时候等号两边不能加空格
设置环境变量
- export 变量名=变量值:将shell变量输出为环境变量/全局变量
- source 配置文件:让修改的配置信息立即生效
- echo $变量名:查询环境变量的值
shell脚本中的多行注释::<<! !
位置参数变量
$n:n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 需 要 使 用 大 括 号 括 起 来 , 9代表第一到第九个参数,十以上的参数需要使用大括号括起来, 9代表第一到第九个参数,十以上的参数需要使用大括号括起来,{10}
$*:这个变量代表命令行的所有变量,所有变量为一个整体
@ : 这 个 变 量 与 @:这个变量与 @:这个变量与*类似,但是会把每个参数区分对待
$#:这个变量代表命令行的参数个数