Linux指令学习

文章目录

      • RPM
      • YUM
      • SHELL
      • Crontab定时任务

RPM

常见指令:

- rpm -qa | grep xxx : 查询是否安装了该软件包
- rpm -qf /etc/xxx: 查询这个目录属于哪个软件包
- rpm -ql firefox:查询这个软件包安装了哪些文件

- rpm -e firefox: 卸载一个软件(如果有依赖会删除失败)
- rpm -e --nodeps firefox:强制删除

- rpm -ivh RPM包的全路径名称:安装一个RPM的包
	i:install 安装
	v:verbose 提示
	h:hash 进度条

i686、i386表示32位系统,noarch表示通用

YUM

包管理器
能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系
  1. 查看yum服务器是否有需要安装的软件
    yum list | grep xxx:会列出所有的安装包
    
  2. 安装指定的yum包
    yum install xxx
    

SHELL

位置参数变量
$n:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,需要用大括号包含:${10}

$*:代表命令行中所有参数,把所有参数看成一个整体

$@:也代表所有参数,不过$@把每个参数区分对待

$#:代表命令行中参数个数

预定义变量
$$:获取当前进程号
$!:获取后台运行的最后一个进程的进程号
$?:返回最后一次执行的命令的返回状态,如果是0,表示正确执行

./myShell.sh & :命令后面加‘&’表示后台执行
运算符
$((运算式)) 或 $[运算式] (推荐使用)或 expr m + n
条件判断
基本语法:[ confition ] 注意condition前后要有空格

常用判断条件

1)两个整数的比较
= 字符串比较
-lt 小 于
-le 小于等于
-eq 等 于
-gt 大 于
-ge 大于等于
-ne 不等于

2) 按照文件权限进行判断
-r 有读的权限  [ -r  文件  ]
-w 有写的权限
-x 有执行的权限

3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录


例如:
if [ 23 -gt 22 ]
then
	echo "大于"
fi

if [  -f  "/data/release/gdt/env_prod" ]
then
        export ENV=prod
fi
流程控制
1. if语句
if [ condition ]
then
 	程序
elif [ condition ]
then
	程序
fi


2. case 语句
case $变量名 in
"值1")
	程序
;;
"值2")
	程序
;;
*)
	其他程序
;;
esac


3. for循环
语法1:
for 变量 in 值1 值2 值3...:
	do
		程序
	done

语法2:
for ((初始值;循环控制条件;变量变化))
	do
		程序
	done

例如:i 在 参数中
for i in $@
	do
		echo "$i"
	done

1加到100:
SUM=0
for ((i=1;i<=100;i++))
	do
		SUM=$[$SUM + $i]
	done
echo "$SUM"


4. while循环
while [ 条件判断式 ]
	do
		程序
	done

例如:1加到n,总共多少
SUM=0
i=0
while [ i -le $1 ]
	do
		SUM = $[$SUM + $i]
		i = $[$i + 1]
	done
echo "SUM=$SUM"

read读取控制台输入
read [选项] [变量]
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
变量:指定读取值的变量名

例如:
读取控制台输入一个 num 值,在 10 秒内输入。
read -t 10 -p "请输入num的值:" NUM
echo "NUM=$NUM"
函数
shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。

1. 系统函数(只介绍两个basename、dirname)
•	basename 基本语法
功能:返回完整路径最后 / 的部分,常用于获取文件名
basename [pathname] [suffix]
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。

例如:
basename /home/gatesma/test.txt   --->   test.txt
basename /home/gatesma/test.txt .txt   --->   test

•	dirname 基本语法
功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分))

例如:
dirname /home/gatesma/test.txt  --> /home/gatesma


2. 自定义函数
•	基本语法
[ function ] funname[()]
{
	Action; 
	[return int;]
}

调用直接写函数名:funname	[值]

•	例子
计算输入两个参数的和(read), getSum

function getSum() {
	SUM=$[$1 + $2]
	echo "$SUM"
}
getSum $1 $2

Crontab定时任务

crontab [选项]
-l 查询任务
-e 编辑任务
-f 删除当前用户所有的crontab任务

【快速入门】
*/1 * * * * ls -l /etc > /tmp/to.txt



* 取值范围内的所有数字
/ 每过多少个数字
- 从X到Z
,散列数字

实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
项目 含义 范围
第一个* 一个小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都是星期日)

你可能感兴趣的:(Linux,linux,java,shell)