1、shell变量赋值
定义shell变量非常的简单
name=string
name是变量名,变量名是用小写字母命名
=是赋值符号,两边不能有空格,否则将视为命令。
string是被赋的变量值
例如:赋值字符或者字符串
v1=centos — v1 =centos(这时候v1会被视为一个命令来执行,没有v1这个命令所以会报错)
v2=’this is a shell script’
shell中输出变量:用
符号,用
符
号
,
用
符号就表示v1是一个变量。
例如:赋值整数以及加减乘除和幂运算
a=10
b=20
shell中做加减乘除运算,必须要用双层小括号(()),单层小括号不起作用
数字的运算、判断大于小于也要用双层小括号
a和b是变量,要把ab的运算结果输出,那么前面也要加变量符号$,表示输出的是一个变量
#!/bin/bash
v1=ce
echo $v1
a=10
b=20
#echo $(($a+$b))
echo $((100-20+30*2))
echo $((3**2)) --- 这里表示3的二次幂
#注意两点:1、双层括号 2、输出要用$符号,表示是一个变量
i=10
while (($i>=5));do
echo $i;
((i--));
done;
2、shell字符串相关的操作
例如:
v2="this is a shell script."
echo ${#v2}
echo ${v2}
echo ${v2:5} #从前面截取5个字符,输出后面所有字符
echo ${v2:5:6} #从前面截取5个字符,从截完的字符串中再取6个字符
echo ${v2#this} #删除开始的字符串
echo ${v2#t*i} #最短匹配,删除从t到最近的i 结果:s is a shell script.
echo ${v2##t*i} #最长匹配,删除从t到最远的i 结果:pt.
注:从结尾删除,把#换成%即可
3、判断、输出、证明
test判断
-f 文件是否存在
-d 目录是否存在
-r 文件是否有读权限
-w 文件是否有写权限
-x 文件是否有执行权限
判断命令是test和[],-f -d -w等是它的参数
filename=/home/zhangsan
test -f $filename && echo 'exist' || echo 'not exist'
test -d $filename && echo 'exist' || echo 'not exist'
chmod 400 路径\文件名:r–
取消写和执行权限,只有读权限。。
某个用户创建了这个文件,那么就算chmod 400取消了执行权限,也还是可以删除这个文件,因为这个是该用户创建的。
[]判断
1、在中括号中必须都要实用空格来分隔
2、在中括号中的变量,最好都要以双引号括起来
3、在中括号中的常数,最好都以单引号括起来
例如:
[ '10' == '12' ] && echo 'yes' || echo 'no'
a=this
b=thisa
[ "$a" != "$b" ] && echo 'yes' || echo 'no'
#!bin/bash
#[] 中括号里面要用这几种特殊的符号 -eq(等于) -ne(不等于) -gt(大于) -ge -lt -le
#if while等条件表达式里面一般都用[]
#(()) 双层小括号里面可以用这六种比较运算符 == != > >= < <=
#只要整数运算等才用到双括号
i=10
#while (($i>=5));do
while [ $i -qt 5 ];do
echo $i;
((i--));
done;
注意:结束符,加分号
4、循环
5、
web=`/bin/pgrep httpd`
if [ "$web" != ""]
then
echo "the web service is running"
esle
echo "the wen service is NOT running"
/etc/rc.d/init.d/httpd start
fi
cat if_esle(文件没有后缀名)
#!/bin/sh
echo "please input a file name:"
read file_name
if [ -d $file_name ]
then
echo "$file_name is a directory"
elif [ -f $file_name ]
then
echo "$file_name is a common file"
elif [ -c $file_name -o -b $file_name] -o and的意思,-c设备文件 -b块文件 设备文件如:/dev/sdb
then
echo "$file_name is a device file"
esle
echo "$file_name is an unknown file"
fi
cat userinfo.sh
/bin/echo "please input the username"
read username
/bin/grep $username /etc/passwd > /dev/null 2> /dev/null
if [ $username -eq 0]
then
echo "username is : $username" 这里用单引号就不行
else
echo "user $username does not exists"
exit 1
fi
#list userinfo blow
userinfo=`/bin/grep ^$username:x /etc/passwd`
userid=`/bin/echo $userinfo | awk -F : '{print $3}'` 这里还是要:分割一下
groupid=`/bin/echo $userinfo | awk -F : '{print $4}'`
homedir=`/bin/echo $userinfo | awk -F : '{print $6}'`
groupname=`grep $groupid /etc/group`
6、删除会话
#删除samba用户
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\10206801>net use \\10.8.61.238 /delete
\\10.8.61.238 已经删除。
6 创建一个function
相当于创建一个方法,带参数
create or replace function inserttest( num int)
returns integer
as $BODY$
declare id int;
begin
FOR id in 1..num LOOP
insert into test values (cast (id as text),'aa');
end LOOP;
return num;
end;
$BODY$
language plpgsql;
调用function,传入参数
select inserttest(3)
7、慕课网Linux软件安装管理
1、软件包分类
源码包
Linux最早的软件包就是源码包。 — 类似于买家具,从自己种树到砍木头,到自己做好家居。
Windows没Linux稳定,它的C盘会越用越大,删不干净,会产生大量的垃圾文件。
但是Linux的源码包甚至连卸载命令都没有,把安装目录直接删了,任何垃圾文件都不存在了。这是源码包优点。
二进制包(RMP包、系统默认包)
—- 类似于直接到家具厂 ,买现成的。
如果是纯源码包,但是安装很麻烦。所以考虑用二进制包。标题的RMP包,系统默认包指的都是二进制包。
脚本安装包
2、服务管理
运行级别
3命5图6重启。。。0关机
2– 其实就是不完全的字符界面。
1、runlevel 表示查看当前级别:
前面一个字母表示我在进入这个级别之前我在哪个级别,3表示当前级别。
N表示null,空的意思。意思是没有从其他级别进入3级别,一开机就进入到了3级别。
2、init 表示改变运行级别:
虽然init 5没有成功,但是runlevel还是认为从3到了5级别。
例:
[root@localhost usr]# runlevel
N 3
[root@localhost usr]# init 5
[root@localhost usr]# runlevel
3 5
注意:init 0和 6 代表关机和重启,这种方式是直接调用系统的0级别和6级别,它不一定会正确的结束系统正在运行的服务,不可靠,所以不推荐使用。还是建议用shutdown
设置系统默认运行级别:
修改一下配置文件即可,Linux一切归文件。
注意不允许设置默认级别为0 和6
[root@localhost usr]# cat /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
id:3:initdefault:
服务分类
什么叫服务管理?把不需要或者暂时不需要的服务给停掉,这就是服务管理的一种。同时也是服务器优化的重要手段之一。
8、mysql
什么是索引:用来帮助快速寻找数据的 数据结构。。搞清这个主谓宾
讲的东西还是要专业,正统一些。面试的时候给人一种专业的感觉。
mysql的数据都是存储在文件里面 。
怎么读取查询(select * from table where id=1)的数据?? 逐行扫描
address可以快速定位到某个点的话,就比以前的逐行扫描快不少。
9、数据结构
红黑树
当树不平衡了,就要提供一个方法去维持平衡。
颜色不过就是一个标记。。。
如何保持平衡????就是下图的第四点,每条路径包含相同数目的黑色节点。
当要插入一个数据的时候,可能插不进去。这个时候要变换颜色(都换成黑色),才能插。。。