1. 基本命令
ps -e
查看当前所有进程
mv fileName
移动 改名
cp
拷贝
reboot
重启系统
shutdown
关机
mkdir directoryName
建新目录
touch fileName
创建新文件
pgrep
查看某进程的id
grep
查看符合条件的行,例:grep one nihao.txt =====>one time is enough
read
存变量,例:read name 提示输入值,输入一个Tom
echo
输出字符串或者变量 例:输入$name is saying hello to me按回车:Tom is saying hello to me(使用单引号可以将变量名输出)
chmod 777 fileName
更改权限
tail fileName
查看文件的后十行
cat fileName
从第一行开始显示,tac 从最后一行开始显示,more分布显示档案内容,less more head od(以二进制方式显示档案内容)
vi fileName
编辑器
>
存数据
>>
添加数据
sleep 60
停止60s后再执行下一个命令
env
查看当前用户的环境变量
wget
下载命令
返回上一个目录 cu -
2. 方法示例:
checkFileExist () #函数名
{
if [ -d /esb/logs/backup/${1} ]; #if判断;${1}后面的空格不可少,注意![]内部的内容必须与其有空格格开
then#-d表示 存在这个目录,-f表示存在这个文件,-e表示存在
echo 1
else
echo 0
fi #每个if后面需接fi来结束
}
checkFileExist#直接写方法名,就可调用方法。(定义方法在上方,调用方法在下方)
3. for语句示例
for i in *#for循环
do
exist=$(checkFileExist $i) #调用函数的输出赋值给exist
if [ $exist -eq 0 ]; then#-eq为比较数值大小,-eq为等于,-gt为大于,-lt为小于
cp -r ${i} /esb/logs/backup/ #复制
echo backup /esb/tmp/logs/$i succeed!
fi
done#do之后需要done来结束
4. 算术比较运算符
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
5. 逻辑算符
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
注意:
a、if 与[ 之间必须有空格
b、[ ]与判断条件之间也必须有空格
c、]与; 之间不能有空格
6. 脚本中参数情况
名称 说明
$0 脚本名称
$1-9 脚本执行时的参数1到参数9
$! Shell最后运行的后台Process的PID
$$ Shell本身的PID(ProcessID)
$? 脚本的返回值(上一条命令得返回值,如果调用脚本后未获取,那么以后就再也获取不到了)
$# 脚本执行时,输入的参数的个数
$@ 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列表)
$* 输入的参数的具体内容(将输入的参数作为一个单词)
awk '{pattern + action}' {filenames}
在awk中,有如下关系
变量名 属性
$0 当前记录
$1~$n 当前记录的第n个字段
FS 输入字段分隔符 默认是空格
RS 输入记录分割符 默认为换行符
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始
OFS 输出字段分隔符 默认也是空格
ORS 输出的记录分隔符 默认为换行符
7. 隐藏输出结果
>/dev/null 2>&1 &
8. while语句示例
i=4
while [ $i -le 10 ]
do
i=$(($i+1))
echo "$i"
done
注意:do必须有一个done来结束它。
9. 函数、if语句示例
a=4
fun() {
if [ 1 -eq 2 ]; then
echo 1;
else if [ 2 -eq 1 ]; then
echo 2
else if [ "$a" -eq 4 ]; then
echo "a is 4"
fi
fi
fi
}
fun
注意:函数必须先定义,再使用,就是调用函数必须在函数定义之后!!
if或者else if也必须分别有一个fi来结束。
10. linux windows回车换行区别
Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
每次提交的脚本都要改成linux格式的,不然就会报错!!!
11.linux下安装的winscp语法
scp /home/ixp/qfk/victor/* ixp@22.236.180.191:/ixp/esb/cmd/victor
第一个参数:拷贝的数据源
第二个参数:拷贝至地址
12.
grep -c option file:显示文件中包含搜索内容行数,比如前面的命令表示显示 file中包含option内容的行数是几
grep -A/B/C n option file:显示文件中包含搜索内容及其后,前,前与后n行数据
tail -f -n 0 file:动态显示file文件的新增内容,注意和tail -f的区别。(tail -f默认显示10行)
eval用法
val="cat test.txt"
echo ${val}
eval ${val}
&:同时执行(左右两边的命令同时执行)
&&:&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;换句话说,“如果这个命令执行成功&&那么执行这个命令”,如 command1 & command2
grep -q:可用于if逻辑判断
-q 参数,本意是 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. 中文意思为,安静模式,不打印任何标准输出。如果有匹配的内容则立即返回状态值0
cat a.txt
a
b
hello
if grep -q hello a.txt; then
echo yes
else
echo no
fi
输出结果:yes
13. 查看文件屬性
stat fileName
touch -t 201809211805.15 fileName:修改文件的“最近修改時間”,若沒有此文件則創建一個
touch -r file1 file2: 將file2的修改時間設置為與file1相同,file1必須存在,不然會報錯;若file2不存在,則會創 建一個
14. 普通用户修改root密码
sudo passwd root
15. 查看版本号
cat /etc/issue
16. 正确输出和错误输出
运行一个命令或者脚本时,一般都会有输出,1代表正确输出,2代表错误输出,如:
sh a.sh 1>ok.txt 2>no.txt
表示运行脚本a.sh,正确输出写入到ok.txt文件中,错误写入到no.txt文件中。
17. 定时任务
crontab -l: 查看本机的定时任务
crontab -e: 编辑定时任务。
在ubuntu中,定时任务的编辑有三种编辑器可供选择,select-editor可进行选择,第三项是vi编辑器项(也是目前我的虚拟机定时任务编辑器)。
在ubuntu中,可用命令service cron status查看定时任务是否在运行(看Active项),用service cron start和service cron stop和service cron restart去开 启,关闭,重启定时任务。
18. history n
n为数字,命令表示查看n条命令的历史记录
19. 判空
a=$1
if [ "$a" = "" ]; then
return
else
echo not null
echo a: $a
fi
注意:
ubuntu中判空用"="号
AIX中判空用"="号或者"=="号都可以
总之,ubuntu和AIX系统语法有诸多差别,写命令时需要注意区分。
20. AIX专用命令
物理内存占用情况
svmon | sed -n '2p' | awk '{print "MEMORY used percent is "$3/$2*100"%"}'
换页paging space占用情况
svmon | sed -n '3p' | awk '{print "PAGING SPACE used percent is "$4/$3*100"%"}'
21. 双引号问题
变量不加双引号的话就将值内多个空格省略为1个空格
如:str="12 43";echo $str结果为12 43
再:str="12 43";echo "$str"结果为12 43
22. 关闭占用某端口的进程
A. lsof -i :端口号
B. kill -9 进程号
注意:请注意A中的空格,-i后面有空格,冒号后面无空格,A的执行结果会有一个进程号。