如何编写简单的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的基本操作...相关推荐

  1. Linux中 set、env、declare、export显示shell变量的区别

    原文地址:https://www.cnblogs.com/wfwenchao/p/6139039.html [TOC] Linux中 set.env.declare.export显示shell变量的区 ...

  2. 删除空文件夹 linux,Linux中find批量删除空文件及空文件夹脚本

    Linux中find批量删除空文件及空文件夹脚本 linux下批量删除空文件(大小等于0的文件)的方法 代码如下 复制代码 find . -name "" -type f -siz ...

  3. 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编码部分. 我通过使用 ...

  4. Linux 中的 nl 命令详解及C/C++代码实现(文件行数)

    在Linux 操作系统中,如果想编辑文本文件时,希望显示在其前面附加行号的行,这时 Linux 中 nl 命令就派上用场,nl 命令对文件中的行进行编号. Linux nl命令 nl 命令是一个 Un ...

  5. linux 桌面壁纸图片在哪个文件夹,如何在 Linux 中为每个屏幕设置不同的壁纸-桌面背景在哪个文件夹...

    编译自: https://itsfoss.com/wallpaper-multi-monitor/ 作者: Abhishek Prakash 译者: geekpi如果你想在 Ubuntu 18.04 ...

  6. 查找空目录Linux,Linux中find批量删除空文件及空文件夹脚本

    find . -name "*" -type f -size 0c | xargs -n 1 rm -f #linux下批量删除空文件(大小等于0的文件) 删除指定大小的文件,只要 ...

  7. Linux中移动,复制,删除,打包排除某个目录或文件

    1.移动,复制,删除排除某个文件或目录 cp !(file1|dir2) /data/ 复制文件到/data/,排除file1和dir2 mv !(file1|dir2) /data/ 移动文件到/d ...

  8. 在linux中tldr的用法,详解 “Tldr++” 客户端:使用 TLDR 手册 快速了解 Linux 命令...

    假设你想下载一个压缩文件,将其解压缩,并从命令行中将文件从一个位置移动到另一个位置.根据上面的场景,我们可能需要至少三个 Linux 命令,一个用于下载文件,一个用于提取下载的文件,一个用于移动文件. ...

  9. linux中的进程权限是,Linux中权限,进程,服务的简单操作

    1.权限存在意义 -  rw-r-r-r--  1   root  root  216  May  12   2017  /mnt/rht [1]     [2]    [3]   [4]    [5 ...

  10. 在 Linux 中查找 IP 地址的 3 种简单方法

    在 Linux 系统中,经常需要查找 IP 地址以进行网络配置.故障排除或安全管理.无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍三种简单的方法,帮助你在 Linux 中轻 ...

最新文章

  1. Halcon与QT的联合编程(1)
  2. jquery实现表格中点击相应行变色功能
  3. python处理csv文件缺失值_python 加载数据是-1为缺失值时替换为空
  4. python---webRTC~vad静音检测-学习笔记
  5. AtCoder AGC037D Sorting a Grid (二分图匹配)
  6. 堆(heap)和栈(stack)
  7. java 图形库_OpenGL开放图形java库jogamp-all-platforms.7z
  8. 【渝粤教育】广东开放大学 网络完全与技术 形成性考核 (44)
  9. RFC函数的初步使用-同步
  10. linux实时信号的优势,c/c++开发分享Linux和实时信号
  11. web.xml中,spring模块化加载xml方式
  12. confluence启动不起来_“一键启动”只能点火?还有这5个“隐藏”功能,你都知道吗?...
  13. 高通平台framework,hal,kernel打开log
  14. 5.3bash编程初步
  15. 坚决反对“企业文学化”
  16. intellij idea 和 maven的自己的理解和安装配置
  17. Nginx模块开发(10)—limit_req模块分析
  18. 从斐波那契数列讲解算法设计的思路
  19. 网关支付、银联代扣通道、快捷支付、银行卡支付分别是怎么样进行支付的?...
  20. 计算机右键 管理,鼠标右键菜单管理方法?

热门文章

  1. 打印n×n数字方阵python_2020华为春招amp;#8211;N阶方阵旋转(python) - 易采站长站
  2. 中科院信工所经验_2021中科院信息工程研究所电子信息专业考研经验指导分享...
  3. 列举python的五个数据类型_python笔记--数据类型--列表
  4. 企业微信小程序_授权登录接口获取用户userid
  5. 获取本地ip地址适用于windows和Linux环境
  6. jdk1.6集成activemq的2种方式
  7. oracle查询当前用户名下所有表
  8. Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
  9. IDEA Cannot access alimaven (http://maven.aliyun.com/nexus/content/groups/public/)
  10. 企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件