简图记录-shell的基本使用

简图记录学习。《shell脚本学习指南》&&《鸟哥linux私房菜学习建议》

一、概念

Shell概念:1、shell从使用角度,它是linux内核提供用户的使用接口的程序,当你从命令行终端登登录linux,其实就已经打开了一个默认的shell,如bash;2、由于shell支持解析脚本工作,另一方面shell也被称作一门脚本语言(可被shell解析器识别),编译型语言如C++/C/Java需要编译后按字节执行效率高,脚本型语言 如python ruby由解释器转化处理 简单灵活;

shell版本:shell也有很多版本,如sh、csh、zsh、ksh,常见默认bash,可以通过cat /etc/passwd查看默认指定的shell;

root@ubuntu:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash

Shell语言优点:简单、可移植、易开发;

终端命令类型:在终端执行典型命令有四类,一种是shell的自建命令,一种是shell脚本定义的函数,一种是外部命令,一种是命令别名(通过alias设置,方便使用) 可以通过type cmd查看 命令类型;

root@ubuntu:~# type cd #自建命令
cd is a shell builtin
root@ubuntu:~# type ls #命令别名
ls is aliased to `ls --color=auto'
root@ubuntu:~# type find #外部命令
find is /usr/bin/find
root@ubuntu:~# function test_func () {
> echo "hello test"
> }
root@ubuntu:~# test_func
hello test
root@ubuntu:~# type test_func #脚本函数
test_func is a function
test_func () 
{ 
    echo "hello test"
}

命令的帮助和补全:可以用history查看历史命令,用tab键进行命令补全,用alias设置命令别名,用help查看自建命令帮助,用man查看命令手册;

二、典型自建命令

输入输出:输出printf; 输出echo; 读取read;

目录相关:打印当前目录pwd;切换目录 cd;

执行命令:exec

辅助命令:别名设置alias;命令记录history;命令类型识别 type;

测序命令: test 或者 [ ... ] (如测试文件属性,比较数字,比较子串等)

三、shell基本语法

1、变量
变量不需要先声明定义再使用,可以直接设置值使(同时声明定义),按字符串保存,如果数字计算或者比较需要命令配合;linux有设置一系列内置变量:如$# 入参个数,$@全部入参,$1第一个入参(其他类似),$0脚本名;
1)、设置变量内容 var_name=xxx;追加变量内容 var_name+=xxx;
2)、查看内容 echo $var_name 或者 echo ${var_name}打印;set 命令查看所有变量;env查看全部环境变量;
${var_name:=xxx}若不存在就定义值为xxx;${var_name?=xxx} 若不存在返回xxx;${var_name+=xxx}若存在返回xxx否则空
3)、删除已定义变量unset var_name;
4)、父进程往子进程传递变量列表 export xxx

goodboy@ubuntu:~$ var=1234 #注意不能添加空格
goodboy@ubuntu:~$ echo $var
1234
goodboy@ubuntu:~$ var+=5678
goodboy@ubuntu:~$ echo $var
12345678
goodboy@ubuntu:~$ echo "we have get var $var"
we have get var 12345678
goodboy@ubuntu:~$ echo "we have get var ${var}"
we have get var 12345678
goodboy@ubuntu:~$ echo "$var length is ${#var}"
12345678 length is 8

2、表达式

1)、算数比较:条件通常被放置在封闭的中括号内。一定要注意在[或]与操作数之间有一个空格。
[ $var -eq 0 ] 表示 当 $var 等于 0 时为真。算术条件判断:-eq等于/-gt大于/ -lt小于 / -ge大于或等于 / -le小于或等于 /
 可以按照下面的方法结合多个条件进行测试:
[ $var1 -ne 0 -a $var2 -gt 2 ] #使用逻辑与-a 
[ $var1 -ne 0 -o $var2 -gt 2 ] #逻辑或
2)、文件系统相关测试:我们可以使用不同的条件标志测试不同的文件系统相关的属性

[ -f $file_var ]:如果给定的变量包含正常的文件路径或文件名,则返回真。
[ -x $var ]:如果给定的变量包含的文件可执行,则返回真。
[ -d $var ]:如果给定的变量包含的是目录,则返回真。
[ -e $var ]:如果给定的变量包含的文件存在,则返回真。
[ -c $var ]:如果给定的变量包含的是一个字符设备文件的路径,则返回真。
[ -b $var ]:如果给定的变量包含的是一个块设备文件的路径,则返回真。
[ -w $var ]:如果给定的变量包含的文件可写,则返回真。
[ -r $var ]:如果给定的变量包含的文件可读,则返回真。
[ -L $var ]:如果给定的变量包含的是一个符号链接,则返回真。

3)、字符串比较:使用字符串比较时,最好用双中括号,时候采用单个中括号会产生错误。

[[ $str1 = $str2 ]]:当str1等于str2,文本是一模一样,返回真。
[[ $str1 == $str2 ]]:这是检查字符串是否相等的另一种写法。
[[ $str1 != $str2 ]]:如果str1和str2不相同,则返回真。
[[ $str1 > $str2 ]]:如果str1的字母序比str2大,则返回真。
[[ $str1 < $str2 ]]:如果str1的字母序比str2小,则返回真。
[[ -z $str1 ]]:如果str1包含的是空字符串,则返回真。
[[ -n $str1 ]]:如果str1包含的是非空字符串,则返回真。

4)、逻辑运算:使用逻辑运算符 && 和 || 能够很容易地将多个条件组合起来

if [[ -n $str1 ]] && [[ -z $str2 ]] ; 
then 
 commands; 
fi

3、语句

条件语句:我们可以用if、if else以及逻辑运算符进行测试,用比较运算符来比较数据项

if condition; 
then 
 commands; 
else if condition; then 
 commands; 
else 
 commands; 
fi

循环语句:while循环命令和if类似

while condition;
do
    command;
done;

4、函数

定义:使用function关键字进行定义,return指定返回值,不写表示没有返回值;

function test_func () {
    echo "hello test"
    return 0
}

调用:使用function_name 入参1 入参2 ... 方式调用

5、注释

使用#注释该行

6、脚本文件

shell脚本第一行需要指定解析器如: #!/bin/sh

然后会从上到下查找cmd进行顺序执行,如果是定义函数的语句会忽略;

四、外部命令介绍

shell调用外部命令,相当于创建进程进行执行,如grep、awk、find等;基础命令可以参考:

https://blog.csdn.net/runafterhit/article/details/52864938

 

即你的操作都是通过shel完成,你也可以写脚本帮助自己提升管理和使用效率。如果你要使用linux,那么你需要学习它

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值