shell脚本学习指南笔记-2.入门
?
2.1
?
who | wc -l
who? 查看登录的用户
wc 字数计算? line 行数? word 字数? character 字符数
-l?? line 行数
|? 管道符?? 在两程序之间建立管道? who的输出成了wc的输入? wc所列出的结果就是已登录用户的个数
?
?
?
$ cat > nusers??????????????????? 建立文件,使用cat复制终端的输入
who | wc -l???????????????????????? 程序的内容
^D????????????????????????????????????? Ctrl + D表示结束
$ chmod 744 nusers????????? 让文件有执行的权限
$ ./nusers????????????????????????? 执行输出
??????????? 6??????????????????????????? 输出的结果
?
2.5.2
$ myvar=this_is_a_long??? 设置变量
this_is_a_long?????????????????? 输出显示
?
?
first=isaac middle=bashevis last=singer??????
单行可以多次赋值
?
fullname="isaac bashevis singer"
有空格时请使用引号
?
oldname=$fullname
这样也行,但不需要使用引号
?
newname="$first $middle $last"
多个变量相连时,要使用引号
?
echo -n "123"
打印,-n表示去掉最后的换行符
?
printf "what you name? '%s.%s'\n" sem zhang
打印,第一部分为要输出的文本?? %s? 表示动态数据的站位符,\n表示换行,printf不带换行功能
第二部分为站位符的参数列表
最后输出:what you name? 'sem.zhang'
百分符号最常用的有两个,%s用于字符串,%d用于十进字数字
参数大于站位符个数,将循环输出
如:printf "what you name? '%s.%s'\n" sem zhang sss
输出:what you name? 'sem.zhang'
???????? what you name? 'sss.'
参数小于站位符个数,缺少的部分,将忽略
如:printf "what you name? '%s.%s...............'\n" sem
输出:what you name? 'sem................'
?
tr -d 'how' < do-file.txt
在控制台中显示do-file.txt文件中的内容,但所有h o w 都不显示
<? 修改输入源
?
tr -d 'how' < do-file.txt > UNIX-file.txt
将do-file.txt文件中的内容输出到UNIX-file.txt文件中,但所有h o w都将删除
< 指定输入源??
> 指定输出源
?
tty-testl.sh
?
?
?
关于基本命令
$PATH? 是一个以冒号分隔的目录列表,你可以在列表所指定的目录下找到所要执行的命令
所找到的命令可能是编译后的可执行文件,也可能是shell脚本
默认的路径至少包含/bin与/usr/bin
名称为bin的目录用来保存可执行文件,bin是binary的缩写
如果编写自己的角本,并让shell能够自动的找到它们,只要建立自己的bin目录,并将他们加入$PATH中的列表中就可以了
如:? PATH=$PATH:$HOME/bin
?
$PATH中的空项目表示当前目录
如:PATH=:/bin:/var/bin????? 最先找当前目录
PATH=/bin:/var/bin:??????????? 最后找当前目录
PATH=/bin::/var/bin??????????? 找完bin后找当前目录,再找/var/bin目录
?
?
shell的脚本的参数
例子
#! /bin/sh#打开跟踪功能set -xecho 1st echoset +x#已关闭跟踪功能echo 2st echo??
?