linux shell学习笔记

最近在学习linux shell,写写笔记。

alias对命令起别名,如果直接打上去可以查看起名情况

alias 名字="命令"
unalias 名字取消别名


命令历史
保存用户曾经执行过的命令操作
存放位置:~/.bash_history 文件
history或上下键
-c清除历史记录
history的size限制再/etc/profile文件中。



交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息



类型        设备文件   文件描述编号   默认设备
标准输入     /dev/stdin    0       键盘
标准输出      /dev/stdout   1      显示器
标准错误输出   /dev/stderr    2       显示器





改变标准输入、标准输出、标准错误的方向


类型           操作符              用途

重定向标准输入     <   将命令中接收输入的途径由默认的键盘更改为指定的文件

重定向标准输出        >    将命令的执行结果输出到指定文件中而非直接到屏幕

            >>  将命令执行的结果追加到指定文件中

重定向标准错误        2>   清空指定文件的内容,并将标准错误信息保存到该文件

            2>>  将标准错误信息追加到指定文件

重定向标准输出和错误     &>   将标准输出和错误内容全部保存在只到指定文件中





-----------shell-------------------------------------------------------
为了方便管理linux系统提供特定参数。
1.变量名:使用固定的名称,有系统预设或者用户定义
2.变量值:能够根据用户设置,系统环境变化而变化
变量种类
用户自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设置用户的shell工作环境,只有极少数的用户可以修改
预定义变量:bash预定义的特殊变量,不能直接修改
位置变量:通过命令行给程序传递执行参数






定义新的变量
格式:变量名=变量值
键值对
查看变量的值
echo $变量名
set查看所有的变量的
env专门查看全局变量的
从键盘输入内容为变量赋值
格式:read [-p "信息"] 变量名
例如:
read -p 请输入内容 vvv
引号:
双引号和单引号像php的规则一样
``这个反撇号:将命令执行的结果输出给变量


设置变量的作用范围
格式:export 变量名
export 变量名=值
清除用户定义的变量
格式:unset 变量名


计算整数表达式的运算结果
格式:expr 变量1 运算符 变量2 
+
-
\*
/
%
环境变量配置文件
全局配置文件:/etc/profile 系统起的时候就去读这个文件
用户配置文件:~/.bash_profile


在环境变量中添加在PATH中添加
[root@localhost ~]#PATH=$PAHT:/root 
':'这个符号是分隔符号


常见的环境变量
$USER $LOGNAME $UID $SHELL $HOME $PWD $PATH $PS1 $PS2


for 变量名 in 集合
do
done


sleep 1睡一秒


预定义变量
如下:
$#:命令行中位置参数的个数
$*:所有位置参数的内容
$?:上一条命令执行后返回的状态,当返回状态值为0正常,非0则异常或错误
$$:当前所在进程的进程号
$!:后台运行的最后一个进程号
$0:当前执行的进程或脚本名字




#!这两个表示要用什么解析器接收,shell
du -sh 查看文件大小
ll -R /root/ -R是递归的




test命令
用途:测试特定的表达式是否成立,当成立的时候命令执行后返回0,否则返回其他数
格式:test 条件表达式 
[ 这里面的条件每个单位都要用空格隔开 ]
测试文件状态
格式:[ 操作符 文件或目录  ]
常用的测试操作符
-d:测试是否为目录
-e:测试是否存在
-f:测试是否为文件
-r:测试当前用户是否有权读取
-w:测试当前用户是否有权限写入
-x:测试当前用户是否可执行
-L:测试是否为连接文件


例如
[root@localhost ~]# [ -d /etc/passwd ]
echo $?
为1则不是目录
当然也可以这样写
#[ -e /usr/local ] && echo "yes"
如果前面执行成功后面就执行,否则不输出






整数值比较
格式:[ 整数1 操作符 整数2 ]
常用的测试操作符
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-le:小于或等于
-ge:大于或等于






[root@localhost ~]# [ `who |wc -l` -le 10 ] && echo "yes"
wc -l查看数量




字符串比较
格式:
[ 字符串1 = 字符串2 ]
[ 字符串1 != 字符串2 ]
[ -z 字符串 ]


=相等
!=不相等
-z字符串为空


例:
#[ $LANG!="en.US" ] && echo $LANG




逻辑测试
格式:[ 表达式1 ] 操作符 [ 表达式2 ]
常用的测试操作符
-a或&&:逻辑与
-o或者||逻辑或
!:逻辑否


例:
[root@localhost ~]# [ $USER != "teacher" ] || echo "not teacher"
[root@localhost ~]# [ $USER = "teacher" ] || echo "teacher"


#!/bin/bash
RATE=`df -hT |grep "/boot" | awk '{print $6}' | cut -d "%" -f1`
if [ $RATE -gt 80 ]
then


echo "Warning,DISK IS FULL"
fi


#!/bin/bash
service mysqld status &>/dev/null
if [ $? -eq 0 ]
then
echo "mysqld service is running.."
else
/etc/init.d/mysqld restart
fi


--------------------------------------------------------



#!/bin/bash


for v in $*
do


echo $v
sleep 1
done


for time in "today" "yesterday" "tomorrow"
do
echo "$time changed"
done


echo "--------end----"

------------------------------------------------------------------------
#!/bin/bash


for((i=0;i<10;i++))
do
echo $i
sleep 1
done
echo "end------"
#双括号里面只能有与数字相关的才行的
如echo $(($i+1))




递增
let i++


[root@localhost ~]# cat /etc/passwd |grep bash |awk -F: '{print $1,$2}'


[root@localhost ~]# find ./ -user root
查找关于用户的文件

如果要批量建立用户可以这样建
useradd stu$i
echo "123" | passwd --stdin stu$i &> /dev/null
i=`expr $i+1`


#!/bin/bash


case $1 in
start)
echo "start......."
;;
#;;表示结束
stop)
echo "stop......."
*)
echo "default..start|stop."
;;
esac


#!/bin/bash
read -p "presss key : " key
case "$key" in
[a-z][A-Z])
echo "letter"
;;
[0-9])
echo "digit"
;;
*)
echo "letter or digit allow"
esac
#后面是正则
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值