Linux常用命令及脚本知识
Linux常用命令及脚本知识
Linux是目前应用最广泛的服务器操作系统,基于Unix,开源免费,系统的稳定性和安全性高。
Linux的目录结构
/ 下级目录结构

- bin
(binaries)存放二进制可执行文件 - sbin
(super user binaries)存放二进制可执行文件,只有root用户才能访问 - etc
(etcetera)存放系统配置文件 - usr
(unix shared resources)用于存放共享系统资源 - home
存放用户文件的根目录 - root
超级用户目录 - dev
(devices)用于存放设备文件 - lib
(library)存放跟文件系统中的程序运行所需要的共享库及内核模块 - mnt
(mount)系统管理员安装临时文件系统的安装点 - boot
存放用于系统引导时使用的各种文件 - tmp
(temporary)用于存放各种临时文件 - var
(variable)用于存放运行时需要改变数据的文件
常用命令
命令格式:命令 -选项 参数 (选项和参数可以为空)
操作文件及目录
ls
查看目录下的所有文件
ls # 查看当前目录下的所有文件
ls -l # 查看当前目录下所有文件的详细信息
ls -R # 也可以层级显示,使用参数R。
cd
切换目录
cd /home # 切换到 home 文件夹中
pwd
显示当前工作目录
pwd # 打印出当前的工作目录的完整目录
touch
创建空文件
touch xxoo.txt # 创建xxoo文件,格式为txt
mkdir
创建一个新目录
mkdir xxoo_dir # 在当前目录中创建一个名为 xxoo_dir 的目录
mkdir -p dir0/dir1/dir2/ # 创建多级目录,父目录不存在的情况下先生成父目录
rmdir
删除空目录
rmdir dir0 # 删除空目录dir0
cp
复制文件或者目录
cp xxoo.txt xxoo_p.txt # 复制xxoo.txt文件,结果为xxoo_p.txt
cp -r dir0/ dir1/ # 递归处理,将制定目录下的文件与子目录一并拷贝;
mv
移动文件或目录、文件或目录改名
mv dir0 dir1 # 将 dir0 移动到 dir1(或者说将 dir0 改名为 dir1)
rm
删除文件
# r 删除该目录下的所有文件
# f 强制删除文件或目录
rm -rf dir0 # 递归删除 dir0 目录中的所有文目录及文件
cat
显示文本文件内容
cat xxoo.txt # 查看 xxoo.txt 文件中的内容
more
分页显示文本文件内容,可前后翻页,空格向后,b 键向前
more xxoo.txt # 分页显示xxoo.txt文件中的内容
less
分页显示文本文件内容,可前后翻页,空格向后,b键向前,支持底行模式
less xxoo.txt # 分页显示xxoo.txt文件中的内容
head
查看文本开头部分的内容,默认10行
head xxoo.txt # 查看xxoo.txt文件前10行的内容
head -20 xxoo.txt # 查看xxoo.txt文件前20行的内容
tail
查看文本结尾部分的内容,默认10行
tail xxoo.txt # 查看xxoo.txt文件中的最后10行
tail -20 xxoo.txt # 查看xxoo.txt文件中的最后20行
tail -f xxoo.txt # 循环滚动读取文件并动态显示在屏幕上,根据文件属性追踪
tail -F xxoo.txt # 循环滚动读取文件并动态显示在屏幕上,根据文件名追踪
wc
统计文本的行数、字数、字符数
wc xxoo.txt # 统计xxoo.txt文件的行数、字数、字符数
wc -m xxoo.txt # 统计xxoo.txt文件的字符数
wc -w xxoo.txt # 统计xxoo.txt文件的文本字数
wc -l xxoo.txt # 统计xxoo.txt文件的文本行数
find
在系统中的指定目录下查找指定的文件
find / -name xxoo.txt # 在根目录下查找名字为xxoo.txt的文件
grep
在指定文件中查找包含指定内容的行
grep 69 xxoo.txt # 在xxoo.txt文件中查找含有69的所有行
grep myFile.txt fileName.txt # 也可以对两个文件进行比较,找出不同的内容。
ln
建立链接文件
ln xxoo.txt xxoo_l.txt # 建立链接文件
ln -s xxoo.txt xxoo_l.txt # 对源文件建立符号链接,而非硬链接
系统常用命令
top
显示当前系统中耗费资源最多的进程
top # 显示系统中耗费资源最多的进程
date
显示系统当前时间
date # 显示系统当前时间
cal
查看当前日期
cal # 查看当前日期
cal 2020 # 也可以指定查看某一年的,比如说我们查看2021全年的日期,则输入如下命令即可。
cal 8 2008 # 也可以查看某年的某月,格式如下,以2008年8月为例
ps
较少单独使用,配参数根据需求,ps -ef或者ps -aux
ps -e # 显示所有进程,环境变量
ps -A # 显示所有进程,环境变量
ps -ef # 全格式显示
ps -a # 显示所有用户的所有进程(包括其他用户)
ps -au # 按用户名和启动时间的顺序来显示进程
ps -aux # 显示无控制终端的进程
kill
强制杀死一个进程
kill -9 69 # 强制杀死pid为69的进程
df
显示文件系统磁盘空间的使用情况
df # 显示文件系统磁盘空间的使用情况
df -h # 以人类可读的方式显示,Kb,Mb,Gb等
du
显示指定的目录及子目录已使用的空间的总和
du # 显示指定的目录及其子目录已经使用的磁盘空间的总和
du -s * # 显示指定目录的总和,*当前目录下表示所有
du -sh * # 以人类可读的方式显示,Kb,Mb,Gb等
free
显示当前内存和交换空间的使用情况
free # 显示当前内存和交换空间的使用情况
free -h # 以人类可读的方式显示当前内存和交换空间的使用情况
ifconfig
网卡网络配置,常用于查看当前ip地址
ifconfig # 网卡网络配置,常用于查看当前IP地址
ifconfig eth0 192.168.69.69 # 临时修改系统IP(重启后失效)
ping
测试网络的连接性
ping baidu.com # 测试网络的连接性
hostname
查看主机名
hostname # 查看主机名
shutdown
关机
shutdown -r # 先关机,再重启
shutdown -h # 关机后不重启
halt
关机后关闭电源
halt # 关机后关闭电源,相当于shutdown -h
reboot
重新启动
reboot # 重新启动,相当于shutdown -r
clear
清空屏幕。
clear
压缩解压缩
gzip
压缩后面的文件或者文件夹
gzip xxoo.txt # 压缩xxoo.txt文件
gzip -d xxoo.txt.gz # 解压后面的压缩文件
gzip -9 xxoo.txt # 指定的数字num调整压缩的速度,-1或--fast表示最快压缩方法(低圧缩比),-9或--best表示最慢的压缩方法(高压缩比)。系统省缺值为6
tar
压缩
.tar.gz表示一种压缩格式。
建立一个压缩文件
tar -zcvf file.tar.gz workSpace/*
# -------------------------------------------------
# 其中参数解释如下:
# z 使用`gzip`进行压缩,`gzip`是一种压缩算法。
# c 创建目标。
# v 显示压缩的过程。
# f 重命名,也就是给压缩文件进行重新命名。
# -------------------------------------------------
解压
tar -zxvf file.tar.gz
# -----------------------------------------
# 其中,x表示解压缩。
# 他们的参数的顺序是不固定的,可以进行任意的调整。
# -----------------------------------------
zip
打包
zip file.zip * # 进到待打包文件的同级目录里,然后进行打包,其中*表示将所有的文件进行打包。
zip file.zip -r workSpace/* # 多层文件夹进行打包,需要将子文件加递归的都打包到压缩文件中
unzip
解压
切换到压缩包所在的文件的,然后运行如下命令即可:
unzip file.zip
下载文件
wget
下载
wget url # 下载
wget url -O newFile.tar.gz # 可以对下载的东西进行重命名,其中参数是大写的字母欧(O),不是零。
文件权限操作
Linux文件权限的描述格式解读

- r(read) 可读权限,w(write) 可写权限,x(executable) 可执行权限(可也以用二进制表示111 110 100 ---> 764)
- 第1位:文件类型(d(directory) 目录,- 普通文件,l(link) 链接文件)
- 第2-4位:所属用户权限,用u(user)表示
- 第5-7位:所属组权限,用g(group)表示
- 第8-10位:其他用户权限,用o(other)表示
- 第2-10位:表示所有的权限,用a(all)表示
chmod
修改文件或目录的权限
# u 表示当前用户
# g 表示同组用户
# o 表示其他用户
# a 表示所有用户
# r 表示可读
# w 表示可写
# x 表示可执行
chmod u+r xxoo.txt # 修改xxoo.txt文件给当前用户添加可读权限
chmod -R u+r xxoo # 修改xxoo目录及其子目录的所有文件的权限,给当前用户添加可读权限
# 7 可读可写可执行,4+2+1
# 6 表示可读可写,4+2
# 5 表示可读可执行, 4+1
# 3 表示可写可执行,2+1
chmod 764 xxoo.sh # 直接指定文件的权限,当前用户可读可写可执行,当前用户所属组可读可写,其他用户可读
chwon
修改文件的所属用户和组
chwon user1:group1 xxoo.txt # 将xxoo.txt文件的所属用户指定为user1,组为group1
# 用数字来表示权限
# r = 4
# w = 2
# x = 1
# - = 0
chwon -R user1:group1 xxoo.txt # 修改目录下所有文件及子目录的所属用户和组
常用快捷键
Ctrl + C
Ctrl + C 停止进程
Ctrl + L
Ctrl + L 清屏
Ctrl + R
Ctrl + R 搜索历史命令
Ctrl + Q
Ctrl +Q 退出
Tab
Tab 自动补全
vi 编辑器
一般指令模式
光标的移动方法
| 按键 | 说明 | 备注 |
|---|---|---|
| h 或向左方向键(←) | 光标向左移动一个字符 | 如果你将右手放在键盘上的话,你会发 现 hjkl 是排列在一起的,因此可以使用 这四个按钮来移动光标。 如果想要进行 多次移动的话,例如向下移动 30 列, 可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后, 按下动作即可! |
| j 或向左方向键(↓) | 光标向下移动一个字符 | |
| k 或向左方向键(↑) | 光标向上移动一个字符 | |
| l 或向右方向键(→) | 光标向右移动一个字符 | |
| [Ctrl] + [f] | 屏幕“向下”移动一页,相当于 [Page Down]按 键 (常用) | |
| [Ctrl] + [b] | 屏幕“向上”移动一页,相当于 [Page Up] 按键 (常用) | |
| [Ctrl] + [d] | 屏幕“向下”移动半页 | |
| [Ctrl] + [u] | 屏幕“向上”移动半页 | |
| + | 光标移动到非空白字符的下一列 | |
| - | 光标移动到非空白字符的上一列 | |
| n |
那个 n 表示“数字”,例如 20 。按下数字后再 按空白键,光标会向右移动这一列的 n 个字 符。例如 20 |
|
| 0 或功能键[Home] | 这是数字“ 0 ”:移动到这一列的最前面字符处 (常用) | |
| $ 或功能键[End] | 移动到这一列的最后面字符处(常用) | |
| H | 光标移动到这个屏幕的最上方那一列的第一 个字符 | |
| M | 光标移动到这个屏幕的中央那一列的第一个 字符 | |
| L | 光标移动到这个屏幕的最下方那一列的第一 个字符 | |
| G | 移动到这个文件的最后一列(常用) | |
| nG | n 为数字。移动到这个文件的第 n 列。例如 20G 则会移动到这个文件的第 20 列(可配合 :set nu) | |
| gg | 移动到这个文件的第一列,相当于 1G 啊! (常用) | |
| n |
n 为数字。光标向下移动 n 列(常用) |
搜寻与取代
| 按键 | 说明 | 备注 |
|---|---|---|
| /word | 向光标之下寻找一个名称为 word 的字串。例 如要在文件内搜寻 vbird 这个字串,就输入 /vbird 即可! (常用) | 使用 /word 配合 n 及 N 是非常有帮助 的!可以让你重复的找到一些你搜寻的 关键字! |
| ?word | 向光标之上寻找一个字串名称为 word 的字 串。 | |
| n | 这个 n 是英文按键。代表“重复前一个搜 寻的动作”。举例来说, 如果刚刚我们执 行 /vbird 去向下搜寻 vbird 这个字串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的 字串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字串! | |
| N | 这个 N 是英文按键。与 n 刚好相反,为“反 向”进行前一个搜寻动作。 例如 /vbird 后,按 下 N 则表示“向上”搜寻 vbird 。 | |
| :n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字串,并将该字串取代为 word2 !举例来说,在 100 到 200 列之间搜寻 vbird 并取代为 VBIRD 则:“:100,200s/vbird/VBIRD/g”。(常用) | |
| :1,$s/word1/word2/g | 从第一列到最后一列寻找 word1 字串,并将 该字串取代为 word2 !(常用) | |
| :1,$s/word1/word2/gc | 从第一列到最后一列寻找 word1 字串,并将 该字串取代为 word2 !且在取代前显示提示 字符给使用者确认 (confirm) 是否需要取 代!(常用) |
删除、复制与贴上
| 按键 | 说明 | 备注 |
|---|---|---|
| x, X | 在一列字当中,x 为向后删除一个字符 (相 当于 [del] 按键), X 为向前删除一个字符 (相当于 [backspace] 亦即是倒退键) (常 用) | |
| nx | n 为数字,连续向后删除 n 个字符。举例来 说,我要连续删除 10 个字符, “10x”。 | |
| dd | 删除光标所在的那一整列(常用) | |
| ndd | n 为数字。删除光标所在的向下 n 列,例如 20dd 则是删除 20 列 (常用) | |
| d1G | 删除光标所在到第一列的所有数据 | |
| dG | 删除光标所在到最后一列的所有数据 | |
| d$ | 删除光标所在处,到该列的最后一个字符 | |
| d0 | 那个是数字的 0 ,删除光标所在处,到该列 的最前面一个字符 | |
| yy | 复制光标所在的那一列(常用) | |
| nyy | n 为数字。复制光标所在的向下 n 列,例如 20yy 则是复制 20 列(常用) | |
| y1G | 复制光标所在列到第一列的所有数据 | |
| yG | 复制光标所在列到最后一列的所有数据 | |
| y0 | 复制光标所在的那个字符到该列行首的所有 数据 | |
| y$ | 复制光标所在的那个字符到该列行尾的所有 数据 | |
| p, P | p 为将已复制的数据在光标下一列贴上,P 则 为贴在光标上一列! 举例来说,我目前光标 在第 20 列,且已经复制了 10 列数据。则按 下 p 后, 那 10 列数据会贴在原本的 20 列之 后,亦即由 21 列开始贴。但如果是按下 P 呢? 那么原本的第 20 列会被推到变成 30 列。 (常用) | |
| J | 将光标所在列与下一列的数据结合成同一列 | |
| c | 重复删除多个数据,例如向下删除 10 列,[ 10cj ] | |
| u | 复原前一个动作。(常用) | 这个 u 与 [Ctrl]+r 是很常用的指令!一 个是复原,另一个则是重做一次~ 利用 这两个功能按键,你的编辑,嘿嘿!很 快乐的啦! |
| [Ctrl]+r | 重做上一个动作。(常用) | |
| . | 不要怀疑!这就是小数点!意思是重复前一 个动作的意思。 如果你想要重复删除、重复 贴上等等动作,按下小数点“.”就好了! (常 用) |
一般指令模式切换到编辑模式
进入插入或取代的编辑模式
| 按键 | 说明 | 备注 |
|---|---|---|
| i, I | 进入插入模式(Insert mode):i 为“从目前光标所在处插入”, I 为“在目前所在列的第一个非空白 字符处开始插入”。 (常用) | |
| a, A | 进入插入模式(Insert mode):a 为“从目前光标所在的下一个字符 处开始插入”, A 为“从光标所在列 的最后一个字符处开始插入”。 (常用) | |
| o, O | 进入插入模式(Insert mode): 这是英文字母 o 的大小写。o 为“在目前光标所在的下一列处插 入新的一列”; O 为在目前光标所 在处的上一列插入新的一列!(常 用) | |
| r, R | 进入取代模式(Replace mode):r 只会取代光标所在的 那一个字符一次;R会一直取代光 标所在的文字,直到按下 ESC 为 止;(常用) | 上面这些按键中,在 vi 画面的左下角处会出现“-- INSERT--”或“--REPLACE--”的字样。 由名称就知道 该动作了吧!!特别注意的是,我们上面也提过 了,你想要在文件里面输入字符时, 一定要在左下 角处看到 INSERT 或 REPLACE 才能输入喔! |
| [Esc] | 退出编辑模式,回到一般指令模式 中(常用) |
一般指令切换到命令行界面
命令行界面的储存、离开
| 按键 | 说明 | 备注 |
|---|---|---|
| :w | 将编辑的数据写入硬盘文件中(常用) | |
| :w! | 若文件属性为“只读”时,强制写入该文件。不过,到底能 不能写入, 还是跟你对该文件的文件权限有关啊! | 注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具 有“强制”的意思~ |
| :q | 离开 vi (常用) | |
| :q! | 若曾修改过文件,又不想储存,使用 ! 为强制离开不储存 盘案。 | |
| :wq | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) | |
| ZZ | 这是大写的 Z 喔!若文件没有更动,则不储存离开,若 文件已经被更动过,则储存后离开! | |
| :w [filename] | 将编辑的数据储存成另一个文件(类似另存新文件) | |
| :r [filename] | 在编辑的数据中,读入另一个文件的数据。亦即将 “filename” 这个文件内容加到光标所在列后面 | |
| :n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个文件。 | |
| :! command | 暂时离开 vi 到命令行界面下执行 command 的显示结 果!例如 “:! ls /home”即可在 vi 当中察看 /home 下面以 ls 输出的文件信息! |
vim 环境的变更
| 按键 | 说明 | 备注 |
|---|---|---|
| :set nu | 显示行号,设置之后,会在每一列的字首显示该列的行 号 | |
| :set nonu | 与 set nu 相反,为取消行号! |
符号命令
重定向
>
将前一条命令的输出,写入到后面的文本中,将文本清空,然后写入。
echo "hello world" > helloWorld.txt
>>
将前一条命令的输出,写入到后面的文本中,不清空文本,追加写入。
echo "hello world" >> helloWorld.txt
|
管道命令符,以前一个命令的输出作为输入,然后进行运算。
cat helloWorld.txt | grep 'hello' # 打印helloWorld.txt中带有hello的行。
脚本知识
脚本
简单理解就是一堆Linux命令。
脚本文件
脚本文件一般是后缀名为.sh的文件。
执行脚本文件
sh fileName.sh
脚本文件中也可以定义变量,格式如下:
a=10
注意,等号(=)的前后不能有等号,不然会出现语法错误。
输出
Linux脚本中,也可以输出定义的变量,格式如下:
a=10
echo $a
在脚本中,使用echo打印结果,类同于Python中的print()方法。
echo也可以直接打印字符串,代码如下:
echo "Hello World"
echo Hello World
在Linux脚本中,字符串可以不带引号,带与不带影响不是很大。但是为了增强代码的可读性,建议带上双引号。
echo也可以一次打印多个结果,格式如下:
a=10
echo "Hello World" $a
$
在上边我们看到了$这个符号,在什么时候使用它呢?在函数的定义阶段(赋值),不需要使用$;在变量的调用的时候,则需要使用$。
计算
求和
a=10
b=3
c=`expr $a + $b`
echo $c
在上边的代码中,使用了一个变量c接收了计算结果,然后再将打印出来。其中,计算过程要使用反引号(`)将其括起来。
expr计算后边的式子的值。
求积
a=10
b=3
c=`expr $a * $c`
echo c
如果使用上边的代码进行计算a*c的积,则会报错,提示语法错误。是因为在脚本中,认为*是正则匹配的意思,所有就会出现错误。那么如何求两个变量的积呢,那就需要使用反斜线()进行转译就可以了,代码如下:
a=10
b=3
c=`expr $a \* $c`
echo c
总结下就是,+、-、*、/,其中乘转译一下就可以了,其他三个都不用处理。但是运算符的左右两端必须要加上空格,不然没有办法运算。
还有一个特殊的就是小括号(()),在脚本中也需要转译,书写为\(\)。
在脚本脚本中,如果有非常长的公式的话,建议拆成多个短的公式。
if判断
a=5
b=35
if [ $a > $b ]
then
echo $a
else
echo $b
fi
上边的代码的结果输出为5,按照我们的逻辑应该输出的是35才对,这是为什么呢?这是因为Linux脚本中不能使用大于号(>)这类符号来进行比较运算。在脚本中,比较运算如下:
| 序号 | 比较运算 | 脚本中的使用方式 | 备注 |
|---|---|---|---|
| 1 | 等于(=) | -eq | equal |
| 2 | 不等于(≠) | -ne | not equal |
| 3 | 大于(>) | -gt | geater then |
| 4 | 大于等于(≥) | -ge | geater or equal |
| 5 | 小于(<) | -lt | less than |
| 6 | 小于等于(≤) | -le | less or equal |
| 所以,正确的代码如下: |
a=5
b=35
if [ $a -gt $b ]
then
echo $a
else
echo $b
fi
注释
Linux脚本中注释使用#进行注释,加在每一行的最左端。
循环语句
for循环
格式如下:
for x in 1 2 3 4 5 6 7 8 9 10
do
echo $x
done
上边代码中,for一行的x没有带$是因为这里的是赋值,所以不需要带。下边的使用了$是因为这里是调用。
本分版本可以简化为如下方式:
for x in {1 .. 10}
do
echo $x
done
while循环
格式如下:
x=1
while [ $x -le 10 ]
do
echo $x
a=`expr $x + 1`
done
String
a="hello"
b="world"
echo $a $b
上边的代码输出的结果为放在一行的hello world,为什么会在一行的呢?因为echo会将后边的内容的原封不动的输出出来,因为我们在$a和$b中间加了一个空格,所以输出的结果才会在中间有一个空格。
read输入
代码如下:
echo "Please enter a: "
read a
echo "Please enter b: "
read b
c=`expr $a + $b`
echo $c
上边的代码的意思是输入a的值,然后输入b的值,然后输出a+c的和。read的意思是读取上一步输入的值。
如果将输入的的值和结果最终格式化输出怎么做呢?看下面的代码:
echo "Please enter a: "
read a
echo "Please enter b: "
read b
c=`expr $a + $b`
echo $a + $b = $c
上边代码的输出结果为:(假设输入的a为1,b为2)1 + 2 = 3。
字符串比较
password="hello123"
echo "Please enter a password: "
read userPassword
if [ $password = $userPassword ]
then
echo "密码正确"
else
echo "密码错误"
fi
其中,字符串的比较使用等号(=)进行比较,其中等号(=)前后必须有一个空格。
另外,不等于(≠)使用!=进行表示。
字符串拼接
str1="hello"
str2="world"
str3="$str1 $str2"
echo $str3
判断一个字符串是不是空字符串,代码如下:
str1="hello"
if [ -z $str1 ]
then
echo "str1 是空的"
else
echo "str1 不是空的"
fi
其中,-z表示是不是空的,其中z是zero的缩写。另外还有-n,它是不是空的的意思,其中n是 not zero的缩写。
数组
创建数组
arr=(1 2 3 4)
含有数组的脚本一般使用bash进行运行(bash是sh的众多升级版中的一个,它支持数组),如果使用sh进行运行,则会报错,提示语法错误。
打印数组中的元素的话,如果直接使用一下方式:
arr=(1 2 3 4)
echo $arr
如果直接这样打印,则会输出第一个元素 1,显而易见这样是不行的。如果想要完全都打印出来,则需要for循环打印。代码如下:
arr=(1 2 3 4)
for x in ${arr[@]}
do
echo $x
done
其中,给arr套上大括号({})是为了告诉系统这是一个数组。
如果只想要其中的地某个元素,则直接使用${变量名[index]}的方式进行了,其中的索引与Python的方式是一样的,代码如下:
arr=(1 2 3 4)
echo ${arr[2]}
这样就可以输出3这个元素了。
如果想要将数组中所有元素的和求出来,可是使用for循环进行,代码稍微改动即可,见下方代码:
arr=(1 2 3 4)
sum=0
for x in ${arr[@]}
do
sum=`expr $sum + $x`
done
echo $sum
如果要找数组中的最大元素,则代码如下:
arr=(1 2 3 4)
maxNum=${arr[0]}
for x in ${arr[@]}
do
if [ $x -gt $maxNum ]
then
maxNum=$x
fi
done
echo $maxNum
全局变量
USER
当前登录系统的用户的用户名
HOME
当前用户的主目录
利用这个全局变量,可以直接进入用户主目录。
cd $HOME
进入用户主目录也可以使用如下方式:
cd ~
同理,也可以使用~的方式查看主目录:
echo ~
PATH
查看环境变量
echo $PATH
放在环境变量路径中的可执行文件可以直接执行。
添加环境变量
PATH=$PATH:/home/ubuntu/workspace
另外,PATH中的环境变量都是通过冒号(:)隔开的。

浙公网安备 33010602011771号