从零开始学shell(4)--命令行及处理

原创 2016年06月01日 15:39:58

命令行详解

以一条命令为例:

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重定向

很多情况下,我们需要把命令执行的结果输出到文件中保存,有的命令的输入也可以从文件中获得。
有三种主要的重定向符号>, >>, <

  1. Linux-command > filename
    将命令执行结果输出到filename命名的文件里,如果文件已经存在并且已经有内容了,则抹掉原来的内容,重写该文件。
  2. Linux-command >> filename
    > 作用基本相同,唯一不同的是如果filename存在,则在文件末端写入输出结果,不覆盖原有内容。

  3. 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 统计当前目录的文件数
版权声明:本文为博主原创文章,未经博主允许不得转载。

《MySQL 5.6从零开始学》读书笔记

第1章 初始MySQL MySQL的主要优势: 体积小速度快成本低:含社区版和企业版可移植性:可以在多个平台上运行丰富的接口:提供了用于C,Java,PHP,Python等语言的API支持查询语言...
  • Jlinglinglei
  • Jlinglinglei
  • 2016年05月11日 11:27
  • 1933

MySQL 5.6 从零开始学 读后总结和感

写在最前面: 此书包含,但是不限于下面的内容。以上只是写了一部份内容,还有,日志,试图,备份还原等内容没有写出。《MySQL 5.6从零开始学(视频教学版)》以MySQL5.6为线索,全面讲...
  • liuguangqiang
  • liuguangqiang
  • 2016年07月29日 22:31
  • 3957

从零开始学Storm

从零开始学StormStorm简介 学习 1基本知识 应用方向:流处理 连续计算 分布式RPC storm-state 管理大量的内存状态0.8 版本引入State2拓扑详解TopologyBuild...
  • XingKong_678
  • XingKong_678
  • 2017年04月09日 16:12
  • 1082

从零开始学统计之归璐

从零开始学统计之归璐
  • Er_longlong
  • Er_longlong
  • 2017年01月12日 14:42
  • 598

从零开始学python网络爬虫

大家好哈,最近博主在学习Python,特别是网络数据采集,俗称爬虫。学习期间也碰到了一些问题,在解决问题的同时也大量参看了网上了一些资源,获得了一些经验。所以开一个博客希望能将学习过程中碰到的问题一并...
  • lxmanutd
  • lxmanutd
  • 2016年11月29日 23:03
  • 2014

openstack从零开始(3)——nova

简介nova负责创建、管理云计算系统,是IaaS的核心部分。nova与openstack中的identity、image service、dashboard等组件交互。各个组件 API comput...
  • cugb1004101218
  • cugb1004101218
  • 2015年10月13日 21:01
  • 498

从零开始学Scala系列(二)之初识Scala

1. 学习使用scala解释器C:\Users\rodbate>scala Welcome to Scala 2.12.1 (Java HotSpot(TM) 64-Bit Server VM, Ja...
  • rodbate
  • rodbate
  • 2017年02月23日 00:00
  • 551

112. Spring Boot 定时任务升级篇【从零开始学Spring Boot】

【原创文章,转载请注明出处】 【本篇博客,有配套视频,视频地址:《Spring Boot定时任务》,公众号中点击下面的阅读原文,视频中讲解的更详细】 需求缘起:在之前的一篇文章中就介绍过《Spring...
  • zmken497300
  • zmken497300
  • 2017年03月28日 16:13
  • 534

从零开始学java第一章 认识java

从零开始学java第一章 一、认识java        1. java的来源             众所周知,java是面向对象的变成语言。那么何为“面向对象”呢?这里就要引入一个思...
  • linan123456789
  • linan123456789
  • 2016年10月18日 09:53
  • 616

《JSP+Servlet+Tomcat应用开发从零开始学》

当当网页面:  http://product.dangdang.com/23619990.html  内容简介      本书全面介绍了 JSP开发中涉及的相关技术要点和实战技巧。全书结构清晰,难...
  • brucexia
  • brucexia
  • 2015年03月13日 18:12
  • 2387
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从零开始学shell(4)--命令行及处理
举报原因:
原因补充:

(最多只允许输入30个字)