Shell Step by Step (1) -- Introduction

1. 查看当前用户(用户数)

[email protected]:~# who
[ | wc -l]

[email protected]:~# who

kallen tty4 2015-01-16 10:46

kallen tty5 2015-01-16 10:47

kallen tty2 2015-01-16 10:42

kallen tty3 2015-01-16 10:42

root tty6 2015-01-16 10:58

kallen tty1 2015-01-15 13:10

kallen tty7 2015-01-15 12:52

[email protected]:~#

[email protected]:~# who
| wc -l

24

将管道l转化为独立的命令

[email protected]:~# cat
> countUsers                      ---- 建立文件,使用cat复制终端输入

[email protected]:~# who
|  wc -l                               ---- 脚本内容

[email protected]:~# Ctrl + D ( end-of-file )  
          ---- end of file

[email protected]:~# chmod
+x countUsers             ---- 让文件拥有执行权限

[email protected]:~# ./countUsers
                             ---- 执行脚本

【附】wc命令

# Count Bytes

echo Testing one two three | wc
-c
              print the byte counts (计算字节数)

# Count Rows

echo Testing one two three | wc
-l  
             print the character counts (计算字符数)

# Count Letters

echo Testing one two three | wc
-w
              print the newline counts (计算行数)

2.脚本声明

#!/bin/bash

#

#!/bin/bash -           -  表示没有shell选项,这是基于安全上的考虑,可避免某些欺骗式攻击(spoofing attack)

#

Shell的三种基本命令: 内建命令、Shell函数、外部命令

# 查看当前Shell类型

[email protected]:/# echo
$SHELL

/bin/bash

# Shell脚本执行方式

[email protected]:/# source shellFile

[email protected]:/# bash
shellFile

[email protected]:/# ./shellFile    (文件必须有可执行权限    chmod +x 或 chmod 755)

编写完脚本之后,你可以使用sh scriptname,[或者bash scriptname 来调用它.

(不推荐使用sh scriptname,因为这禁用了脚本从stdin 中读数据的功能.

使用sh scriptname 来调用脚本的时候将会关闭一些Bash 特定的扩展,脚本可能 因此而调用失败.) 

更方便的方法是让脚本本身就具有可执行权限,通过chmod 命令可以修改.

比如:

chmod 555 scriptname (允许任何人都具有可读和执行权限)

或:

chmod +rx scriptname (允许任何人都具有可读和执行权限)

chmod u+rx scriptname (只给脚本的所有者可读和执行权限)

时间: 2024-11-08 09:43:16

Shell Step by Step (1) -- Introduction的相关文章

Shell Step by Step (3) —— Stdin & if

4.输入输出 #! /bin/bash # Read users input and then get his name read -p "Please input your first name: " firstName read -p "Please input your last name: " lastName echo -e "Your full name is: $firstName $lastName" read使用方法: read

WPF Step By Step 系列-Prism框架在项目中使用

WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且如何来设计项目的架构和模块,下面我们就来一步步开始吧. 本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM框架,这

精通initramfs构建step by step

http://hi.baidu.com/jonathan2004/blog/item/db7bf38aad11759ea4c2721d.html 精通initramfs构建step by step (1)--hello world 2009-12-08 19:19 一.initramfs是什么 在2.6版本的linux内核中,都包含一个压缩过的cpio格式的打包文件.当内核启动时,会从这个打包文件中导出文件到内核的rootfs文件系统, 然后内核检查rootfs中是否包含有init文件,如果有则

数论之高次同余方程(Baby Step Giant Step + 拓展BSGS)

什么叫高次同余方程?说白了就是解决这样一个问题: A^x=B(mod C),求最小的x值. baby step giant step算法 题目条件:C是素数(事实上,A与C互质就可以.为什么?在BSGS算法中是要求a^m在%c条件下的逆元的,如果a.c不互质根本就没有逆元.) 如果x有解,那么0<=x<C,为什么? 我们可以回忆一下欧拉定理: 对于c是素数的情况,φ(c)=c-1 那么既然我们知道a^0=1,a^φ(c)=1(在%c的条件下).那么0~φ(c)必定是一个循环节(不一定是最小的)

Git Step by Step – (8) Git的merge和rebase

前面一篇文章中提到了"git pull"等价于"git fetch"加上"git merge",然后还提到了pull命令支持rebase模式,这篇文章就介绍一下merge和rebase之间有什么差别. 由于我们主要是想看看merge跟rebase之间的区别,这里就是用本地仓库的分支进行演示了. merge 其实在介绍分支的那篇文章中已经介绍过了一些分支merge的内容,这里就进行一些补充和总结. 下面我们基于本地一个仓库开始介绍,当前仓库的分支情

C# 2012 step by step 学习笔记8 CHAPTER 9 Creating Value types with enumerations and Structures

C# 2012 step by step 学习笔记8 CHAPTER 9 Creating Value types with enumerations and Structures things about 1. Declare an enumeration type. 2. Create and use an enumeration type. 3. Declare a structure type. 4. Create and use a structure type. 5. Explain

Linux Booting Process: A step by step tutorial for understanding Linux boot sequence

One of the most remarkable achievement in the history of mankind is computers. Another amazing fact about this remarkable achievement called computers is that its a collection of different electronic components, and they work together in coordination

C++开发WPF,Step by Step

示例代码 使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page.下面我就做个详细的介绍. 一.创建工程, 由于MFC的Wizard会生成很多用不到的代码,所以我准备从一个空的工程开始创建一个MFC的工程. a)         打开VS2005,菜单File->New->Projects-, 左面选择Visual C++->Win32,右面选择Win32 Console Application,给工程起个名字CPlusPlus_WPF, Ok进入下一

数据库设计 Step by Step (1)——扬帆启航

引言:一直在从事数据库开发和设计工作,也看了一些书籍,算是略有心得.很久之前就想针 对关系数据库设计进行整理.总结,但因为种种原因迟迟没有动手,主要还是惰性使然.今天也算是痛下决心开始这项卓绝又令我兴奋的工作.这将是一个系列的文 章,我将以讲座式的口吻展开讨论(个人偷懒,这里的总结直接拿去公司培训新人用). 系列的第一讲我们先来回答下面几个问题 数据库是大楼的根基 大多数程序员都很急切,在了解基本需求之后希望很快的进入到编码阶段(可能只有产出代码才能反映工作量),对于数据库设计思考得比较少. 这

数据库设计 Step by Step (2)——数据库生命周期

引言:数据库设计 Step by Step (1)得到这么多朋友的关注着实出乎了我的意外.这也坚定了我把这一系列的博文写好的决心.近来工作上的事务比较繁重,加之我期望这个系列的文章能尽可能的系统.完整,需要花很多时间整理.思考数据库设计的各种资料,所以文章的更新速度可能会慢一些,也希望大家能够谅解. 系列的第二讲我们将站在高处俯瞰一下数据库的生命周期,了解数据库设计的整体流程 数据库生命周期 大家对软件生命周期较为熟悉,数据库也有其生命周期,如下图所示. 图(1)数据库生命周期 数据库的生命周期