在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...
如何编写简单的Shell脚本(Script)文件之Linux的基本操作
新建一个文本文件包含所需要的脚本。举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网下载下来的*.tar的文件(我好像总是记不住tar的所有参赛)。滑动轴承 我决定把我的脚本名称叫做“untar”:
pico untar
因为在我的当前工作目录里untar文件不存在,所有pico文本编辑器自动创建这个文件,现在,我输入以下内容:
#!/bin/bash
echo this is the script file $0
echo untarring the file $1
# this calls tar with options -xvzf (extract,
# verbose, filter through gzip, input filename)
tar -xvzf $1
我使用O保存这个文件,然后X退出。
脚本的第一行,以“#!”开始是特别的提示-它告诉shell应该用哪一个程序来解释我的脚本。在这个例子里,我使用bash shell /bin/bash。第一行必须使用“#!”开头,否则脚本不会运行(系统认为是一个文本文件)。水泥烟囱新建 其他以“#”开始的行是注释行只是给作者和读者使用的,计算机将跳过这些行。
在以上脚本里,参数$0, $1, $2…是传递到脚本里面的参数。举个例子,如果我运行我的脚本名“myscript”带七个参数如下:
myscript a b c d e f g
那么,参赛$0就是myscript, $1就是a, $2就是b,$3就是c,依此类推。
脚本的第二行和第三行,echo命令输出所有在它后面同一行上的文本,然后扩展在脚本里对应的参数$0和$1。第四行和第五行是我写的注释文本,提醒我在这个脚本里要做的事情。只有最后一行是真正起作用的。
一旦脚本已经写好,我把文件属性改成对文件拥有者是“可执行”的:
chmod u+x untar
然后我的脚本就可以这样运行了:
./untar my_tar.tar.gz
Liunx脚本的确非常丰富,灵活,功能强劲,还可能有点复杂。然而,对于日常任务编写一些简单脚本,它并不需要什么特别高深的知识。你可以把一些要用到的命令放在一起,一个接一个,输入到文件里。活动隔断 我使用脚本很频繁是因为我太懒了,不想一次一次的输入相同的命令。
一个最简单的方法,可以把一组命令放在文本文件里然后使用source命令传递给shell让它直接运行:
source my_file
这个时候就不需要在文本第一行加上“#!”的标志了。
3.4.6 引号的含义
一般来说,以下字符对于shell有特殊的含义:
\ ' " ` < > [ ] ? | ; # $ ^ & * ( ) =
这里有四种不同的符号:反斜杠(\),单引号(‘),双引号(“),反向单引号(`)。
反斜杠(\)表示:关闭后面字符的特殊含义
单引号(‘)表示:关闭在两个单引号之间所有字符的特殊含义
双引号(“)表示:关闭在两个双引号之间所有字符的特殊含义除了$ ` \
反向单引号(`)表示:告诉shell首先运行两个反向单引号之间的命令,生物醇油 然后把得到的结果再传递给两个单引号之外的命令。同样的功能也可以通过“$command”命令来实现,而且可能会更方便。
举个例子,我可以创建一个奇怪的目录名叫做“*”通过使用“\”或者“’”符号:
mkdir \*
mkdir ’*’
这屏蔽了“*”对于shell的特别含义。如果没有“\”,“*”意味着当前目录下所有文件。
在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...相关推荐
- Linux中 set、env、declare、export显示shell变量的区别
原文地址:https://www.cnblogs.com/wfwenchao/p/6139039.html [TOC] Linux中 set.env.declare.export显示shell变量的区 ...
- 删除空文件夹 linux,Linux中find批量删除空文件及空文件夹脚本
Linux中find批量删除空文件及空文件夹脚本 linux下批量删除空文件(大小等于0的文件)的方法 代码如下 复制代码 find . -name "" -type f -siz ...
- linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...
如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?) 我正在尝试读取文件并仅提取base64编码部分. 我通过使用 ...
- Linux 中的 nl 命令详解及C/C++代码实现(文件行数)
在Linux 操作系统中,如果想编辑文本文件时,希望显示在其前面附加行号的行,这时 Linux 中 nl 命令就派上用场,nl 命令对文件中的行进行编号. Linux nl命令 nl 命令是一个 Un ...
- linux 桌面壁纸图片在哪个文件夹,如何在 Linux 中为每个屏幕设置不同的壁纸-桌面背景在哪个文件夹...
编译自: https://itsfoss.com/wallpaper-multi-monitor/ 作者: Abhishek Prakash 译者: geekpi如果你想在 Ubuntu 18.04 ...
- 查找空目录Linux,Linux中find批量删除空文件及空文件夹脚本
find . -name "*" -type f -size 0c | xargs -n 1 rm -f #linux下批量删除空文件(大小等于0的文件) 删除指定大小的文件,只要 ...
- Linux中移动,复制,删除,打包排除某个目录或文件
1.移动,复制,删除排除某个文件或目录 cp !(file1|dir2) /data/ 复制文件到/data/,排除file1和dir2 mv !(file1|dir2) /data/ 移动文件到/d ...
- 在linux中tldr的用法,详解 “Tldr++” 客户端:使用 TLDR 手册 快速了解 Linux 命令...
假设你想下载一个压缩文件,将其解压缩,并从命令行中将文件从一个位置移动到另一个位置.根据上面的场景,我们可能需要至少三个 Linux 命令,一个用于下载文件,一个用于提取下载的文件,一个用于移动文件. ...
- linux中的进程权限是,Linux中权限,进程,服务的简单操作
1.权限存在意义 - rw-r-r-r-- 1 root root 216 May 12 2017 /mnt/rht [1] [2] [3] [4] [5 ...
- 在 Linux 中查找 IP 地址的 3 种简单方法
在 Linux 系统中,经常需要查找 IP 地址以进行网络配置.故障排除或安全管理.无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍三种简单的方法,帮助你在 Linux 中轻 ...
最新文章
- Halcon与QT的联合编程(1)
- jquery实现表格中点击相应行变色功能
- python处理csv文件缺失值_python 加载数据是-1为缺失值时替换为空
- python---webRTC~vad静音检测-学习笔记
- AtCoder AGC037D Sorting a Grid (二分图匹配)
- 堆(heap)和栈(stack)
- java 图形库_OpenGL开放图形java库jogamp-all-platforms.7z
- 【渝粤教育】广东开放大学 网络完全与技术 形成性考核 (44)
- RFC函数的初步使用-同步
- linux实时信号的优势,c/c++开发分享Linux和实时信号
- web.xml中,spring模块化加载xml方式
- confluence启动不起来_“一键启动”只能点火?还有这5个“隐藏”功能,你都知道吗?...
- 高通平台framework,hal,kernel打开log
- 5.3bash编程初步
- 坚决反对“企业文学化”
- intellij idea 和 maven的自己的理解和安装配置
- Nginx模块开发(10)—limit_req模块分析
- 从斐波那契数列讲解算法设计的思路
- 网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?...
- 计算机右键 管理,鼠标右键菜单管理方法?
热门文章
- 打印n×n数字方阵python_2020华为春招amp;#8211;N阶方阵旋转(python) - 易采站长站
- 中科院信工所经验_2021中科院信息工程研究所电子信息专业考研经验指导分享...
- 列举python的五个数据类型_python笔记--数据类型--列表
- 企业微信小程序_授权登录接口获取用户userid
- 获取本地ip地址适用于windows和Linux环境
- jdk1.6集成activemq的2种方式
- oracle查询当前用户名下所有表
- Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
- IDEA Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/public/)
- 企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件