shell学习笔记1 【linux shell 编程从初学到精通第2版】

  1. 已登录用户的个数: who | wc -l
  2. 查看系统有哪些用户登录 : who
  3. 新建一个文件/bin/ct11,在文件中输入一条命令,chmod为该文件设置执行权限

# cat > /bin/ct11

Who | wc -l

按ctrl+d

#  cd /bin

# chmod +x ct11

# ./ct11

执行结果:

2

  1. # echo 转义序列:

\c :指示echo 不要打印 最后的换行符号

\a :警示字符,通常是ASCII的BEL字符

\b :退格

\f : 换页

\n :换行

\r:回车

\t:水平制表符

\v:垂直制表符

\\ :反斜杠字符

\oddd:将字符变成3位的八进制数值

  1. Printf 语句printf “i said ‘%s,%s1,%s2,%s3’\n” this is my pen
  2. 清楚屏幕 :clear
  3. Echo输入一段文字分行追加到文件cc11: echo -e “werw\nsfsd” >>cc11
  4. 将aa.txt文件中的ascii回车去除,内容写到file.txt中

# tr -d ‘\r’ < aa.txt > file.txt

  1. 将aa.txt文件中的回车去除,然后利用管道对其文件内容排序后输入到文件file.txt

# tr -d ‘\r’ <aa.txt | sort >file.txt

  1. 关闭自动打印输入字符的功能 stty -echo
  2. 回复自动打印输入字符的功能 stty echo
  3. 跟踪功能 set -x 是执行跟踪功能打开,set +x是关闭跟踪功能

Eg: cat > aa.sh

Set -x

Echo ss echo

Set +x

Echo sdf echo

Ctrl +d

Chmod +x aa.sh

./aa.sh执行

  1. 自动化测试课程目录
  1. Shell 传递参数

新建一个tst.sh脚本,

nano -w tst.sh

编辑脚本内容如下,$1以后是以此类推第一第二个参数,$0是文件名称参数

#!/bin/sh

name=$1

echo "my name is ${name}!"

编辑结束后保存 ctrl +o ,退出时ctrl+c

Chmod +x tst.sh 给脚本有执行权限

./tst.sh zhang

执行结果:

My name is zhang

如果是vi模式编辑模式按i,保存并退出按Esc ,:wq!

  1. unset命令可以删除变量,删除后不能再次使用,unset命令不能删除只读变量
  2. 例如:echo -e “jdkfja \n” 输出结果:jdkfja
  3. 这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:jdkfja\n
  4. 命令替换是指Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出。命令替换的语法:

`command`

注意是反引号,不是单引号,这个键位于 Esc 键下方。
  下面的例子中,将命令执行结果保存在变量中:

  • if...then...fi 是条件语句,后续将会讲解。

算术运算符列表


运算符


说明


举例


+


加法


`expr a+a+b` 结果为 30。


-


减法


`expr a?a?b` 结果为 10。


*


乘法


`expr a\*a\*b` 结果为  200。


/


除法


`expr b/b/a` 结果为 2。


%


取余


`expr bba` 结果为 0。


=


赋值


a=$b 将把变量 b 的值赋给 a。


==


相等。用于比较两个数字,相同则返回 true。


[ a==a==b ] 返回 false。


!=


不相等。用于比较两个数字,不相同则返回 true。


[ a!=a!=b ] 返回 true。


  1.   注意:条件表达式要放在方括号之间,并且要有空格,例如 [a==a==b] 是错误的,必须写成 [ a==a==b ]。

Shell注释

1.1 shell注释 # 整段代码注释可以采用花括号括起来,类似函数

1.2 Shell字符串

1.2.1 单引号 str=’this is a string’ 单引号里不能出现单引号

1.2.2 双引号  str=”this is a string” 双引号可以有变量,可以出现转义字符

1.2.3 拼接字符串 yourname=”jkhj” greeting=”hello,”$yourname”!”

1.2.4 获取字符串长度 string=”dfa” echo ${#string}

1.2.5 提取子字符串 string=”my name is ending” echo ${string:1:4}  输出结果:y na

1.2.6 查找字符串  string=”my name is ane”  echo `expr index “$string” is `

1.3 Shell 数组

Bash支持一维数组,不支持多维数组,并且没有限定数组的大小

1.3.1 定义数组

Array_name={1 2 3 4}

或者Array_name={

1

2

3

4

}

单独定义数组的各个分量:

Array_name[0]=1

Array_name[0]=2

1.3.2 读取数组

Value=${Array_name[0]}

使用@或者*可以获取数组中的所有元素

Value=${Array_name[*]}

Value=${Array_name[@]}

1.3.3 获取数组的长度

num=${#Array_name[@]}  获取数组元素的个数

Length=${#Array_name[0]}  取得数组第一个元素的长度

1.3 echo 命令

1.3.1 echo “\”It is a test\”” 输出结果: “It is a test”

1.4 换行

1.4.1 echo “ok!\n”  echo “It is a cat”

输出结果:

Ok!

It is a cat

1.5 显示不换行

1.5.1 echo “ok!\c”echo “It is a dog”

输出结果: ok! It is a dog

1.6 显示结果重定向至文件 echo “It is a test” > myfile

1.7 原样输出字符串(不进行转义),使用单引号 echo ‘$name\”’

1.8 显示当前日期 echo `date`

1.9 算术运算

  1. Echo `expr 2 + 2`
  2. 乘法,echo `expr 4 \* 2`

1.10 关系运算

if [ 3 -lt 8 ]

then

echo ‘true‘

else

echo ‘false‘

Fi

1.11 关闭防火墙

Systemctl stop firewalld.service

1.12 查看shell种类 cat  /etc/shells

1.13 新建文件  touch filename

原文地址:https://www.cnblogs.com/bokeyuan228/p/8335289.html

时间: 2024-08-26 04:58:48

shell学习笔记1 【linux shell 编程从初学到精通第2版】的相关文章

shell学习笔记之一(shell内建命令)

注释: # 注意:shell 文件开头的#!/bin/bash 里的#不是注释 运行: 1.bash shell.sh 2.chmod +x shell.sh -> ./shell.sh 3.添加到PATH 变量中 4.. ./shell.sh 排错: 1.语法错误 运行时会有提示 2.逻辑错误 使用echo 打印, sleep number:睡眠number 秒,降低循环速度 使用bash -x 来调试shell 脚本 第三方工具:bashdb 内建命令: 1.判断一个命令是否是内建的:typ

Linux Shell 学习笔记

2.return与exit区别 return 表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调用. exit(0)表示正常退出执行程序,如果加其它的数值:1,2,....可以表示由于不同的错误原因而退出 . main函数中exit(0)等价于return 0. 1. Linux下一条命令或一个进程执行完成会返回一个一个状态码. 0 === 成功执行 非0 === 执行过程

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

Shell学习笔记——第三章

第三章 /etc/passwd 文件包含一个所有系统用户账户组成的列表,以及一些关于每个用户的基本信息. 例rich:x:501:Rich Blum:/home/rich:/bin/bash 每个条目都有7个数据字段,例使用冒号分隔.系统使用这些字段中的数据向用户分配具体的特性.这些字段分别有 用户名:用户密码(如果密码存储在其他文件中,则为占位符):用户的系统用户ID编号:用户的系统组的ID编号:用户的全名:用户默认的主目录:用户的默认Shell目录: cd 命令 略过 列表命令(ls) 参数

Hbase学习笔记之一 | Hbase Shell命令篇

最近在XX项目的测试过程中,接触到一些HBase的东西,希望能站在测试的角度,把过程记录下来,期望对快速了解它有点帮助.作为一个初次接触它的人来说,需要迫切掌握其中基本的概念,这里就不赘述了. HBase Shell是HBase提供的便捷的访问方式,首先你需要搭建HBase的环境,可以参考 http://hbase.apache.org/book/quickstart.html 和http://hbase.apache.org/book/notsoquick.html. 1.进入Hbase Sh

Linux 程序设计学习笔记----终端及串口编程及实例应用

转载请注明出处,http://blog.csdn.net/suool/article/details/38385355. 部分内容类源于网络. 终端属性详解及设置 属性 为了控制终端正常工作,终端的属性包括输入属性.输出属性.控制属性.本地属性.线路规程属性以及控制字符. 其在系统源代码的termios.h中定义(具体的说明文档http://pubs.opengroup.org/onlinepubs/7908799/xsh/termios.h.html),其结构体成员主要是 Thetermios

SHELL学习笔记----IF条件判断,判断条件

SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here       elif list then           do another thing here       else          do something else here fi  EX1: #!/bin/bash if [ `uname -m` == "x86_64" ]

学习笔记-- 2014-07-07 Linux常用命令

2014-07-07 Linux常用命令 在Linuxtoy.org上看一些文章收集一些常用命令==================一.ps.kill 使用备查二.Ubuntu 提示三则三.最小化安装 Ubuntu四.Linux Mint设置时间 一到三来看linuxtoy.org网站 ===================一.ps.kill 使用备查 ps-查看当前正在运行的进程,示例:$ ps     kill {PID}-通过 PID 来停止任意进程,示例:$ kill 1012    

转 网络编程学习笔记一:Socket编程

网络编程学习笔记一:Socket编程 “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: