Shell 基本语法
一. Linux基本命令
1.1. cp命令
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录
1.2. mv命令
用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。
语法:mv [选项] 源文件或目录 目标文件或目录
1.3. rm命令
用户可以用rm命令删除不需要的文件或者目录。
语法:rm [选项] 文件
如果没有使用- r选项,则rm不会删除目录。
1.4. mkdir和rmdir
语法:mkdir [选项] dir-name
语法:rmdir [选项] dir-name
1.5. cd 命令
功能:改变工作目录。
语法:cd [directory]
1.6. ls 命令
ls是英文单词list的简写,其功能为列出目录的内容。该命令类似于DOS下的dir命令。
语法:ls [选项] [目录或是文件]
1.7. su命令
这个命令非常重要。它可以让一个普通用户拥有超级用户或其他用户的权限,也可以让超级用户以普通用户的身份做一些事情。普通用户使用这个命令时必须有超级用户或其他用户的口令。
该命令的一般形式为: su [选项] [使用者帐号]
1.8. ps命令
显示系统中执行的程序。
语法:ps [选项]
1.9. kill命令
删除执行中的程序
语法:kill [选项] PID
1.10. grep命令
搜寻输出的特定文字
语法:grep 字符串
例:
ps aux | grep matlab
kill PID
1.11. echo命令
echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
该命令的一般格式为: echo [ -n ] 字符串
1.12. clear命令
clear命令的功能是清除屏幕上的信息,它类似于DOS中的 cls命令。清屏后,提示符移动到屏幕左上角。
二. Shell的基本知识
2.1. shell提示符及其环境
提示符:$
环境:Linux,Unix,Dos等等
Shell其实就是一个解释执行命令的程序,所谓shell编程其实就是用一定的语法将各种基本的命令组合起来,让shell程序去解释执行。
同传统的编程语言一样,shell提供了很多特性,这些特性可以使你的shell script编程更为有用,如:数据变量、参数传递、判断、流程控制、数据输入和输出,子程序及以中断处理等。
2.2 如何执行shell程序
Shell程序(***.sh)
执行这个命令时
(1) #./***.sh
(2) #chmod u+x ***.sh
#***.sh
(3) #sh ***.sh
2.3 常量
字符串,例如“Hello World!”。
数字,例如705,23。
2.4 变量
shell编程中它们是没有类型的,简称弱类型编程语言,在这个变量中可以保含一个数字,一个字符串,一个单词等。你并不需要声明这个变量,它会在引用这个变量时创建它。
STR="Hello World!"
echo $STR
HOME="/home" //注意赋值不要有空格
a=123
HOME_LIST=$(ls /home) //把命令的执行结果赋值给变量
ehco $HOME //$ 符号是获得变量HOME的值
a=a+1
系统变量:
$0 这个程序的执行名字
$n 这个程序的第n个参数值,n=1...9
$* 这个程序的所有参数
$# 这个程序的参数个数
$$ 这个程序的PID
$! 执行上一个背景指令的PID
$? 上一个指令的返回值
2.5 局部变量
局部变量一般是指写在函数中的变量,他的生命力是有限的。局部变量比较好理解,这里就不再多介绍了。
2.6 从键盘输入变量值
使用read命令
read var1 var2 … varn
2.7 注释
Shell编程中的注释以#开头
2.8 数字运算
主要是指整数运算。expr命令可以将字符型变量转换为整数进行操作
语法:expr integer operator integer
其中operator为+ - * / %, 但对*的使用要用转义符/,如:
[oracle@localhost ~]$ more dvd.sh
#!/bin/bash
expr 5 /* 5
[oracle@localhost ~]$ sh dvd.sh
25
2.9 逻辑运算
test进行逻辑运算,用[ ]括起来就是test运算
int1 -eq int2 相等?
int1 -ne int2 不等?
int1 -gt int2 int1 > int2 ?
int1 -ge int2 int1 >= int2 ?
int1 -lt int2 int1 < int2 ?
int1 -le int2 int1 <= int2
2.10 双引号及单引号
$echo "$HOME $PATH" -- 显示变量值
/home/hbwork opt/kde/bin:/usr/local/bin:
$echo '$HOME $PATH' -- 显示单引号里的内容
$HOME $PATH
2.11 空格
由于shell对命令中的多余的空格不作任何处理 ,而用引号括起来则可以防止shell去掉这些空格。
$ str1=abcd
$ str2="abcd "
2.12 分支结构
2.12.1 结构一
if [ variable = value ]
then
command
else
if [ variable = value ]
then
command
else
command
fi
2.12.2 结构二
if [ variable = value ]
then
command
elif [ variable = value ]
then
command
fi
if 语句示例:
if [ "22" -lt "33" ] then //注意空格
echo "22 less than 33"
else
echo "no"
fi //if语句的结束
2.13 Case语句
case value in
pattern1)
command;;
pattern2)
command;;
...
patternn)
command;
esac
case 示例:
echo "enter a number"
read ans //读取一个变量read
case $ans in
1)
echo "you numer is $ans"
;; //注意符号是两个 ;
2)
echo "you number is 2"
;;
[3-9])
echo "you number is $ans"
;;
*) //*通配符
echo "others"
esac
2.14 And 和 Or
command1 && command2
command1 || command2
2.15 循环语句
2.15.1 For循环
for var in arg1 arg2 ... argn
do
command
....
command
done
For循环示例
int=1
for $int in 1 2 3 4 5
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.15.2 while循环
while command
do
command
command
command
...
Done
While循环的示例
int=1
while [ $int -le 5 ]
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.15.3 until循环结构
until command
do
command
command
....
command
done
Until循环示例
int=1
until [ $int -gt 5 ]
do
sq=`expr $int /* $int`
echo $sq
int=`expr $int + 1`
done
2.16 从循环中退出: break和continue命令
break 立即退出循环
continue 忽略本循环中的其他命令,继续下一下循环
2.17 函数 (子过程)
funcname()
{
command
...
command; #分号
}
函数示例
setup ()
{ command list ; }
do_data ()
{ command list ; }
setup
do_data
2.18 shell程序的调试
使用-x进行跟踪执行,执行并显示每一条指令。
2.19 比较运算符
2.19.1 文件比较运算符
-e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ]
-d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ]
-f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]
-L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ]
-r filename 如果 filename 可读,则为真 [ -r /var/log/syslog ]
-w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]
-x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]
filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]
filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]
2.19.2 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string 如果 string 长度为零,则为真 [ -z "$myvar" ]
-n string 如果 string 长度非零,则为真 [ -n "$myvar" ]
string1 = string2 如果 string1 与 string2 相同,则为真 [ "$myvar" = "one two three" ]
string1 != string2 如果 string1 与 string2 不同,则为真 [ "$myvar" != "one two three" ]
2.19.3 算术比较运算符
num1 -eq num2 等于 [ 3 -eq $mynum ]
num1 -ne num2 不等于 [ 3 -ne $mynum ]
num1 -lt num2 小于 [ 3 -lt $mynum ]
num1 -le num2 小于或等于 [ 3 -le $mynum ]
num1 -gt num2 大于 [ 3 -gt $mynum ]
num1 -ge num2 大于或等于 [ 3 -ge $mynum ]
三. Shell 的一些注意事项
3.1. 基础
#!/bin/bash //bash脚本第一句都是这个,他会让系统指定以bash来解释这个脚本
# //shell脚本注释符号
3.2. 变量
变量赋值的时候"="两边的内容要紧靠"="
例如:sum=0,写java写的时间长了总喜欢写成sum = 0,但是这样的结果是编辑器不识别
3.3. 在使用if、while时,在注意变量与符号之间的分割
例如:if [ `expr $a % 3` -ne 0 ],while [ "$var" != "end" ],尽量分开写,这样也挺好看也便于识别。
3.4. let的意思是让"="后面的内容做算术运算,例如:let x=a-b
3.5. 大多数情况下,可以使用测试命令来对条件进行测试,比如可以比较字符串、判断文件是否存在及是否可读等等……通常用" [ ] "来表示条件测试,注意这里的空格很重要,要确保方括号前后的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
3.6 几个简单例子
for filename in $(ls)
do
cat $filename
done
for((i=0; i<10; i++))
do
echo $i
done
x=1
sum=0
while [ $x -le 10 ] //注意[ ] 两边的空格
do
let sum=sum+$x //shell中算术计算使用let
let x=x+1
done
echo $sum
来自 http://blog.csdn.net/tianlesoftware/article/details/5953577
Shell 基本语法的更多相关文章
- Shell函数语法
Shell函数语法 定义函数: function 函数名(){ 指令... } 调用函数,方法1: 函数名 调用函数,方法2: 函数名 参数一 参数二 return在函数里面使用会跳出函数并 ...
- shell 的语法
SHELL 的语法 n 变量:字符串,数字,环境和参数 n 条件:shell中的布尔值 n 程序控制:if, elif, for, while until, case n 命令列表 n 函数 ...
- shell脚本语法基础汇总
shell脚本语法基础汇总 将命令的输出读入一个变量中,可以将它放入双引号中,即可保留空格和换行符(\n) out=$(cat text.txt) 输出1 2 3 out="$(cat te ...
- 运维shell全部语法进阶
Linux运维之shell脚本进阶篇 一.if语句的使用 1)语法规则 1 2 3 4 5 6 7 8 9 if [条件] then 指令 fi 或 if [条件];then ...
- U-Boot shell脚本语法
/********************************************************************** * U-Boot shell脚本语法 * 说明: * 之 ...
- (转)shlex — 解析 Shell 风格语法
原文:https://pythoncaff.com/docs/pymotw/shlex-parse-shell-style-syntaxes/171 这是一篇协同翻译的文章,你可以点击『我来翻译』按钮 ...
- shell 基础语法
shell 基础语法 =============================================== 推荐:http://c.biancheng.net/cpp/shell/ ==== ...
- Shell脚本语法---在Makefile等文件…
1. Shell脚本语法 1.1. 条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Sta ...
- Shell的语法
Shell的语法: 变量:字符串.数字.环境和参数: 条件:shell中的布尔值: 程序控制:if.elif.for.while.until.case: 命令列表: 函数: Shell内置命令: 获取 ...
- shell基本语法备忘
1.第一行要写明shell种类 #!/bin/bash 2.打印输出 #!/bin/bashecho "Hello World !~" 3.变量定义 变量=前后不能有空格, ...
随机推荐
- sftp(paramiko)
SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的.但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用S ...
- ABAP-HTTP支持
ABAP 中对HTTP的支持 SAP Web Application Server -> Internet Communication Framework. http://help.sap.c ...
- 没有装delphi软件则须修改程序的Uses单元,去掉QDialogs qtintf.dll
转: 花了几天的功夫,终于完成了一个delphi调用webservice(C#)的任务,发现了好多问题,不过还是解决了,和大家分享一下.首先,就是调用时一个问题,如果你的webservice没有数据库 ...
- 解决Linux命令行为什么变成-bash-3.2$
在Linux服务器上创建了一个新用户probe,是这样创建的: [root@localhost home]# groupadd -g 501 probe [root@localhost home]# ...
- Windows7 64bit+python3.6环境下安装OpenCV3.3
安装opencv3.3 打开windows的Python扩展包网址 根据自己的系统选择下载,这里我选择的是 通过pip3安装该whl文件,使用如下命令 pip3 install 该whl的绝对路径 ...
- Python环境配置, atom-python配置
环境变量 路径 在window下配置环境变量,配置到文件夹级就可以了: D:\program\python3 编码 因为windows默认的编码是ASIIC,所以使用atom时候中文是乱码,需要在环境 ...
- 通过Roslyn构建自己的C#脚本(更新版)(转)
http://www.cnblogs.com/TianFang/p/6939723.html 之前写过文章介绍过如何通过Roslyn构建自己的C#脚本,但那篇文章是参考自Roslyn CTP版 ...
- 树莓派Zero W GPIO控制
作者:陈拓 chentuo@ms.xab.ac.cn 2018.06.09/2018.07.05 0. 概述 本文介绍树莓派 Zero W的GPIO控制,并用LED看效果. 0.1 树莓派GPIO编 ...
- ora-01652无法通过128(在temp表空间中)扩展temp段
有两种错误:1.数据表空间不足 2.临时表空间不足 有两种原因:一是临时表空间空间太小,二是不能自动扩展. 分析过程: 既然是temp表空间有问题,那当然就要从temp表空间说起啦.首先要说明的 ...
- a标签伪类的LOVE HATE原则
a标签伪类的LOVE HATE原则 a标签有四个伪类,分别是: a:link 未访问的链接 a:visited 已访问的链接 a:hover 鼠标移动到链接上 a:active 选定的链接 遇到的问题 ...