shell,python 笔记

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命令,其实就是重命名。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值