shell学习-常用语句
为什么使用shell
可以快速、简单的完成编程,实现自己的想法。Shell非常适合编写小的工具,因为小工具更强调的是易于配置、维护、移植等,而不是执行效率。
当自己的想法确实有必要进行优化,有必要让它更容易修改以及修正设计目的时,可以将shell编写的工具重新用C、C++/python等语言重新实现。
常见的shell有bash/csh/sh等
管道和重定向
ls -al > lsoutput.txt #将ls命令输出的内容重定向到txt文件 在>前加数字 0 1 2 分别代表输入、标准输出、错误输出
参数2可以将错误输出到文件 而标准输出的内容将显示在屏幕上
>> #将输出添加到文件
丢弃不需要保存的输出的方法
Kill -l 1234 >/dev/null 2>&1 #将标准输出与错误输出都丢弃到系统垃圾箱
| 管道 用来连接进程 通过管道连接的进程可以同时运行,并自动协调数据流
Ps > psout.txt #输出ps内容到psout.txt
Sort psout.txt > psout.out #对psout.txt内容进行排序 输出到psout.out中
管道写法
Ps | sort | pssort.out #将ps内容排序后输出
自动搜索文件夹下 所有文件中包含的 某字符串
More $(grep -l POSIX *) #在当前文件夹下的文件中 搜索POSIX字符串 打印出包含字符串的文件名
创建脚本
1.在脚本第一行添加 #!/bin/sh
2.把脚本设置为可执行 chmod +x 脚本文件名
3.设定脚本的权限
shell语法
1.变量 不需要提前申明,变量被用到时会自动创建,所有变量被看做字符串来存储 获取变量内容用$字符,
若字符串里包含空格,则需要使用括号将字符串括起来,此外,等号两边不能有空格
$() 或 $"" 用变量的值替换此处的内容 注意 $''不发生替换
2.环境变量&参数变量
$0 当前脚本的文件名
$n 传递给脚本的参数n,比如$1表示第一个参数
$# 传递给脚本或函数的参数个数。
$*,$@ 传递给脚本或函数的所有参数
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell脚本所在的进程ID
$HOME 当前用户家目录
$PS1 给出当前用户名、机器名和当前目录名
$* 在一个变量中列出所有参数 参数间用IFS中第一个字符分隔开
$@ $*的变体 列出所有参数 与IFS无关 参数之间用空格分开
3.条件
test & [ 命令:shell布尔判断命令
检查一个文件是否存在
if test -f fred.c
then
…
fi
#或者
if [ -f fred.c ]
then
…
Fi
4.控制结构
条件判断
if condition
then
statements
else if condition; then
statements
else
statements
fi
循环语句
for variable in values
do
statements done
exit while condition; do
statements done until condition
do
statements done #until与while的条件测试相反 case variable in
pattern [ | pattern] …) statements;;
pattern [ | pattern] …) statements;;
…
esac
命令列表
- AND列表
执行一系列命令,只有在前边所有命令都执行成功的情况下才执行后一条命令
statement1 && statement2 && statement3 && …
&&的作用是检查上一条语句的返回值
AND列表是一系列命令作为一个整体,所有命令都执行,AND才算执行成功
- OR列表
执行一系列命令直到一条命令成功为止
函数
function_name (){
statements
}
函数定义需要放到调用之前
当一个函数被调用时,脚本程序的位置参数($*/$@/$#/$1/$2等)都会被替换为函数的参数,当函数执行完,这些参数将会恢复他们之前的值
shell学习-常用语句的更多相关文章
- Shell学习:if语句 if -z -n -f -eq -ne -lt
if 条件then Commandelse Commandfi 别忘了这个结尾 If语句忘了结尾fitest.sh: line 14: sy ...
- linux shell脚本常用语句
linux shell 指令 诸如-d, -f, -e之类的判断表达式: 文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d ...
- mysql学习一 常用语句
操作系统为windows 1 启动关闭mysql服务 //windows mysqld --console //开启mysql服务 mysqladmin -uroot shutdown //关闭my ...
- Shell常用语句及结构
条件判断语句之if if 语句通过关系运算符判断表达式的真假来决定执行哪个分支:shell有三种if语句样式,如下: 语句1 if [ expression ] then Statement(s) t ...
- 系统学习javaweb补充1----HTML常用语句
HTML 常用语句 一.单行文本框语法格式 <input type="text" name="输入信息的名字" value="输入信息的值&qu ...
- shell学习笔记
shell学习笔记 .查看/etc/shells,看看有几个可用的Shell . 曾经用过的命令存在.bash_history中,但是~/.bash_history记录的是前一次登录前记录的所有指令, ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- shell学习笔记汇总
1.shell脚本中函数使用 函数定义在前,调用在后,顺序反了就没有效果了.函数调用为:函数名 参数列表 函数内部通过以下变量访问函数的参数:shell脚本函数中: $0: 这个脚本的名字 $n: 这 ...
- Shell 学习(三)
目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...
随机推荐
- 基于jquery读取input上传的文件内容
<script src="/static/js/jquery.js"></script> // 前端页面实现头像预览 // 当用户选中文件之后,也就是头像的 ...
- 2018-12-25-SourceYard-制作源代码包
title author date CreateTime categories SourceYard 制作源代码包 lindexi 2018-12-25 9:43:7 +0800 2018-12-09 ...
- python3在pycharm中为什么导入random模块不能用? TypeError: 'module' object is not callable
新手学python求大神指导,也用sys导入了random.py的路径,仍然不行. 刚刚排错貌似找到了问题的原因...那是因为我在pycharm中新建的python文件名就是random,所以当前目录 ...
- 关于IFRAME的onload事件
昨天遇到一个关于iframe的问题,比如a页面中嵌入了一个iframe称为a_iframe,如果直接在a_iframe的标签上直接加入属性的设置,onload=’’,这样才onload事件才是起作用的 ...
- httpclient: Content-Length header already present问题
现象:用httpclient发送http请求时,客户端返回: org.apache.http.client.ClientProtocolException at org.apache.http.imp ...
- UVa 1374 - Power Calculus——[迭代加深搜索、快速幂]
解题思路: 这是一道以快速幂计算为原理的题,实际上也属于求最短路径的题目类型.那么我们可以以当前求出的幂的集合为状态,采用IDA*方法即可求解.问题的关键在于如何剪枝效率更高.笔者采用的剪枝方法是: ...
- WPF 从零开始开发 dotnet Remoting 程序
本文告诉大家如何不使用框架,从零开始开发一个 dotnet remoting 程序 在我的另一篇博客 WPF 使用RPC调用其他进程 就大概告诉了大家如何在 WPF 使用 dotnet remotin ...
- WPF 使用 SharpDx 异步渲染
本文告诉大家如何通过 SharpDx 进行异步渲染,但是因为在 WPF 是需要使用 D3DImage 画出来,所以渲染只是画出图片,最后的显示还是需要 WPF 在他自己的主线程渲染 本文是一个系列,希 ...
- C# 转换类型和字符串
有时候我们需要互转类型和字符串,把字符串转类型.把类型转字符串. 如果是基础类型,可以使用 x.Parse 这个方法,很多基础类型都支持. 那么我们可以使用 TypeDescriptor string ...
- SDOI2019热闹又尴尬的聚会
P5361 [SDOI2019]热闹又尴尬的聚会 出题人用脚造数据系列 只要将\(p\)最大的只求出来,\(q\)直接随便rand就能过 真的是 我们说说怎么求最大的\(p\),这个玩意具有很明显的单 ...