补充
sudo :输入当前用户密码使用root超级权限
su 用户名 :进入某用户权限下,默认不写用户名就进入root
su - :进入root权限并切换root的shell
env :环境变量
grep 123 test* : 查找在以test开头的文件中,包含“123”的行
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo '2'
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo 'yes' | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo "fail"
基础语法
ls
pwd
mkdir test
rmdir test
rm test //remove
mv oldname newname
cp test test1 //copy
clear
sudo //按照root执行(执行一次)
su 进入root用户权限
su -进入root用户权限并进入root目录
apt-get install package_name ubuntu安装
chmod +x package_name //给文件加可执行权限
ubuntu deb文件安装:sudo dpkg -i *.deb
文件
cat test //由第一行开始显示文件
tac test //倒序显示文件
head -2 test //显示文件头2行
tail test
nl //显示行号
wc -l file_name #显示行数量
scp file_name target_address
scp -r ... ... //递归复制整个目录下所有文件
用户&用户组
useradd -d /home/sam -m sam
磁盘管理
df -h //-h按照易读的方式展示
du -h
fdisk
yum ( for CentOS
yum list //列出所有可安装的包
yum install package_name
yum remove package_name
yum update package_name
注:Ubuntu没有yum源,所以要想使用yum安装软件必须要配置yum安装源。
在/etc/yum/repos.d/目录下创建两个文件,fedora-163.repo和fedora-updates-163.repo。
VIM
Shell
shell programming:
#!bin/bash
-----------------------------------------------------------------------------------------
输出
echo string
echo "hello world"
echo -e "hello \n world" #-e开启转义
echo -e "hello \c" #\c不换行
echo `date` #命令
printf "%5.2d %s \n" 123.4567 "123" #类似C
-----------------------------------------------------------------------------------------
字符串
my_name="Wesley"
my_name="Wesley Liu"
str='this is a string\n' #单引号中均原样输出,双引号里可以有变量/转义字符
readonly my_name #设置为只读
echo ${my_name} #使用变量名
echo ${#my_name} #字符串长度
echo ${my_name:1:4}#截取
unset my_name #删除变量
-----------------------------------------------------------------------------------------
循环语句
for loop in 1 2 3 4 5 // for((i=1;i>=5;i++))
do
echo "value is $loop"
done
while(($a<=5))
do
echo $a
let "a++"
done
until [! $a -lt 10]
do
echo $a
a=`expr $a + 1`
done
case $a in
1) echo "1";;
2) echo "2";;
*) echo "No matches";;
esac
break
continue
-----------------------------------------------------------------------------------------
函数
my_function(){
echo "input one number"
read num1
echo "input another"
read num2
return $(($num1+$num2))
}
my_function
echo "the sum is $?" #获取函数返回值
-----------------------------------------------------------------------------------------
#条件语句
if [ $a == $b ]
then
echo "a=b"
elif [ $a -lt $b ]
then
echo "a<b"
else
echo "no matcher"
fi
-----------------------------------------------------------------------------------------
数组
array_name=(value0 value1 value2 value3)
array_name[1]=value0
value=${array_name[2]}
value=${#array_name[3]}
echo ${array_name[*]}
-----------------------------------------------------------------------------------------
#这是注释
-----------------------------------------------------------------------------------------
参数传递
./shell.sh 1 2 3 #传递三个参数
echo "length: $#";
echo "file name: $0";
echo "first para: $1";
echo "second para:$2";
echo "all: $*"; #所有参数当作一个字符串输出
echo "all: $@"; #每个参数都当作一个字符串输出
-----------------------------------------------------------------------------------------
运算符
a=10
b=20
val=`expr 2 + 2` #注意空格
val=`expr $a + $b`
val=`expr $a - $b`
val=`expr $a \* $b` #乘号前转义
val=`expr $b / $a`
a=$b
if [ $a == $b ]
then # == !=
echo "a=b"
fi
if [ $a -eq $b ] #关系运算,-eq -ne -gt -lt -ge -le
then
echo "a=b"
fi
if [ $a -ge 10 -a $b -ge 20 ] #布尔运算,-o或运算 -a与运算
then
echo "correct"
fi
if [[ $a -lt 100 && $b -gt 0]] #逻辑运算 && ||
then
echo "true"
fi
a="abc"
b="def"
if [ $a = $b ] #字符串运算,= != -z
then
echo "a=b"
fi
if [ -z $a ] #a长度为0,返回true
if [ $a ] #a为空,返回true
-----------------------------------------------------------------------------------------
输入输出重定向
command > file #输出重定向
command < file #从file读取
command >>file #追加到文件末尾
/dev/null文件
-----------------------------------------------------------------------------------------
test1.sh:
url="baidu.com"
test2.sh:
. ./test1.sh 或者 source ./test1.sh
echo "url: $url"