在shell脚本里添加了shell history 时间,然后如何在执行了shell history 时间命令后的回显里找到指定的字符

拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(660a-ua98).
重新安装浏览器,或使用别的浏览器扫一扫,访问微社区
查看: 5241|回复: 5
云币140 威望18 最后登录积分207注册时间帖子
小白[LV1], 积分 207, 距离下一级还需 93 积分
云币140 威望18
本帖最后由 阿铭Linux 于
16:06 编辑
该教程为一系列教程,其包含文字和视频,点回到索引页。如有问题,请加Linux学习群 寻求帮助,请标注来自于腾讯云。
第一部分: 基础部分
1. shell特性
命令历史 history !!&&!$&&!n&&!字符
Tab 键可以补全文件路径或者命令
alias&&a=“b”&&unalias a
通配符 *匹配零个或多个字符 ?匹配一个字符
输入输出重定向 &, &&,&&&,&&2&, 2&&
作业控制 ctrl+z, jobs,&&fg,&&bg
系统变量名都是大写,echo 可以查看变量名
env 可以列出当前用户的所有环境变量以及用户自定义全局变量
set命令可以把所有变量列出来包括系统的和自定义的全局变量以及当前shell自定义变量
linux下设置自定义变量规则: (1)格式为 “a=b”, 其中a为变量名,b为变量的内容,等号两边不能有空格;(2)变量名只能由英、数字以及下划线组成,而且不能以数字开头;(3)当变量内容带有特殊字符(如空格)时,需要加上单引号;(4)如果变量内容中需要用到其他命令运行结果则可以使用反引号;(5)变量内容可以累加其他变量的内容,需要加双引号;
系统所有用户使用变量: export myname=Aming&&全局变量,加入/etc/profile并source /etc/profile永久生效
系统某个用户使用变量: export myname=Aming 加入当前用户家目录下的 .bashrc中 source .bashrc
export myname=Aming&&全局变量,export 不加任何选项表示,声明所有的环境变量以及用户自定义变量
用户自定义变量,可以使用 unset 变量名 进行解除变量设置
3. 系统和个人环境变量的配置文件
/etc/profile PATH, USER, LOGNAME, MAIL, INPUTRC, HOSTNAME, HISTSIZE, umask等
/etc/bashrc&&$PS1&&umask&&以后如果设置umask修改 /etc/profile 不要改这个文件
.bash_profile 用户自己的环境变量
.bashrc 当用户登录时以及每次打开新的shell时, 执行该文件
.bash_history&&记录命令历史用的
.bash_logout :当退出shell时,会执行该文件。
4. shell中的特殊符号
* 匹配符号,零个或多个任意字符
? 匹配符号,1个任意的字符
# 注视说明用的,使后面的内容失去原本的意义
\ 脱义字符,将特殊字符还原为普通字符
|将符号前面命令的结果丢给符号后面的命令,一般针对文档操作的命令比较常用,例如cat, less, head, tail, grep, cut, sort, wc, uniq, tee, tr, split, sed, awk等等&&
$ 引用变量,还有 !$
; 分号,多条命令写一行时,分隔命令
~ 用户家目录
& 放到命令最后面,让命令在后台运行
&, &&, 2&, 2&&&&[错误]重定向,追加[错误]重定向
[ ] 中括号,中间为字符组合,代表中间字符中的任意一个 ls 1[23a].txt
5. 常用命令:
语法: cut -d ‘分隔字符’ [-cf] n 这里的n是正整数
-d 后面指定分隔符,用单引号引起来,-f 指定第几段 cut -d ':'&&-f 1 /etc/passwd |head -n 5
-c 后面只有一个数字表示截取第几个字符head -n2 /etc/passwd|cut -c2
-c 后面跟一个数字区域,表示截取从几到几head -n2 /etc/passwd|cut -c2-5
语法: sort [-t 分隔符] [-kn1,n2] [-nru]&&(n1&n2)
不加选项,从首字符向后,依次按ASCII码值进行升序排序sort&&/etc/passwd
-t 后指定分隔符,-kn1,n2表示在指定的区间中排序,-k后面只跟一个数字表示对第n个字符排序,-n表示使用纯数字排序 sort -t: -k3 -n /etc/passwd
-r 表示以降序的形式排序 sort -t: -k3,5 -r /etc/passwd
-u 去重&&cut -d: -f4 /etc/passwd |sort -n -u
用于统计文档的行数、字符数、词数
不加任何选项,会显示行数、词数以及字符数
-l 统计行数
-m 统计字符数
-w 统计词数
uniq 去重复,最常用就一个 -c 用来统计重复的行数,去重前要先排序sort testb.txt |uniq -c&&
后跟文件名,类似于&,比重定向多了一个功能,在把文件写入后面所跟的文件中的同时,还显示在屏幕上
6)tr 用来替换字符
最常用的就是大小写转换: head -n2 /etc/passwd |tr '[a-z]' '[A-Z]'
tr 替换一个字符也是可以的 grep 'root' /etc/passwd |tr 'r' 'R'
7)split 切割大文件用的
-b : 按大小来分割单位为byte&&split -b50 1.txt
默认会以xaa, xab, …这样的形式定义分隔后的文件名,也可以指定文件名 split -b50 1.txt 123
-l : 按行数分隔,split -l10 file
6. && 和 ||
command1 ; command2&&前面命令是否执行完成都会执行后面命令
command1 && command2 只有前面命令执行成功才会执行后面命令
command1 || command2&&只有前面命令不成功再去执行后面命令
第二部分:正则
一、grep/egrep
1. 语法+选项
语法: grep&&[-cinvABC]&&'word'&&filename
-c :打印符合要求的行数
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行&&
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行
-r : 会把目录下面所有的文件全部遍历
2. 例子介绍
过滤出带有某个关键词的行并输出行号 grep -n 'root' 1.txt
过滤出不带有某个关键词的行并输出行号grep -n -v 'root' 1.txt
过滤出所有包含数字的行 grep '[0-9]' 1.txt
过滤出所有不包含数字的行 grep -v '[0-9]' 1.txt
去除所有以'#'开头的行 grep -v '^#' 1.txt
去除所有空行和以'#'开头的行 grep -v '^$' 1.txt|grep -v '^#'
过滤出以英文字母开头的行 grep '^[a-zA-Z]' 1.txt
过滤出以非数字开头的行 grep '^[^0-9]' 1.txt
过滤任意一个或多个字符 grep 'r.o' 1. grep 'r*t' 1. grep 'r.*t' 1.txt&&
. 表示任意一个字符;*表示零个或多个前面的字符 ;.*表示零个或多个任意字符,空行也包含在内
指定过滤字符次数 grep 'o\{2\}' 1.txt
egrep工具 是grep工具的扩展
egrep 'o+' 1.txt& &表示1个或1个以上前面字符
egrep 'o?' 1.txt&&表示0个或者1个前面字符
egrep 'roo|body' 1.txt&&匹配roo或者匹配body
egrep 'r(oo)|(at)o' 1.txt 用括号表示一个整体
egrep '(oo)+' 1.txt 表示1个或者多个 'oo'
4. . * + ? 总结
. 表示任意一个字符(包括特殊字符)
* 表示零个或多个*前面的字符
.* 表示任意个任意字符(包含空行)
+ 表示1个或多个+前面的字符
? 表示0个或1个?前面的字符
其中,+ ? grep不支持,egrep才支持。
打印指定行 sed '10'p -n 1. sed '1,4'p -n 1. sed '5,$'p -n 1.txt
打印包含某个字符串的行 sed -n '/root/'p 1.txt 可以使用 ^ . * $等特殊符号
-e 可以实现同时进行多个任务 sed -e '/root/p' -e '/body/p' -n 1.txt 也可以用;实现&&sed&&'/root/p; /body/p' -n 1.txt
删除行 sed '/root/d' 1.& &sed '1d' 1. sed '1,10d' 1.txt
替换 sed '1,2s/ot/to/g' 1.txt, 其中s就是替换的意思,g为全局替换,否则只替换第一次的,/也可以为 #, @ 等
删除所有数字 sed 's/[0-9]//g' 1.txt
删除所有非数字&&sed 's/[^0-9]//g' 1.txt
调换两个字符串位置 head -n2 1.txt |sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/'
直接修改文件内容 sed -i 's/ot/to/g' 1.txt
截取文档中的某段 awk -F ':' '{print $1}' 1.txt
也可以使用自定义字符连接每个段 awk -F':' '{print $1&#&$2&#&$3&#&$4}' 1.txt
匹配字符或字符串 awk '/oo/' 1.txt
针对某个段匹配 awk -F ':' '$1 ~/oo/' 1.txt
多次匹配 awk -F ':' '/root/ {print $1,$3}; $1 ~/test/; $3 ~/20/' 1.txt
条件操作符==, &,&,!=,&=;&=&&
awk -F ':' '$3==&0&'&&1.
awk -F ':' '$3&=&500&' 1.
awk -F ':' '$7!=&/sbin/nologin&'&&1.
awk -F ':' '$3&$4' 1.
awk -F ':' '$3&&5& && $3&&7&' 1.txt
awk -F ':' '$3&&5& || $7==&/bin/bash&' 1.txt
awk内置变量 NF(段数)&&NR(行数)
head -n3 1.txt | awk -F ':' '{print NF}'
head -n3 1.txt | awk -F ':' '{print $NF}'
head -n3 1.txt | awk -F ':' '{print NR}'
打印20行以后的行awk 'NR&20' 1.txt
awk -F ':' 'NR&20 && $1 ~ /ssh/'&&1.txt
更改某个段的值awk -F ':' '$1=&root&' 1.txt
数学计算, 把第三段和第四段值相加,并赋予第七段 awk -F ':' '{$7=$3+$4; print $0}' 1.txt
计算第三段的总和 awk -F ':' '{(tot=tot+$3)}; END {print tot}' 1.txt
awk中也可以使用if关键词 awk -F ':' '{if ($1==&root&) print $0}' 1.txt
第三部分: 编写shell脚本
1. shell脚本是什么
它是一种脚本语言,并非编程语言
可以使用一些逻辑判断、循环等语法
可以自定义子函数
是系统命令的集合
shell脚本可以实现自动化运维,大大增加我们的工作效率
2. shell脚本结构以及执行方法
开头行指定bash路径: #! /bin/bash
以#开头的行作为解释说明
脚本的名字以.sh结尾,用于区分这是一个shell脚本
执行方式有两种:chmod +x 1. ./1.sh 如果没有执行权限可以 bash 1.sh
bash -x 1.sh 可以查看脚本执行过程
3. 学会date命令的用法
date&&+%Y-%m-%d, date +%y-%m-%d 年月日
date&&+%H:%M:%S = date +%T 时间
date +%s&&时间戳
date -d &+1day&一天后
date -d &-1day&一天前
date -d&&&-1month& 一月前
date -d&&“-1min” 一分钟前
date +%w, date +%W 星期
4. shell脚本中的变量
当脚本中使用某个字符串较频繁并且字符串长度很长时就应该使用变量代替
使用条件语句时,变量是必不可少的
引用某个命令的结果时,用变量替代
写和用户交互的脚本时,变量也是必不可少的
内置变量 $0, $1, $2…
数**算a=1;b=2; c=$(($a+$b))或者$[$a+$b]
5. shell中的逻辑判断
格式1:if 条件 ; then 语句; fi
格式2:if 条件; then 语句; else 语句; fi
格式3:if …; then … ;elif …; then …; else …; fi
逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (&); -lt(&); -ge(&=); -le(&=);-eq(==); -ne(!=) 注意到处都是空格
可以使用 && || 结合多个条件
6. if 判断文件、目录属性
[ -f file ]判断是否是普通文件,且存在
[ -d file ] 判断是否是目录,且存在
[ -e file ] 判断文件或目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行
7. if 判断一些特殊用法
if [ -z $a ]&&这个表示当变量a的值为空时会怎么样
if grep -q '123' 1. then&&表示如果1.txt中含有'123'的行时会怎么样
if [ ! -e file ]; then 表示文件不存在时会怎么样
if (($a&1)); then …等同于 if [ $a -lt 1 ]; then… [ ] 中不能使用&,&,==,!=,&=,&=这样的符号
8. shell中的case判断
格式: case&&变量名 in
& && && && && && && &value1)
& && && && && && && && &&&command
& && && && && && && && &&&;;
& && && && && && && &value2)
& && && && && && && && &&&command
& && && && && && && && &&&;;
& && && && && && && & *)
& && && && && && && && &commond
& && && && && && && && && & ;;
& && && && && && && & esac
9. shell脚本中的循环
for循环 语法结构: for&&变量名 in 条件; do … done
while 循环语法结构: while 条件; do … done 死循环用:表示
break直接结束本层循环; continue忽略continue之下的代码,直接进行下一次循环
exit 直接退出shell
10. shell中的函数
函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。
格式: function f_name() {
& && && && && && && & command
& && && && & }
函数必须要放在最前面
函数里可以export 全局变量
有 5 人觉得本主题有帮助
云币167 威望45 最后登录积分174注册时间帖子
程序猿[LV2], 积分 174, 距离下一级还需 1026 积分
云币167 威望45
好东西~&&顶顶顶
云币19 威望7 最后登录积分21注册时间帖子
小白[LV1], 积分 21, 距离下一级还需 279 积分
云币19 威望7
强烈建议楼主把所有教程发放完毕后在论坛打包txt文件提供下载。
云币90 威望30 最后登录积分30注册时间帖子
小白[LV1], 积分 30, 距离下一级还需 270 积分
云币90 威望30
哪位大神 给我一个解压zip文件shell
#!/bin/bash& && && && && && && && && && && && && &
& && && && && && && && && && && && && && && && &&&
file_path=&/data/bigdata/hwwg&& && && && && && &&&
bak_path=&/data/bigdata/hwwg_bak&& && && && && &&&
& && && && && && && && && && && && && && && && &&&
云币90 威望30 最后登录积分30注册时间帖子
小白[LV1], 积分 30, 距离下一级还需 270 积分
云币90 威望30
我写的只能解压一个
云币290 威望130 最后登录积分130注册时间帖子
小白[LV1], 积分 130, 距离下一级还需 170 积分
云币290 威望130
发表于 前天&10:36
跟大牛学习,必有收获,赞一个。
Powered by《Linux命令行与shell脚本编程大全》使用其他shell
我的图书馆
《Linux命令行与shell脚本编程大全》使用其他shell
《Linux命令行与shell脚本大全》使用其他shell什么是dash shellDebian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本。NetBSD Unix操作系统移植了ash shell,并且作为默认shell。NetBSD开发人员给ash shell添加了一些新功能,使它更接近Bourne shell。新功能包括:emacs和vi编辑器命令进行命令行编辑,以及历史命令来查看前面输入的命令。ash shell这个版本也被FreeBSD作为默认 登录shellDebian Linux发行版创建了它自己的ash shell版本(称作Debian ash或dash)。在很多基于Debain的Linux上默认shell并不是dash shell,而是bash shell。Ubuntu Linux发行版将bash shell作为登录shell,将dash shell用做默认的/bin/sh shell。大多数Linux发行版上,/bin/sh文件是链接到/bin/bash shell程序的一个符号链接。dash shell的特性dash命令行参数dash命令行参数参数 描述-a 导出分配给shell的所有变量-c 从特定命令字符串读取命令-e 如果是非交互式shell的话,在有未经测试的命令失败时立即退出-f 显示路径名通配符-n 如果是非交互式shell的话,读取命令但不执行它们-u 在尝试展开一个未设置的变量时,将错误消息写出到STDERR-v 在读取输入时将输入写出到STDERR-x 在执行命令时将每个命令写出到STDERR-I 在交互式模式下,忽略输入中的EOF字符-i 强制shell运行在交互式模式下-m 打开作业控制(在交互式模式下默认开启)-s 从STDIN读取命令(在没有指定文件参数时的默认行为)-E 打开emacs命令行编辑器-V 打开vi命令行编辑器dash环境变量变量 描述CDPATH cd命令的搜索路径HISTSIZE 历史记录文件中保存的行数HOME 用户的默认登录目录IFS 输入字段分隔符。默认值是空格、制表符和换行符MAIL 用户收件箱文件的名称MAILCHECK 在收件箱文件中检查新邮件的频率MAILPATH 冒号分割的多个收件箱文件名称。设置了的话,这个值会覆盖MAIL环境变量OLDPWD 上一个工作目录的值PATH 可执行文件的默认查找路径PPID 当前shell的父进程的进程IDPS1 shell的主命令行交互提示符PS2 shell的次命令行交互提示符PS4 当设置了执行追踪时,在每行前面打印的一个字符PWD 当前工作目录TERM shell的默认终端设置dash用set命令显示环境变量位置参数$0:shell的名称$n:第n个位置的参数$*:含有所有参数内容的单个值,由IFS环境变量中的第一个字符分隔;没定义IFS的话由空格分隔$@:将所有的命令行参数展开为多个参数$#:位置参数的总数$?:最近一个命令的退出状态码$-:当前选项标记$$:当前shell的进程ID(PID)$!:最近一个后台命令的进程ID(PID)用户自定义的环境变量同bash规则完全一致注意:dash的变量不支持可变数组!dash内建命令dash shell内建命令命令 描述alias 创建代表文本字符串的别名字符串bg 以后台模式继续指定的作业cd 切换到指定目录echo 显示文本字符串和环境变量eval 将所有参数用空格连起来(重新解析并执行这条命令)exec 用指定命令代替shell进程exit 终止shell进程export 导出指定的环境变量,供子shell使用fc 列出、编辑或重新执行之前在命令行中输入的命令fg 以前台模式继续指定的作业getopts 从一列参数中提取选项和参数hash 维护并提取最近执行的命令和他们的位置的哈希表pwd 显示当前工作目录的值read 从STDIN读取一行并将其赋给一个变量readonly 从STDIn读取一行并赋给一个不能修改的变量printf 用格式化过的字符串显示文本和变量set 列出或设置选项标记和环境变量shift 按指定的次数移动位置参数test 测试一个表达式,成立返回0,否则返回1times 显示当前shell和所有shell进程的累计用户和系统时间trap 在shell收到某个指定的信号时解析并执行命令type 解释指定的名称并显示解析结果(别名、内建、命令或关键字)ulimit 查询或设置进程限制umask 设置默认文件值和目录权限unalias 删除指定的别名unset 从导出的变量中删除指定的变量或选项标记wait 等待指定的命令完成然后返回退出dash shell内建命令没有操作历史记录或目录栈的命令dash脚本编程创建dash脚本同bash一样,在第一行加上#!/bin/dash 就可以了。不能使用的功能bash shell有些功能没法在dash shell中使用,这些通常称作bash主义(bashism)。1.使用算数运算bash中支持下面3种方式:使用expr命令:expr operation使用方括号:$[ operation ]使用双圆括号:$(( operation ))dash只支持expr命令和双圆括号,不支持方括号!2.test命令bash shell的test命令允许使用双等号“==”来测试两个字符串是否相等dash shell的test命令只能识别“=”来比较字符串3.echo语句选项dash shell的echo能自动识别特殊字符,所以也没有-e选项,如果使用-e,echo会将它视为普通文本可以用printf显示文本,printf在dash shell和bash shell中行为完全一致。4.function命令dash shell不支持使用function命令创建函数,必须使用函数名+圆括号的方式zsh shellzsh shell一些独特的功能:改进的shell选项处理shell兼容性模式可加载模块zsh shell的组成zsh shell命令行参数参数 描述-c 只执行指定的命令,然后退出-i 做为交互式shell启动,会提供一个命令行交互提示符-s 强制shell从STDIN读取命令-o 指定命令行选项-o允许设置shell选项来配置shell的功能选项可以分成以下几大类:更改目录:控制cd和dirs命令如何处理目录更改的选项补全:控制命令补全功能的选项扩展和扩展匹配:控制命令中文件扩展的选项历史记录:控制命令历史记录的选项初始化:控制shell在启动时如何处理变量和启动文件的选项输入输出:控制命令处理的选项作业控制:控制shell如何处理作业和启动作业的选项提示:控制shell如何处理命令行提示符的选项脚本和函数:控制shell如何处理shell脚本和定义函数的选项shell模拟:允许设置zsh shell来模拟其他类型shell行为的选项shell状态:定义启动哪种shell的选项zle:控制zsh行编辑器功能的选项选项别名:可以用做其他选项别名的特殊选项1.shell状态选项有6种不同的zsh shell选项来定义shell启动的类型交互模式(-i,interactive):提供了命令行界面提示符来输入内建命令和程序名登录模式(-l,login):默认的zsh shell类型,处理zsh shell的启动文件并提供命令行界面提示符特权模式(-p,privileged):有效的用户ID(EUID)跟实际用户ID不一致(用户成为了root用户)时的默认类型。它会禁止用户启动文件。限制模式(-r,restricted):在shell中将用户限定在特定目录结构中shin_stdin模式(-s):从STDIN读取命令single_command模式(-t):执行一条从STDIN读取的命令,然后退出。shell状态定义了shell是否在启动时提供命令行界面提示符,以及用户在shell中有什么访问权限2.shell模拟选项bsd_echo:让echo语句跟C shell的echo命令兼容csh_junkie_history:用不带指定的history命令来引用前面的命令csh_junkie_loops:允许while和for循环使用类似于C shell的end,而不是do和donecsh_junkie_quotes:修改使用单引号和双引号的规则来跟C shell保持一致csh_nullcmd:在执行没有命令的重定向时,不使用NULLCMD和READNULLCMD变量的值ksh_array:使用Korn风格的数组,采用从0开始的数字索引值,并在引用数组元素时使用方括号ksh_autoload:模拟Korn shell的自动加载函数功能ksh_option_print:模拟Korn shell打印选项的方法ksh_typeset:替换处理typeset命令参数的方式posix_builtins:使用builtin命令来执行内建命令sh_file_expansion:在执行其他展开之前先进行文件名展开sh_nullcmd:在进行重定向时不使用NULLCMD和READNULLCMD变量sh_option_letters:用类似于Korn shell的方式解释单字母命令行选项sh_word_split:在未加引号的参数展开中执行字段分隔traps_async:在等待程序退出时,处理信号并立即运行捕捉3.初始化选项all_export:所有的参数和变量会自动导出到子shell进程中global_export:导出环境中的参数不会在函数中本地化global_rcs:如果没有设置,zsh shell不会运行全局启动文件,但仍然会运行本地启动文件rcs:如果没有设置,zsh shell会运行/etc/zshenv启动文件,但不会运行其他文件初始化选项允许指定在shell环境中运行哪些zsh shell启动文件(如果有的话)。也可以在启动文件中设置这些值来限定shell执行哪些选项4.脚本和函数选项c_bases:用C格式(0xdddd)显示十六进制数而不是用shell格式(16#dddd)err_exit:如果命令以非零退出状态码退出,执行ZERR捕捉中的命令并退出err_return:如果命令以非零退出状态码退出,立即从其所在函数返回eval_lineno:如果设置了,用eval内建命令评估的表达式的行号会和shell环境中的其余部分分开记录exec:执行命令。如果未设置这个选项,会读取命令并报告错误,但不会执行命令function_argzero:将$0设置成函数名或脚本名local_options:设置了的话,当shell函数返回时,恢复所有在该函数之前设置的选项local_traps:设置了的话,当在函数内设置了信号捕捉,函数退出时恢复前一个捕捉的状态multios:在尝试执行多个重定向时,执行隐式tee或cat命令octal_zeros:将任何以0开头的整数字符串都解释成八进制数typeset_silent:未设置的话,使用typeset和参数名来显示参数的当前值verbose:在shell读取输入行时显示它们xtrace:在shell执行命令时显示命令和命令的参数内建命令核心内建命令命令 描述alias 为命令和参数定义一个替代性名称autoload 将shell函数预加载到内存中以便快速访问bg 以后台模式执行一个作业bindkey 将组合键和命令绑定到一起builtin 执行指定的内建命令而不是同样名称的可执行文件bye 跟exit相同cd 切换当前工作目录chdir 切换当前工作目录command 将指定命令当做外部文件执行而不是函数或内建命令declare 设置变量的数据类型(同typeset)dirs 显示目录栈的内容disabe 临时禁用指定的哈希表元素disown 从作业表中移出指定的作业echo 显示变量和文本emulate 用zsh来模拟另一个shell,比如Bourne、Korn或C shellenable 使能指定的哈希表元素eval 在当前shell进程中执行指定的命令和参数exec 执行指定的命令和参数来替换当前shell进程exit 退出shell并返回指定的退出状态码。如果没有指定,使用最后一条命令的退出状态码export 允许在子shell进程中使用指定的环境变量名及其值false 返回退出状态码1fc 从历史记录中选择某范围内的命令fg 以前台模式执行指定的作业float 将指定变量设为保存浮点值的变量functions 将指定名称设为函数getln 从缓冲栈中读取下一个值并将其放到指定变量中getopts 提取命令行参数中的下一个有效选项并将它放到指定变量中hash 直接修改命令哈希表的内容history 列出历史记录文件中的命令integer 将指定变量设为整数类型jobs 列出指定作业的信息,或分配给shell进程的所有作业kill 向指定进程或作业发送信号(默认为SIGTERM)let 执行算数运算并将结果赋给一个变量limit 设置或显示资源限制local 为指定变量设置数据属性log 显示受watch参数影响的当前登录到系统上的所有用户logout 同exit,但只在shell是登录shell时有效popd 从目录栈中删除下一项print 显示变量和文本printf 用C风格的格式字符串来显示变量和文本pushd 改变当前工作目录,并将上一个目录放到目录栈中pushln 将指定参数放到编辑缓冲栈中pwd 显示当前工作目录的完整路径名read 读取一行并用IFS变量将数据字段赋给指定变量readonly 将值赋给不能修改的变量rehash 重建命令哈希表set 为shell设置选项或位置参数setopt 为shell设置选项shift 读取并删除第一个位置参数,然后将剩余的参数向前移动一个位置source 找到指定文件并将其内容复制到当前位置suspend 挂起shell的执行,直到它收到SIGCONT信号test 如果指定条件为TRUE的话,返回退出状态码0times 显示当前shell以及shell中所有运行进程的累积用户时间和系统时间trap 阻断指定信号从而让shell无法处理,如果收到信号则执行指定命令true 返回退出状态码0ttyctl 锁定和解锁显示type 显示shell会如何解释指定的命令typeset 设置或显示变量的特性ulimit 设置或显示shell或shell中运行进程的资源限制umask 设置或显示创建文件和目录的默认权限unalias 删除指定的命令别名unfunction 删除指定的已定义函数unhash 删除哈希表中的指定命令unlimit 删除指定的资源限制unset 删除指定的变量特征unsetopt 删除指定的shell选项wait 等待指定的作业或进程完成whence 显示指定命令会如何被shell解释where 显示指定命令的路径名,如果shell找到的话which 用csh风格的输出显示指定命令的路径名zcompile 编辑指定的函数或脚本从而能更快地自动加载zmodload 对可加载zsh模块执行特定操作附加模块模块 描述zsh/cap POSIX兼容性命令zsh/clone 将运行中的shell克隆到另一个终端的命令zsh/compctl 控制命令补全的命令zsh/complete 命令行补全命令zsh/complist 命令行补全列表扩展命令zsh/computil 命令行补全的实用工具命令zsh/datetime 额外的日期和时间命令及变量zsh/deltochar 重现了emacs功能的行编辑函数zsh/files 基本的文件处理命令zsh/mapfile 通过关联数组来访问外部文件zsh/mathfunc 额外的科学函数zsh/parameter 通过关联数组来访问命令哈希表zsh/pcre 扩展的正则表达式库zsh/sched 按设定时间执行命令的计划命令zsh/net/socket Unix域套接字支持zsh/stat 访问stat系统调用来提供系统的统计状况zsh/system 访问各种底层系统功能的接口zsh/net/tcp 访问TCP套接字zsh/termcap termcap的接口zsh/terminfo terminfo数据库的接口zsh/zftp 专用FTP客户端命令zsh/zle zsh行编辑器zsh/zleparameter 用变量访问并修改zlezsh/zprof 允许对shell函数进行性能参数统计zsh/zpty 在虚拟终端中执行一条命令zsh/zselect 阻断,直到文件描述符就绪才返回zsh/zutil 各种shell实用工具查看、添加和删除模块查看执行zmodload即可[plain] % zmodload zsh/complete zsh/computil zsh/main zsh/parameter zsh/terminfo zsh/zle zsh/zutil 添加zmodload +模块名称可惜的是,执行完毕之后,不会有任何输出来告知模块添加完毕,不过可以再次执行zmodload查看[plain] % zmodload zsh/zftp % zmodload zsh/complete zsh/computil zsh/main zsh/net/tcp zsh/parameter zsh/terminfo zsh/zftp zsh/zle zsh/zutil 删除zmodload -u +模块命令[plain] % zmodload -u zsh/zftp 注意:通常会将zmodload命令放到$HOME/.zshrc启动文件中,这样在zsh启动时,常用的函数就会自动加载zsh脚本编程数学运算zsh提供两种方法执行数学运算:1.let命令2.双圆括号注意:实用let时,在表达式前后加上双引号才能支持空格[plain] % let a='1 + 2 * 3' % echo $a 7 为了解决精度问题,可以使用printf[plain] % ((b = 2 + 3.1/2.2)) % echo $b 3. % printf '%6.3f\n' $b
3.409 注意:如果没有使用typeset来声明变量的数据类型,那么zsh会尝试自动分配数据类型数学函数安装zsh/mathfunc即可查看函数清单可参阅zshmodules[plain] % echo $((sqrt(9))) 3. 结构化命令if-then-else语句for循环(包括C风格)while循环until循环select语句case语句上面的语句与bash使用方法完全一致,除此之外,zsh还支持repeat结构化命令repeat语法格式:[plain] repeat param do
commands done param必须是一个数字或者结果为数字的表达式[plain] % repeat 3 repeat> do repeat> echo 'test' repeat> done test test test 函数zsh shell支持使用function和圆括号定义函数名来创建自定义函数使用全局变量的方法同bash shell[plain] #!/bin/zsh test_add () {
printf $(($1 + $2)) } test_add 3 7 使用方法与bash shell一致。[plain] % ./zsh_test 10% 可以不将函数放在脚本中。zsh shell通过fpath环境变量查找函数,可以放到fpath下的任何目录中。但是使用之前,必须执行autoload命令(和bash shell的source命令或点命令类似吧)zcompile会处理函数文件并为shell创建一个编译后的版本。它会将函数编译成二进制格式,使zsh能够更快的加载。运行zcompile命令后,它会创建这个函数文件的.zwc版本。在autoload命令在fpath中查找命令时,它会查看这个命令的.zwc版本,而不是文本版本。
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 执行shell脚本命令 的文章

 

随机推荐