从零开始学shell(4)--命令行及处理
2016-06-01 15:39
246 查看
命令行详解
以一条命令为例:ls apple
当前文件夹中没有该文件,报错信息如上。
在这里,
ls是一个真实的命令,shell执行该命令, 命令后的都被称为参数。
tail +10 myfile
命令是
tail,
+10
myfile都是参数
在shell脚本程序里,我们经常需要处理参数,有一些内建的方式可以帮助我们访问这些信息:
我们用
$+数字指代命令行中的第几个元素
在上图中,myshell为
$0,foo为
$1,bar为
$2.
最多可以用
$1到
$9来表示参数
另外用
$#表示参数个数
测试以下一个小程序:
#!/bin/sh # # Script that demos, command line args # echo "Total number of command line argument are $#" echo "$0 is script name" echo "$1 is first argument" echo "$2 is second argument" echo "All of them are :- $* or $@"
添加执行权限后
chmod 777 demo
有一点需要注意的是:不能给参数赋值
例如
$1=33这是无效的
IO重定向
很多情况下,我们需要把命令执行的结果输出到文件中保存,有的命令的输入也可以从文件中获得。有三种主要的重定向符号
>,
>>,
<
Linux-command > filename
将命令执行结果输出到filename命名的文件里,如果文件已经存在并且已经有内容了,则抹掉原来的内容,重写该文件。
Linux-command >> filename
与
>作用基本相同,唯一不同的是如果filename存在,则在文件末端写入输出结果,不覆盖原有内容。
Linux-command < filename
从filename文件中读取内容,替代键盘输入。
下面举两个例子说明IO重定向的用法:
cat>sname vivek ashish zebra babu
Ctrl + D保存
则上面内容被保存到sname文件中
执行下面语句
sort<sname>sorted_sname cat sorted_sname ashish babu vivek zebra
在上面的语句中,sort命令从sname中读取内容,将之排序后又输出到sorted_sname中。
第二个例子
tr "[a-z]" "[A-Z]" <sname >cap_names cat cap_names VIVEK ASHISH ZEBRA BABU
tr命令用来将小写字母转换成大写字母 ,从sname中读出内容,将之全部转换成大写字符后输出到cap_names中。
Pipes
中文里又称为管道,在Linux系统编程中也是一种重要的IPC方式。shell中pipe是一个连接一个程序的输出,作为另一个程序的输入,并且不需要任何中间文件。
通常用法:
command1 | command2
例子:
使用管道的命令 | 解释 |
---|---|
ls | more | ls命令执行的结果成为more的输入,即将ls执行的结果以more打开 |
who | sort | 将who执行的结果作为sort的输入,所以会输出排序后的用户信息 |
who | sort>user_list | 作用与上句相同,只不过把排序后的结果输出到user_list |
who | wc -l | who执行后把结果作为wc的输入,统计当前用户数 |
ls -l | wc-L | 统计当前目录的文件数 |
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- shell字符串操作详解
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Linux Shell 数组建立及使用技巧
- Shell脚本实现复制文件到多台服务器的代码分享
- Shell脚本实现批量替换文件内容
- Shell脚本实现的一个简易Web服务器例子分享
- linux Shell学习笔记第五天