shell基本知识
来源:互联网 发布:中国单片机公共实验室 编辑:程序博客网 时间:2024/06/05 08:41
shell类型
函数
主过程
要调用才能执行
<<!
....
...
...
!
多行注释
#或//单行注释
#!/bin/bash
echo "abcdefg........"
syshello
syshello()
{
echo "enter function....."
ls -l
echo "over function....."
}
echo "start......."
syshello
echo "exit......"
1、文本编辑:
gedit (图形界面可以用)
vi vim
vim 文件名 (文件存在,打开文件 文件不存在:创建文件(文件非空))
退出: shift+:
1、q 退出 不保存退出
2、q! 强制退出 不保存
3、w 保存文件内容
4、wq 保存退出 ==== x
vim 三种模式:
1、命令行模式:刚开打的状态
2、底行模式:输命令的状态
3、插入模式(编辑模式):可以编辑文件
命令行 ---> 底行: shift + :
底行 ---> ESC键
命令行 ---> 插入行:
i(I) : 在光标的前面插入 insert I: 在一行的开头进行插入
a(A) : 在光标的后面插入 append A: 在一行的结束进行插入
o(O) : 在下面另起一行 O: 在上面另起一行
插入行 ---> 命令行:ESC键
底行模式:
设置行号显示:set nu(number)
取消行号显示:set nonu
语法高亮: syntax on(开启) syntax off(关闭)
vim 的配置文件 /etc/vimrc
命令行与底行模式
跳转:
G 跳到最后一行
gg 跳到第一行
nG 跳到 n 行
复制:
yy 复制当前行数据
yw 复制一个单词
y$ 复制光标位置 到 这一行最后的所有数据
删除:
dd 删除一行
dw 删除一个单词
d$ 删除光标位置开始后面所有数据
D 同上
x 删除一个字符 delete
粘贴:
p
n+(yy,yw,dd,p) 重复多少次
撤销: u
底行模式:
查找:
向下查找:/ + 查找的内容 /define n 下一个 N 上一个
向上查找:?+ 查找内容 ?define
替换:
s/old/new : 当前行替换,替换当前行的第一个
s/old/new/g : 整行替换
%s/old/new/g : 全文替换
n,ms/old/new : 替换 n 到 m 行数据
s/old/new/gc : 替换前提示
r ; 替换一个字符
R : 替换后面的所有
另存为:w filename
1、shell:
打开一个文件,后缀名 sh;
写:文件第一行写: #!/bin/bash 表明所用的脚本类型
赋予可执行的权限 chmod +x
执行:
1、./文件
2、sh 文件
3、bash 文件
if 条件
then
执行语句1
elif
then
执行语句2
else
执行语句3
fi 结束标志
grep
ls -l | grep root
awk
ls -l | awk '{print $1}'
ls -l | awk -Froot '{print $1}'
ls -l | awk -Froot '{print $NF}'
第一行写#!/bin/bash,表明所有脚本类型
打开一个文件,后缀名.sh
bin目录下可以直接执行
usr/bin普通用户用
执行:
1. ./ 文件
2. sh 文件
3. bash 文件
清除变量unset 变量 终端关掉结束
#环境内部定义的局部变量
复制等号左右不能空格,字符串,取值包含空格,用双引号
环境变量那里都能用,一个终端内,read 变量名(键盘输入)
readonly 变量名,无法改变此值
PATH=$PATH:/home
etc 改,全终端有效
name=hhh
echo $name
export name 导成环境变量 次派生出来终端才有效
env所有环境变量
#!/bin/bash
echo "#:$#"
echo "@:$@"
echo "*:$*"
echo "0:$0"
echo "1:$1"
echo "2:$2"
echo "3:$3"
echo "4:$4"
echo "hello"
#!/bin/bash
num1=$1
operate=$2
num2=$3
result=$((num1 $operate num2))
echo $result
$?上一个命令的执行结果,
echo $? 正确0
错误非0,错误代码
expr 7+9
expr 7\*9 *命令行参数,需要转义,读不用
echo $((表达式))这里乘法不需要转义
$((num1 * num2))
.demo7.sh 4 + 5
条件test tset n1 参数 n2
成功执行,真 返回0
错误,返回1
if条件
then 执行语句
fi
(结束标志)
elif 条件
then 执行语句
else
执行语句
数值测试
-eq 等于则为真
-ne 不等于
-gt 大于
-ge 大于等于
-lt小于
-le小于等于
路口参数检查
#!/bin/bash
<< A
if test $# -ne 3
then
echo "Usge:./demo9.sh num1 operate num2"
exit 1
fi
A
if [ $# -ne 3 ]
then
echo "Usge:./demo9.sh num1 operate num2"
exit 1
fi
num1=$1
operate=$2
num2=$3
result=$((num1 $operate num2))
case “$#” in
0) echo “输入了0个参数” ;;
1) echo “输入了1个参数” ;;
*) echo “输入了多个参数”;;
esac
每个分支条件后必须以两个分号结尾
echo $result
文件测试
while条件为真执行
until条件为假才执行
tiem命令 执行时间
管道| 管道自负
date 时间
date +%k小时
cp /etc/my.conf >/dev/null 2>&1
/dev/null 空设备
此句命令的结果是:
cp命令没有目标文件,应该输出错误。
2>&1表示错误重定向指向标准输出。
>/dev/null又使标准输出重定向到空,就是不要输出信息
即:一个错误的命令执行,什么功能都不实现,且没有任何信息或错误提示输出。
1)command >file 2>file
2)command >file 2>&1
有什么区别?
1)的写法,stdout和stderr都直接送到file中, 会出现两个同抢占file的管道,file会被打开两次,stdout和stderr输出的信息会互相覆盖。
2)的写法将stdout直接送向file, stderr继承1的管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,常用command > file 2>&1 这样的写法。
编写一个名为chname的程序,将当前目录下所有的.txt文件更名为.doc文件。
#! /bin/sh -
for file in *.txt
do
leftname=`basename $file .txt`
mv $file $leftname.doc
done
说明:
(1)在Linux系统中不支持mv *.txt *.doc这样的更名命令形式,如果需要将文件成批地更名最好编写一个shell脚本文件。
(2)在for语句的参数列表中使用了“*”通配符。
(3(在程序中用到basename命令,该命令从随后的文件名剥去指定的后缀。
- Shell基本知识
- shell基本知识
- Shell基本知识
- Shell基本知识
- shell基本知识
- shell的一些基本知识
- Shell 入门基本知识
- SHELL 脚本基本知识
- shell编程基本知识
- Shell脚本的基本知识
- Shell编程基本知识
- Shell 脚本语言基本知识
- Shell脚本常识(基本知识)
- shell基本知识 - 变量、运算符
- shell系统学习一--基本知识
- shell学习二-----变量基本知识
- Shell脚本常识(基本知识)
- shell基本知识(1)--脚本参数
- idea创建自己的archetype
- android-viewpager轮播图遇到的问题
- C++复制构造函数的实现
- python爬虫抓取多关键词搜索的百度图片
- js刷新页面方法大全
- shell基本知识
- Unity 玻璃shader
- PHY芯片直连和加隔离变压器的设计原理的一些资料的收集。
- 初入C语言!整数算法练习1:通过编程实现,统计1~n有多少个9 ? 提示:n通过参数传入!
- 关系数据库标准化语言SQL
- 使用串口转USB线配置交换机方法
- Linux C 堆与栈的区别
- scipy未正确安装报DLL找不到的问题
- git merge 和 git rebase 区别理解