一、Vim相关
vim的配置文件/etc/vimrc
常用设置:
syntax on 高亮显示(syntax off)
set number 添加行号(set nonumber)
set autoindent 自动缩进(也可以是更严格的set cindent)
二、Shell相关
shell文件前通常加入#!/bin/bash,echo -n在输出时不换行
1.Shell命令路径环境变量设置文件
全局:
/etc/profile
/etc/profile.d/*
/etc/bashrc
个人:
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile
在命令行输入set可查看所有的环境变量
定义变量如var1=value1,等号两边不可以加空格,变量名为20个字符以内的数字、字母和下划线组成
相用另一个语句的输出值有两种方式,如:
var1=<code>date</code> var2=$(date)
stdin输入(<,<<)、stdout输出(>,>>) 关闭>输出set -C,开启set +C或使用>|
stderr错误输出 2>, 2>>
不论正确或错误均输出到文件中 > filename 2> &1 或直接使用 &>
管道命令 |
数学运算:
expr 5 + 4 expr 5 \* 4 #*同时是通配符,需转义
赋值时还可以使用
var1=$[5 * 4] #此处无需转义
Shell运算原生通常仅支持整数,对浮点数的支持存在问题,如需shell处理小数,可以尝试z shell(zsh)
假如不使用z shell,也可以使用管道命令加bc来进行浮点数的计算(如若系统未内置bc请自行安装),如
var1=$(echo "scale=4; 3.44 / 5" | bc) #scale用于设定精确到几位小数
使用bc可还可以用行内赋值的方法,其中EOF为自定义开始结束符,中间包含计算的语句
variable=$(bc <<EOF options statements expressions EOF )
shell中可在最后加上echo $?返回执行状态,如0为Successful completion of the command,127为Command not found,也可通过exit指令指定返回码,但是请注意返回码不能超过255
VAR1=${VAR2:-word}如果VAR2变量有值则赋值为VAR2,否则赋值为word,其中的冒号可省略
2.命令行输出带颜色文字
echo -e "\e[1;31m hello \e[33m"
\e为开始和结束,1;表示加粗显示(不加粗可改为0;或直接不写),31m为输出文字颜色,33m为结束输出颜色,m前的数字变化表示不同的颜色,如0m为黑色(不写后面\e这段可以使用$(tput sgr0),有重置终端颜色的作用),如上面的命令执行效果如下:
3.关联数组申明和赋值
declare -A array
array[index]=…
4.结构化语句
if-then
if command1 then commands elif command2 then commands else commands fi
if command也可以使用if test command或if [ command ]
在shell中作比较可使用eq, ge, gt, le, lt, ne来判断是否等于、大于等于等等,如n1 -lt n2,若n1小于等于n2则返回true
而进行数值比较和运算时通常会使用两个小括号,如if (( val1 ** 2 > val2 )),这里的** 2表示2次方;而进行字符比较或匹配时可使用两个中括号,if [[ $USER == r* ]]
case语句
case variable in pattern1 | pattern2) commands1;; pattern3) commands2;; *) default commands;; esac
for语句
for var in list do commands done
for语句中的list通常以空格来进行分隔,实际应用中可以通过双引号来标识带空格的词组为一个单元。通过在代码中设置IFS也可暂时更改分隔符,如
IFS=$'\n'
for循环还可以接受for (( a = 1; a < 10; a++ ))这种类似于其它编程语言的格式
while语句
while test command do other commands done
until语句
until test commands do other commands done
文件目录判断语句
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
-O filename 如果是文件的所有者,则为真
-G filename 如果与文件同属一个组,则为真
filename1 -nt filename2 如果 filename1比 filename2新,则为真
filename1 -ot filename2 如果 filename1比 filename2旧,则为真
脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为”1 2 3″(一起被引号包住)
$@为”1″ “2” “3”(分别被包住)
$#为3(参数数量)