shell中的使用技巧2

  1. read处理用户输入
read  -p "please input your age" age
cat filename | while read line

几个常用的选项
-s可以做出输入密码****的效果,用来隐藏输入, -p用来显示提示符, -t 可以用来设置延迟等待
读入文件 一般与while配合使用,每次读取一行内容

  1. test判断式, 信号的处理
    test是一个帮助判断并返回exit码的命令,详情看test命令详细解析
    信号一般使用的有几个,详细的要看非常好的一篇对linux信号(signal)的解析
1 		SIGHUP 					挂起进程
2 		SIGINT 			^c		终止进程
3 		SIGQUIT		 			停止进程
9		SIGKILL 				无条件终止进程
15 		SIGTERM 				尽可能终止进程
17 		SIGSTOP 				无条件停止进程,但不是终止进程
18 		SIGTSTP 		^z		停止或暂停进程,但不终止进程
19 		SIGCONT 				继续运行停止的进程

#信号捕获
trap "echo ' Sorry! I have trapped Ctrl-C'" SIGINT
#捕获退出信号
trap "echo Goodbye..." EXIT
#关闭捕获
trap -- SIGINT

信号捕获可以使脚本忽略自定义的捕获信号,使得这些信号不会影响到脚本运行,可以用trap命令

  1. 登录帐户后第一个执行的脚本

~/.bash_profile 是用户登录后第一个执行的文件,可以把想要运行的脚本写在此文件中
一般用此文件用if 语句去依次执行想要登录帐户执行的一系列文件 ,奇怪的是此文件并没有执行权限

  1. 非控制台下运行脚本
nohup sleep 3 >> filename &
sleep 3 &
(sleep 3)
jobs
bg 1
fg 1

在使用多线程来运行脚本的时候,可能使用远程登录,需要下线当前帐户,那么需要用到非控制台下运行脚本nohup,但是有个弊端,脚本与控制台不会进行通信,会默认都重定向到一个默认的文件中去,如果脚本较多,信息会很错乱,需要手动重定向到独立的文件中,以便查看信息

  1. 函数式脚本的一些坑
../mylibfile
function name{
return 255
}
myname( ){
echo num[*]
}
var=$(name)
echo $?
local temp

?保存了最近一次命令的exit码, 函数在脚本中被视作命令
return 只接受0-255的退出码,若超域,则会报错
echo 与C语言中return一样,可以返回数组 字符串 数字
赋值语句要注意加上$,如函数有参数,需要用( )
函数内引用函数外变量的时候,是可以修改掉全局变量的,如同python中 函数体内的 global var 一样, 若不想修改全局变量,这需要使用 local var 来声明局部变量,这个是与C语言中不同之处
数组num[] 与 num 是不同的, num是一个整体, 可以理解作为一个数组名指针, 因为shell没有指针概念, 所以不能当作参数 或者返回值来用, 而 num[]相当于 num遍历后的列表,可以作为参数 或者返回值来用
若想应用其他的lib库函数时, 可以用. mylibfile, 第一个’ . ’ 是一个语法符号, 与文件名之间有一个空格,文件名可以是绝对路径也可以是相对路径

  1. 常用的压缩/解压缩命令
#zip压缩
#gzip压缩/解压缩
gzip -cv filename [newfilename]
gzip -dv filename [newfilename]
#bzip2压缩/解压缩
bzip2 -cvk filename [newfilename]
bzip2 -dvk filename [newfilename]
#xz压缩/解压缩
xz -ck filename [newfilename]
xz -dk filename [newfilename]
#tar打包压缩/解压缩 z是gzip, j是bzip2, J是xz.
tar -[zjJ]cv -f newfilename.tar	filename/dirname
tar -[zjJ]tv -f filename
tar -[zjJ]xv -f filename.tar newfilename/dirname 
#zip的压缩/解压缩
zip -r xxx.zip ./*
unzip filename.zip
  1. git github的简易实用命令

来自廖雪峰

#安装,一般都默认按装了
$ yum install git
#配置,要写清楚作者的名字和邮箱,不然不可使用git
$ git config --global user.email "weilin@localhost"
$ git config --global user.name "weilin"
#如果还没有初始化, 意味着没./.git/目录, 就需要创建一下, cd到项目目录下
$git init
#add 添加到缓存区,cd到当前程序目录,
$ git add -A   #添加目录下所有文件,包括隐藏
$ git add filename  #添加文件到缓存区
#commit 把缓存区的文件添加到本地仓库
$ git commit -m "message"
#时空穿梭
#查看节点 status
git status
#对比文件命令 diff,
git diff filename
#各节点日志查看
git log
#回退 reset ID是从log中找来的节点唯一标识
git reset --hard ID
#撤销工作区的递交
git checkout --filename
#把本地仓库的文件提交到github,需要先手动去web创建一个newproject
$ git remote add origin git@github.com:weilin8612/lnewproject    #newprojectname可以去web去找,一定要一致
$ git push -u origin master
#添加成功

git远程push的时候,有时候会遇到权限问题,那是因为私钥的问题,解决方案点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值