shell入门基础&常见命令及用法
shell
shell是一个命令解释器,实际是一个程序,/bin/bash,linux中所有的命令都由它来解释,有自己的语法
shell脚本
以.sh结尾
shell语法+linux命令
注释:
单行注释 :
#
多行注释 :
:<<c c
shell执行方式
bash /path/to/script-name 或 /bin/bash /path/to/script-name (强烈推荐使用)
/path/to/script-name 或 ./script-name (当前路径下执行脚本)
source script-name 或 . script-name (注意“.“点号后面有空格)
前两种执行时,都会开启新的进程执行脚本
source不会开启新的进程
使用source时,可以与当前终端共享进程,共享变量(重点)
变量
1、name=itcast
2、name='itcast
$age' 不会解析里面的遍历
3、name=”itcast
$age“ 解析变量后,再拼接成新的字符串
命令变量
1、name=`ls`
2、name=$(ls)
括号里必须是linux命令,把命令执行的结果记录给变量
全局变量
方法一:
变量名=值
export 变量
方法二:(最常用)
export 变量名=值
如果是在终端中定义全局变量,作用范围是当前终端及子进程
如果想要自己定义的全局变量在跟系统的全局变量一样在所有环境都有效,需要在~/.bashrc或/etc/profile文件中定义:
修改~/.bashrc后,直接打开新的终端,定义的全局变量就生效了,此方式只对当前用户有效
修改/etc/profile时,需要重启操作系统,定义的全局变量才生效,此方式对所有用户有效
上面两种方式在修改文件后,如果想让全局变量在当前终端生效,需要执行命令source ~/.bashrc或source /etc/profile
查看变量
标准使用方式:"${变量名}"
内置
$0 获取当前执行的shell脚本文件名
$$ 获取执行shell脚本的进程号
$n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9就要用大括号括起来${10}
$# 获取当前shell命令行中参数的总个数
$? 获取执行上一个指令的返回值(0为成功,非0为失败)
$?:上一条命令是执行一个文件,返回的结果是文件中的最后一条命令
默认值
1、
变量a如果有内容,那么就输出a的变量值
变量a如果没有内容,那么就输出默认的内容
格式:
${变量名:-默认值}
2、
无论变量a是否有内容,都输出默认值
格式:
${变量名+默认值}
测试语句
等号左右必须有空格,中括号左右必须有空格
test a = 1
[ a = 1 ]
逻辑表达式
&&符号
命令1
&& 命令2
如果命令1执行成功,那么执行命令2
如果命令1执行失败,那么不执行命令2
||符号
命令1 || 命令2
1 如果命令1执行成功,那么不执行命令2
2 如果命令1执行失败,那么执行命令2
文件表达式
判断是否是可执行文件
[ -f abc ] && [ -x abc
]
计算表达式
a=$((a+1))
let a=a+1
重定向
命令>文件
命令返回的结果又正确和错误两种,1代表正确,2代表错误
bash chongdingxiang.sh
>/dev/null 2>&1 &
把正确的和错误的结果都输出到黑洞文件,而且命令在后台执行
linux四剑客
grep
grep -nr 关键字 .
find
find . -name
"*sh"
sed
行编辑工具
-i 真正的修改
s:替换
a:追加
i:插入
d:删除
sed -i "s#sed#SED#g"
sed.txt
每一行找到sed,把所有的替换为SED
sed -i
"2s#SED#sed#2" sed.txt
第二行的第二个SED替换为sed
sed -i "1,4a\hello2"
sed.txt
在1到4行的每一行后追加一行内容
sed -i "1i\hello3"
sed.txt
在第1行前插入一行
sed -i "2d" sed.txt
删除第2行
awk
分析工具,按行处理
awk
'BEGIN{FS=":";OFS="--"} {print $2,$NF}' awk2.txt
默认按照空格或tab键拆分数据,通过OFS指定输出时的分隔符
流程控制
if语句
if [ 条件
]
then
指令1
elif [ 条件2
]
then
指令2
else
指令3
fi
#!/bin/bash read -p "请输入性别:" sex
if [ "$sex" == "nan" ]
then
echo "输入的是男"
fi
case语句
#!/bin/bash case "$1" in
"start")
echo "启动"
;;
"stop")
echo "停止"
;;
"restart")
echo "重启"
;;
*)
echo "。。。。"
;;
esac
for循环
遍历文件夹
#!/bin/bash mkdir ../bak
for file in $(ls)
do
# echo "file: $file"
cp "$file" ../bak/"${file}-bak"
done
seq命令
#!/bin/bash for num in $(seq 5)
do
echo "num: $num"
done
while循环
#!/bin/bash count=1
while [ $count -lt 5 ]
do
echo "count: $count"
let count=count+1
done
until循环
#!/bin/bash count=1
until [ $count -ge 5 ]
do
echo "count: $count"
let count=count+1
done
函数
#!/bin/bash echo "jiaoben : $1,$2,$3"
dayin(){
if [ $# = 3 ]
then echo "hanshu : $1,$2,$3"
else
echo "需要3个参数"
fi
} #dayin e f g
dayin $1 $2 $3
使用source执行脚本,脚本中定义的变量和函数都能在当前终端调用
让root用户能够使用python虚拟环境
export
WORKON_HOME=/home/python/.virtualenvs/
source /usr/local/bin/virtualenvwrapper.sh
shell入门基础&常见命令及用法的更多相关文章
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- [Linux基础]Linux基础知识入门及常见命令.
前言:最近刚安装了Linux系统, 所以学了一些最基本的操作, 在这里把自己总结的笔记记录在这里. 1,V8:192.168.40.10V1:192.168.40.11Linux ip:192.168 ...
- shell 入门及常用命令
1.shell 是什么 shell是指一种程序, 它是和linux沟通的桥梁, 这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务, Ken Thompson 的 sh 是第一种 Un ...
- shell入门基础必备
作者:KornLee 2005-02-03 15:32:57 来自:Linux先生 1.建立和运行shell程序 什么是shell程序呢? 简单的说shell程序就是一个包含若干行 shel ...
- shell 入门基础
一. Shell变量 1. 变量可分为两类: 环境变量(全局变量) 和 局部变量 . 环境变量 : 所有的环境变量都是系统全局变量,可用于所有子进程中,这包括编辑器.shell脚本和各类应用 . 环境 ...
- linux下shell脚本中sed命令的用法
先来给一个案例: #将old.sql文件中的符号“|”替换为“,”,并保存到test.sql文件中 sed "s/|/,/g" "old.sql"> te ...
- Linux shell入门基础(八)
八.shell脚本sed&awk 01.sed的使用 流编辑器-Steam Editor #ed /etc/passwd 1,10p …… 1s/root/byf/p(替换root为byf) ...
- Linux shell入门基础(二)
二.shell对文本的操作 01.查看文本的命令 #cat /etc/passwd(并非对文本文件操作) #tail -5 /etc/passwd(查看末尾5行) #tail -f /var/log/ ...
随机推荐
- pyqt5加载网页的简单使用
如下初步使用了pyqt5,构造了一个webview来加载网址,呈现网页. 1.安装pyqt5包,可使用douban的源 pip install pyqt5 -i http://pypi.douban. ...
- IntelliJ IDEA 运行你的第一个Java应用程序
IntelliJ IDEA 运行你的第一个Java应用程序创建项目让我们创建一个简单的Java Hello World项目. 单击创建新的项目. 打开新建项目向导.你应该注意的主要是项目的SDK.SD ...
- postgresql+postgis+pgrouting实现最短路径查询(3)--流程图
项目结束,做一个项目的总结汇报,就把最短路径查询的实现流程图画了一下,现在补出来:
- commons dbcp.jar有什么用
主流数据库连接池之一(DBCP.c3p0.proxool),单独使用DBCP需要使用commons-dbpc.jar.commons-collections.jar.commons-pool.jar三 ...
- Executor线程池框架
Executor线程池框架 new Thread()的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致 ...
- 安装MySql-Python遇到的错误及解决方法
用pip安装mysql-python时报错: _mysql.c _mysql.c(42) : fatal error C1083: Cannot open include file: 'config- ...
- webpack的正确安装方式
webpack是基于node开发的模块打包工具,所以他本质上是由node实现的. 我们要保持node版本尽量的新,另一个要保持webpack版本尽量的新,高版本的webpack会利用新版本中的一些特性 ...
- shiro简单入门介绍
shiro是apache的一个java安全框架 可以完成认证,授权,加密,会话管理,基于web继承,缓存等 功能简介: 从外部来看: shiro架构 Subject:主体,代表了当前“用户”,这个用 ...
- 开关WI-Fi显示列表
实现效果: 使用方法: Show-NetList #显示Wi-Fi列表 Show-NetList -off #关闭显示 (如图) 实现代码: function Show-NetList { P ...
- [Raspberry]001Ubuntu下查看linux版本,内核版本,系统位数,gcc版本
1. 查看linux版本 sunny@ubuntu:~$cat /etc/issueUbuntu 11.04 \n \l 2. 查看内核版本1) sunny@ubuntu:~$ cat /proc/ ...