shell编程的笔记
关于历史命令
Shell相关
!! 是上一次执行的命令
!字符串 指执行最近一次以这个字符串开头的命令
!$ 取出上一条命令最后一个单词或命令
*匹配0个或多个字符 ?匹配一个字符
Ctrl+z 暂停一个进程 fg(foreground)恢复这个进程到前台 bg(background)恢复这个进程到后台
如果暂停多个进程,则可以使用jobs命令,查看进程编号 ,如1 或2。然后fg 和bg的时候后边加上这个编号,指定返回哪个进程。 如 fg 2
Ctrl+c 结束掉一个进程
env 显示所有环境变量
set显示当前shell所有变量(包括自定义、环境变量
设置变量时需要注意:
a=b b作为变量内容,等号两边不能有空格 ,变量内容带有特殊字符时,需要加上单引号
如: a=’str heheh’
单引号会使里边的特殊符号失去作用:
比如: a=’$abc’ 那么a就是$abc
a=”$abc” 那么a就是$abc变量的值
变量里本身含有单引号,这就需要用双引号括起来了,变量里若含有双引号可以使用\” 转义
bash进入子shell,pstree可以查看
父shell的变量,让子shell可以使用,需要命令 export 一下
释放一个变量 unset
管道符 |
如: 查看一个文件有多少行 cat hi.txt | wc -l
-----------------------------------------------------------------------
变量定义
#x='fff'
#echo $x
#x="$x"hehe
#export x (使之成为环境变量)
===============
追加一个目录如/root 到环境变量PATH
# PATH=$PATH:/root
# echo $PATH
===============
#bash (子shell)
#pstree
set (查看所有变量)
env (查看环境变量)
----------------------
查看当前语系
locale
echo $LANG
echo $LC_ALL
------------------------
位置参数变量
$n 第几个参数
$* 全部变量 整体对待
$@ 全部变量 单独对待
$# 参数个数
---------------------
shell脚本开头一行
#!/bin/bash
---------------------
预定义变量
$? (返回上一条命令执行正确否 0正确)
---------------------
read -p -s 用户输入的字符赋给变量
--------------------
declare -i -a -x(export) -p 变量声明为一个类型 -i整型 -a数组 -x环境变量 -p变量属性
---------------------
配置文件

配置文件加载顺序图

-----------------------------
欢迎信息 /etc/motd
--------------------------
正则&&通配符

----------------------------------
字符操作命令
cut (比较适合规律的列文档 -f 列 -d分界符

-----------------------------------
printf
awk


# awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt
$0 当前记录(这个变量中存放着整个行的内容)
$1~$n 当前记录的第n个字段,字段间由FS分隔
查看文件系统/dev/root下的使用率:
df -h | grep "/dev/root" | awk '{print $5}' | cut -d '%' -f 1
-------------------------------------
sed

---------------------------------------
sort
wc
--------------------------------------
插播个知识点:软硬连接
软连接类似于快捷方式,不同的i节点,删原文件,另一个打不开;硬链接就是一个文件,相同i节点,他俩名字不同而已,删除一个,另一个仍然访问。
---------------------------------------
标准输入输出的知识点:
标准输入:
键盘 /dev/stdin 文件描述符0
标准输出:
显示器 /dev/stdout 文件描述符1(标准正确输出)
标准错误输出:
显示器 /dev/stderr 文件描述符2
比如:
标准正确输出的重定向: #echo 'aaa' 1> test1.log
有可能我的命令出错了,此时可以把这个报错信息标准错误输出。比如echoz命令写错了,(>>是追加文件,而不是覆盖)
标准错误输出的重定向: #echoz 'bbb' 2>> test2.log
正确和错误的输出同时重定向到一个地方,这种场景比较多见:这样格式 2>&1放在后头
#echoz 'ccc' >> test3.log 2>&1
或者这样格式: #date &>> test3.log
正确输出放到一个地方,错误输出放到一个地方(分开保存,/dev/null是空设备:
#echo 'ddd' >> test4.log 2>>/dev/null
======================================
shell判断符号,推荐[[ ]],语法要求:中括号内容左右两边留有空格
test -e /data/www/index.php
[ -e /data/www/index.php ]
[[ -e /data/www/index.php ]]
------------------------------
分支判断语法
注意:if要以if收尾。类似do以done收尾。case以esac收尾;
if后要有then,如果then不换行,那么then前边要有个分号;else后则不需要then;
elif的关键词;
#!/bin/bash a='bb' #赋值操作等号两边不能有空格 if test -e "./test.sh"
then echo 'exists' #if 后有then
else echo 'no exists' # else后没有then
fi if [[ -n ${a} ]]
then echo ${a}
fi b=
if [ ${b} -eq ]
then echo '$b='"$b" #输出$b= 这里注意单双引号的区别
fi echo + #输出 + echo $((+)) #输出3
shell的几种常用的循环方式:
#!/bin/bash for i in
do
echo $i
done echo for j in {..}
do
echo $j
done for file in "./*"
do
echo $file
done for file in $(ls)
do
echo $file
done

比如现在文件夹下有n个文件,只有名字是a.txt的不想删除,其他都要删。可以利用xargs
比如: ls | grep -v a.txt | xargs rm -rf
${var:-word}这个意思是如果var这个变量存在且不为空,就返回var,否则返回word
shell编程的笔记的更多相关文章
- Linux Shell编程学习笔记——目录(附笔记资源下载)
LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...
- shell编程学习笔记(十):Shell中的for循环
shell编程中可以实现for循环遍历 先来写一个最简单的吧,循环输出从1到10,脚本内容为: #! /bin/sh for i in {1..10} do echo $i done 上面的代码从1到 ...
- shell编程学习笔记(一):编写我的第一段代码
目前在学习Shell编程,我会把我的学习笔记记录在这里.大神可以直接略过~ 嗯,第一段代码,肯定是要输出Hello World了~ 以下蓝色字体的内容为linux命令,红色字体的内容为输出的内容: # ...
- shell编程学习笔记【原创】
本文为本人学习笔记,如有转载请注明出处,谢谢 一.Bourne Shell 有如下四种变量: 用户自定义变量 位置变量,即命令行参数 预定义变量 环境变量 二.位置变量 $ 与键入的命令行一样,包含脚 ...
- shell编程学习笔记(八):Shell中的if条件判断
编程语言中都有条件判断,shell编程也不例外,下面我们来看一下shell中应该怎么使用if条件判断 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/scripts ...
- shell编程学习笔记(六):cat命令的使用
这一篇不是讲shell编程的,专门讲cat命令.shell编程书用到了这个cat命令,顺便说一下cat命令. cat命令有多种用法,我一一来列举(以下蓝色字体部分为Linux命令,红色字体的内容为输出 ...
- shell编程学习笔记(五):Shell中脚本的参数
在执行Shell脚本的时候,可以在执行时带上参数,相当于传递参数给脚本,下面我们看一下怎么使用这个参数 以下蓝色字体部分为Linux命令,红色字体的内容为输出的内容: # cd /opt/script ...
- shell编程学习笔记之特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
特殊变量($0.$1.$2. $?. $# .$@. $*) shell编程中有一些特殊的变量可以使用.这些变量在脚本中可以作为全局变量来使用. 名称 说明 $0 脚本名称 $1-9 脚本执行时的参数 ...
- shell编程学习笔记之sed编辑器
在shell编程中,大多数处理的都是文本文件.对文本文件进行处理除了使用交互式文本编辑器(vi[m],gedit......)也可以使用另外一类:流编辑器. 流编辑器:使用预定义的编辑规则来对文本进行 ...
- GNU Bash Shell 编程图解笔记
bash,Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写.1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括 ...
随机推荐
- Unexpected directive 'XXX' imported by the module 'AppMoode'
做angular demo报错: Uncaught Error: Unexpected directive 'ScrollSpyDirective' imported by the module 'A ...
- SD从零开始15-18
SD从零开始15 税(Taxes) 税确定的标准Criteria for tax determination 你可以在sales organization level分配一个rule(blank,A, ...
- Win7/8/10十个最强大通用快捷键
Windows 操作系统功能丰富,可视化的界面能够帮助我们提高工作效率.不过,日常使用中,很多用户都习惯“一只鼠标走天下”,频繁的点击让手指疲惫不堪. 为此,我们总结了十个适用于 Windows 7 ...
- 大数据【六】ZooKeeper部署
这是一个分布式服务框架,阿帕奇的一个子项目.关于ZooKeeper我只简单的部署一下,以便后面的HBase. 一 概述 ZooKeeper 分布式服务框架是 Apache Hadoop 的一个子项目 ...
- Android--listView的divider分割线样式和边距
1.建立一个drawable文件list_divider.xml <?xml version="1.0" encoding="utf-8"?> &l ...
- Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究
Vue 2.0 v-for 响应式key, index及item.id参数对v-bind:key值造成差异研究 在github上阅览README.md以获得最佳阅读体验,点这里 v-for响应式key ...
- Mac下配置Golang环境
1.go的官网:https://golang.org/ 下载地址:https://golang.org/dl/ ps:因为windows的影响我用的apk版本的安装比较简单,后面也会介绍环境变量的配置 ...
- LeetCoder题解之Find All Anagrams in a String
1.题目描述 2.题目分析 直接使用 哈希表记录子串的信息,然后对比两个哈希表信息即可 3.代码 vector<int> findAnagrams(string s, string p) ...
- python常用模块之-random模块
random模块顾名思义就是生成随机数的模块. random模块有以下常见方法: 1,打印0-1之间的任意随机浮点数,不能指定区间. print(random.random()) 2,打印随机符点数, ...
- 如何在 Azure 门户中将托管数据磁盘附加到 Windows VM
本文介绍了如何通过 Azure 门户将新的托管数据磁盘附加到 Windows 虚拟机. 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘. 有关详细信息,请参阅虚拟机大小. 对于新磁 ...