shell:
输出语句:echo
条件语句,循环语句
for in ; do
done
if
fi
./某某文件,在当前目录查找
-a 等价于 and -o 等价于or && == AND || == OR
条件判断:
-gt ----大于 -ge ---------大于等于 返回true
-lt -----小于 -le ----------小于等于
-eq -----等于 -ne --------- 不等于
字符串判断相等[[ "a"="b"]]
应用变量赋值加&符号 pro = $pro
传参 $1,$2,$3 $0未执行的文件名,包括路径,1,2,3表示第几个参数
shell 不支持多维数组
array=(value1,value3,value3)
判断字符串是否为空
[[-z $str]]
判断字符串长度
${#str}
shell基本运算
expr 计算工具
例子:`expr $a+ $b`
特殊:乘要交/ `expr $a/*$b`
文件判断
[-e $var]文件存不存在
[-d $var]目录存不存在
判断是不是一个正常的文件路径和文件名
[-f $file_name]
命令行例子
while getopts "a:bdfhikl:np:s:t:uv:" OPT; do
case "$OPT" in
h)
help
exit -1
;;
a)
AGENT=$OPTARG
echo "project: $AGENT"
;;
t)
TASK=$OPTARG
echo "task: $TASK"
;;
v)
SCRIPT_VERSION=$OPTARG
;;
l)
LANGUAGE=$OPTARG
;;
s)
SUBMIT=$OPTARG
;;
p)
PROJECT_NAME=$OPTARG
;;
u)
USE_TEST_URL=true
;;
k)
SDK_LOGIN=false
;;
i)
IGNORE_UPDATE=true
;;
b)
SUBMITBUGLY=true
;;
d)
echo "Is debug: $IS_DEBUG"
IS_DEBUG=true
;;
n)
JENKINS_PACK=true
;;
f)
USE_FULL_PACKAGE=true
;;
esac
done
文件和目录
CUR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
上面上获取当前目录路径
cd /home 进入 '/ home' 目录'
cd .. 返回上一级目录
cd ../.. 返回上两级目录
cd 进入个人的主目录
cd ~user1 进入个人的主目录
cd - 返回上次所在的目录
pwd 显示工作路径
ls 查看目录中的文件
ls -F 查看目录中的文件
ls -l 显示文件和目录的详细资料
ls -a 显示隐藏文件
ls *[0-9]* 显示包含数字的文件名和目录名
tree 显示文件和目录由根目录开始的树形结构(1)
lstree 显示文件和目录由根目录开始的树形结构(2)
mkdir dir1 创建一个叫做 'dir1' 的目录'
mkdir dir1 dir2 同时创建两个目录
mkdir -p /tmp/dir1/dir2 创建一个目录树
rm -f file1 删除一个叫做 'file1' 的文件'
rmdir dir1 删除一个叫做 'dir1' 的目录'
rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容
rm -rf dir1 dir2 同时删除两个目录及它们的内容
mv dir1 new_dir 重命名/移动 一个目录
cp file1 file2 复制一个文件
cp dir/* . 复制一个目录下的所有文件到当前工作目录
cp -a /tmp/dir1 . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
cp -R dir1 dir2 复制一个目录 到新目录
ln -s file1 lnk1 创建一个指向文件或目录的软链接
ln file1 lnk1 创建一个指向文件或目录的物理链接
touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)
========================================================================
python
语法特别注意python要特别注意行与缩进
例
if true :
print("a")
print("b")
else
print("c")
print("d") =========缩进不一致会报错
多行语句,一般python一行只写一行命令,但太长了可以用/ 但[] () {} 中不需要
例子:
a = b + /
c+/
d
total =['a','b',
'c']
字符串
str = "123456789"
print(str) #输出字符串
print(str[0:-1])#输出第一个到倒数第二个所有字符串
print(str[0])#输出第一个字符
print(str[2:5])#输出从第三个开始到第五个的字符串
print(str[2:])#输出从第三个之后的所有字符串
print(str[1:5:2])#输出第二个开始到第五个,步长间隔为二的字符
pring(str*2)#输出两遍
print(str+"sssss")#字符串拼接
1.一行中最多显示一个语句,多个用;隔开
import sys;x="sssss'
import 与 from...import
用import 或 from...import 来导入相应吗,模块
命令行参数
sys.argv 是命令行列表
sys.argv[1]第一个参数...类似于shell$1
例子参考
opts,args = getopt.getopt(sys.argv[1:],'-a:-b-d-f-h-i-k-l:-n-p:-s:-t:-u-v:')
for opt_name,opt_value in opts:
if opt_name in ('-h'):
help()
sys.exit()
if opt_name in ('-a'):
AGENT = opt_value
print("project: " + AGENT)
if opt_name in ('-t'):
TASK = opt_value
print("task: " + TASK)
if opt_name in ('-v'):
SCRIPT_VERSION = opt_value
if opt_name in ('-l'):
LANGUAGE = opt_value
if opt_name in ('-s'):
SUBMIT = int(opt_value)
if opt_name in ('-p'):
PROJECT_NAME = opt_value
if opt_name in ('-u'):
USE_TEST_URL = True
if opt_name in ('-k'):
SDK_LOGIN = False
if opt_name in ('-i'):
IGNORE_UPDATE = True
if opt_name in ('-b'):
SUBMITBUGLY = True
if opt_name in ('-d'):
IS_DEBUG = True
print("Is debug: " + str(IS_DEBUG))
if opt_name in ('-n'):
JENKINS_PACK = True
if opt_name in ('-f'):
USE_FULL_PACKAGE = True
在就python
列表[a,b,c,d] 元组(a,b,c,d),元素不能改
集合{a,b,c,d} 字典{key,value}
相关模块命令
import os
import sys
import shutil
'''
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
In [23]: os.stat('路飞作业')
Out[23]: stat_result(st_mode=16893, st_ino=933171L, st_dev=43, st_nlink=3,
st_uid=1000, st_gid=1000, st_size=4096L,
st_atime=1523518431, st_mtime=1523517556, st_ctime=1523517556)
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command).read() 运行shell命令,获取执行结果
In [14]: os.popen('df -h').read()
Out[14]: 'Filesystem Size Used Avail Use% Mounted on\nudev 482M 0 482M 0% /dev\ntmpfs 100M 3.3M 97M 4% /run\n/dev/sda1 19G 3.8G 14G 22% /\ntmpfs 500M 4.0K 500M 1% /dev/shm\ntmpfs 5.0M 0 5.0M 0% /run/lock\ntmpfs 500M 0 500M 0% /sys/fs/cgroup\ntmpfs 100M 0 100M 0% /run/user/1000\n/home/pyvip/.Private 19G 3.8G 14G 22% /home/pyvip\n'
os.environ 获取系统环境变量
os.kill(10884,signal.SIGKILL)杀死进程:
os.path
os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
'''
print(sys.argv) #实现从程序外部向程序传递参数。(在命令行里面输打开路径执行)
name=sys.argv[1] #命令行参数List,第一个元素是程序的本身路径
password = sys.argv[2]
if name=='yy' and password == '123':
print('继续执行程序')
else:
exit()
sys.exit()#退出程序,正常退出时exit(0)
print(sys.version)#获取python解释的版本信息
print(sys.maxsize)#最大能表示的数,与系统多少位有关
print(sys.path)#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
print(sys.platform)#返回操作系统平台名称
sys.getrecursionlimit() #获取最大递归层数
sys.setrecursionlimit(1200) #设置最大递归层数
sys.getdefaultencoding() #获取解释器默认编码
sys.getfilesystemencoding #获取内存数据存到文件里的默认编码
shutil.copyfileobj(fsrc, fdst[, length])#将文件内容拷贝到另一个文件中
shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在
shutil.copymode('f1.log', 'f2.log') #目标文件必须存在,仅copy权限,不更改文件内容,组和用户。
shutil.copy('f1.log', 'f2.log')#复制文件的内容以及权限,先copyfile后copymode
shutil.copystat(src,dst) #复制所有的状态信息,包括权限,组,用户,时间等
shutil.copytree(src, dst) #递归的复制文件内容及状态信息
shutil.rmtree('folder1')#递归地删除文件
shutil.move('folder1', 'folder3')#递归的移动文件,它类似mv命令,其实就是重命名。