一起学Shell之(一)背景知识

简介:
一、背景知识介绍
 
Shell的工作是:执行命令、Shell支持Postix标准。
 
Shell的格式是:
1、以空格或者Tab键隔开命令行的每个组成部分。
2、命令名称是命令行的第一个项目,通常后面会跟选项以及参数。
3、选项的开关是破折号(——)或者减号(-),后跟字母,选项是可有可            无的,
4、分号(;)可用来分隔同一行里多余的命令。
注:使用“&”符号则Shell将后台执行前面的命令,意味着shell不用等到命令完成就可以执行下一条命令。
 
煮酒品茶:这个还是比较好理解的,最开始品茶竟然不知道破折号怎么打,这时候同事就派上用场了。破折号一般用于软件安装定义目录居多,也就是外部命令最常用的。
 
Shell识别的基本命令:
1、内建命令  - 由Shell本身所执行的命令。如cd、read、test、echo、printf等。
2、Shell函数 - 是功能健全的一系列程序代码,以Shell语言写成,可以像命令一样被引用。如if else 赋值操作一样。
3、外部命令  - 是由Shell的副本执行的命令,模式为父Shell启动子Shell然后由子Shell启动新程序,处理完之后交由父Shell执行。
 
变量:
定义:为某个信息片段所取的名字。
规则:每个变量只有一个值,变量可以为空(null)值,首字母必须是字母或下划线,内容可以是任意长度。
赋值方式:变量名称=字符(中间不要有空格),如果需赋值的内容中需要带空格那么需要带引号,需要取变量时可以用美刀($)加变量名称来取。 
 
煮酒品茶:我自己记这些定义记得我烦的很啊,但是真正理解后想想又非常简单。一定需要记住这些规则,记住了你以后要少翻很多资料。讲点好玩的吧。很多的脚本第一行是 #!/bin/bash,知道为什么第一行是这个吗?不知道吧,我来告诉你咯,如果没有这一句,当你赋于写运行权限时运行这个程序,程序会先交由内核来处理,而内核知道处理编译程序,但一看你不是编译程序,那么他就认为是个Shell,又丢给了shell来执行。我们再回头看下#!/bin/bash就非常明了了,又有人问了,在Shell里面#不都是用来注释的吗?对确实,但是在脚本里,第一行是预留的,如果有#!/bin/bash那么他就直接认定你为一个Shell就不交由内核来处理。我们来构造着玩玩吧。先是#! /bin/bash 加了一个空格,我们会发现其实没区别,但是从Linux流程上来讲他可是有区别的啦,当第一行遇到空格时Shell就停止了检索。这时还是先交内核然后再还给Shell,所以不能有空格啦。(测试发现#!后面加空格也没事,估计是现在标准升级过了吧。还有就是这一行redhat系列的是最多支持127个字符咯,现在有没有升就不知道了。以后如果搞多了提示出错至少知道这里也会出问题的。)再来构造一个别的可执行cat程序啦,来试试是什么感觉?

 
 
  1. [root@localhost test]# ./ts  
  2. #!/bin/cat  
  3. hello 51CTO  
看到没咯?第一行定义他找/bin/cat的麻烦,流程就变成这样了,执行ts,ts找/bin/cat来执行ts这个脚本。
 
 
 
  1. [root@localhost test]# cat ts 
  2. #!/bin/cat 
  3. hello 51CTO 
 
那么这两个显示的就是一样咯。是不是很好玩?再来玩,SH的权限要大于bash喔,哈哈,运行程序直接sh 程序名,bash 程序名也是可以的啦。
 
 
 
  1. [root@localhost test]# ll /bin/sh 
  2. lrwxrwxrwx 1 root root 4 Apr 25 22:42 /bin/sh -> bash 
  3. [root@localhost test]# ll /bin/bash 
  4. -rwxr-xr-x 1 root root 768664 Jul 22  2011 /bin/bash 
玩完了做点正事。介绍两个命令who与cat 其实也就是跟着书上的进程走的。但原书的命令参数好像有问题。不过我有Linux查询宝典啦。
 
who属性:系统相关-系统安全
who语法:who [参数] [记录文件]
 
 
  1. -a : 显示所有信息 
  2. -b : 显示系统最后一次重启的时间 
  3. -d : 显示已失效的保存 
  4. -H : 显示标题栏    
  5. -i : 显示系统闲置时间 
  6. -l : 只显示行数 
  7. -m : 只显示自己登陆的相关信息 
  8. -q : 只显示登录系统的用户名称与总人数 
  9. -r : 显示当前的执行等级 
  10. -t : 显示最后一次修改时钟的时间  
  11. -h : 不要显示标题列 
  12. -u : 显示用户已闲置的时间 
 
 
 
  1. wc作用: 字数计算 
  2. wc语法:wc [选项] [文件] 
  3. -c : 统计字节数。   
  4. -l : 统计行数。   
  5. -w : 统计字数。   
煮酒品茶,who百度无果谷哥无果,自己敲的,累死,至于原作者为什么要拿who和wc放一起讲,应该是觉着都是w吧,而且wc不能单独使用,所以就组合咯。作用在于啥呢,
 
比如说:我们要显示当前用户的行数,那么就构造 
#who -a | wc -l  
还有很多,基本上按表就可以一一写出。who这个命令着重于安全一点。而wc则是侧重于查询文件的一点信息。如字节数啊,行数啊,字数啊,等等,如何利用就看你的咯
 
总结:我们总了,SHell的格式,Shell识别的命令,变量以及变量的规则。还讲了两个命令who与wc,现在回想一下还记得多少?




本文转自 煮酒品茶 51CTO博客,原文链接:http://blog.51cto.com/cwtea/849534,如需转载请自行联系原作者

目录
相关文章
|
3天前
|
Shell 测试技术 Perl
shell 脚本基础练习
创建`sysinfo.sh`脚本,显示主机名、IPv4、OS版本、内核、CPU、内存和硬盘信息;`backup.sh`用于每日备份`/etc/`至 `/backup`目录,日期格式为`YYYY-mm-dd`;`disk.sh`找出硬盘最高利用率;`links.sh`显示并按连接数排序远程主机IPv4地址;`repo.sh`搭建本地YUM仓库并安装软件。使用命令包括`echo`、`hostname`、`ifconfig`、`cat`、`awk`、`tar`、`df`、`uniq`等,实现系统管理和维护功能。
11 1
|
4月前
|
Unix Shell Linux
SHELL脚本基础
SHELL脚本是一种用来自动化执行操作系统命令和任务的脚本语言。它们被广泛用于Linux和其他类Unix操作系统中,可以编写一系列命令和逻辑来完成特定的任务。
44 0
|
28天前
|
Unix Shell Linux
shell脚本基础
Shell脚本基础涉及脚本定义、编写与执行、变量、控制结构、函数、命令替换和重定向。它是Linux/Unix系统中自动化任务的工具,允许用户通过组合命令、使用变量、条件语句、循环和函数来创建文本文件。了解这些基础知识能帮助你更高效地管理系统。例如,一个简单的"Hello, World!"脚本是`#!/bin/bash`,接着是`echo "Hello, World!"`。
16 8
|
2月前
|
监控 Shell Linux
Shell脚本基础
Shell脚本基础
24 9
|
9月前
|
安全 Shell 程序员
shell 脚本风格参考
shell 脚本风格参考
39 0
|
11月前
|
Java Unix Shell
Shell 概述
Shell 概述
52 0
|
Shell 数据库
shell脚本中echo颜色设置
shell脚本中echo颜色设置
321 0
shell脚本中echo颜色设置
|
Java Shell Linux
shell 基础
shell 基础
96 0
|
Shell Linux
shell 概述
shell 概述
74 0
shell 概述
|
缓存 Shell Linux
Shell - 基础篇(下)
Shell - 基础篇(下)
58 0
Shell - 基础篇(下)