Shell&Python
码莎拉蒂 .
这个作者很懒,什么都没留下…
展开
-
windows执行python文件提示SyntaxError: Non-ASCII character ‘\xe9‘ in file 1.py on line 7, but no encoding d
1、问题windows环境下执行python文件,提示错误如下SyntaxError: Non-ASCII character '\xe9' in file 1.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details2、解决办法py文件头部加上#coding=utf-8...原创 2021-11-29 20:16:25 · 2493 阅读 · 0 评论 -
linux shell之删除当前文件夹不包含文件1和文件2的其他所有文件
1 问题删除当前文件夹不包含文件1和文件2的其他所有文件,这个当前文件夹里面可以包含子文件夹,然后子文件夹里面也有文件1和文件2,但是这里的文件1和文件2也不应该被删除。2 解决办法 可以用如下shell命令都行find . -type f -not -name "1.txt" -not -name "2.txt" -exec rm -rf {} \;...原创 2019-10-17 22:01:23 · 2549 阅读 · 0 评论 -
linux shell之find高级点的用法
1 查找当前目录a.txt和b.txt文件,下面的o是or的意思, -iname是忽略大小写的意思(-o -iname)find . -iname a.txt -o -iname b.txt2查找当前目录下的除了a.txt的文件(!)find . ! -iname "a.txt"3查看当前目前下的目录(-type d)find . -type d...原创 2019-03-14 23:43:36 · 5481 阅读 · 5 评论 -
linux shell之得到当前路径下的目录
方法1find . -type d 方法2^是开头开头得意思,然后d是dictionary意思ls -al | grep ^d方法3ls -F | grep /$方法4ls -d */...原创 2019-03-15 20:30:55 · 3970 阅读 · 0 评论 -
linux shell之xargs 、tr、sha1sum、head、tail一般使用
1 xargs命令有点类似-exec命令1)删除当前目录下面的c文件find . -name "*.c" | xargs rm2)统计当前c文件里面的代码行数find . -name "*.c" | xargs wc -l2 tr命令替换命令1)把大小替换成小写echo "HELLO WORD" | tr 'A-Z' 'a-z'...原创 2019-03-15 21:47:04 · 2781 阅读 · 0 评论 -
linux shell之pushd、popd、dirs
1问题我们有时候需要保存多个路径,上下键切换不方便,用cd-只能到上个目录,我们可以用dirs和pushd和popd2dirs、pushd、popddirs: 这个命令显示栈里面所有的路径,一定会包含当前路径,常用参数如下dirs -v 显示栈里面的所有路径和下标,通过下标,我们可以用pushd +下标到这个目录,然后pop...原创 2019-03-15 23:59:58 · 2643 阅读 · 0 评论 -
linux之sed命令
1sed命令(stream edit)我们一般用来替换文件内容2 常用方法1)、比如一般用sed命令替换文件内容,这里参数-i的意思是操作后直接保存在file里面去了sed -i 's/pattern/replace_str/' file比如我们把sed.txt文件里面的chenyu替换成chencat sed.txtchenyuch...原创 2019-03-17 00:27:19 · 2242 阅读 · 0 评论 -
linux shell之awk
1 awkawk 是一款设计用于数据流的工具,awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处awk 脚本的结构基本如下所示:awk ' BEGIN{print "start" } pattern { commands } END{ print "end" } fileawk 脚本通常由3部分组成。 BEGIN , END 和带模式匹配选项的常见语句块。这3个部...原创 2019-03-17 01:20:38 · 2187 阅读 · 0 评论 -
linux shell之控制台打印各种颜色字体和背景
1 问题控制台打印各种颜色字体和背景字体颜色#30:黑#31:红#32:绿#33:黄#34:蓝色#35:紫色#36:深绿#37:白色背景颜色#40:黑#41:深红#42:绿#43:黄色#44:蓝色#45:紫色#46:深绿#47:白色echo -e "\e[43;35m chenyu\e[0m hello word"...原创 2019-03-12 22:40:09 · 3022 阅读 · 0 评论 -
linux shell之paste合并文件和找到匹配的文件里面替换内容(find和-exec或xargs组合)
1问题1)合并2个文件,这里用paste命令2)找到匹配的文件里面替换内容,这里用find 和 -exec或xargs命令组合2 实现1)合并2个文件,这里用paste命令,我们在paste后面加参数-d 然后加" ",表示文件之间内容隔着空格,“,”表示文件之间内容隔着内容cat 1.txt 123456cat 2.txtcheny...原创 2019-03-17 23:45:31 · 2778 阅读 · 0 评论 -
linux shell之把文本里面的;替换成\n格式输出
1 问题一个文本里面很多中间很多;然后,现在需要把;替换成\n,然后换行打印出来比如文件1.txtname=chenyu;sex=man;age=27我们可以用tr命题替换,第一个参数是需要替换的内容,第二个参数是将要替换的内容2 实现cat 1.txt | tr '\;' '\n'3 运行结果name=ch...原创 2019-03-12 23:08:56 · 5507 阅读 · 0 评论 -
linux shell之字符串的更具字符分割和删除字符和文本内容的删除以及内容是否匹配成功
1 字符串的更具字符分割1) xargs分割echo "chenyu*hello*word" | xargs -d "*"chenyu hello word2)awk分割echo "chenyu*hello*word" | awk -F "*" '{print $1}'chenyu2字符串的删除字符1)用tr命令ech...原创 2019-03-18 12:29:49 · 3954 阅读 · 0 评论 -
linux shell之cut命令
1 cut简单介绍我们一般用的就是获取文本一行的的第几个到第几个字符2 常见使用1)cut -c start-end file这里就是获取start到end之间的字符比如我们这里有文本1.txtcat 1.txt chenyucut -c 1-3 1.txtche2) cut -c start file这...原创 2019-06-03 20:51:49 · 2841 阅读 · 0 评论 -
linux shell之替换目录下包含关键字所有文本里面的内容
1 问题替换目录下包含关键字所有文本里面的内容比如在目录 /root/chenyu/cy/下,把包含文本/A/B C替换成文本E=F2 解决办法命令如下grep -Rl /A/B\ C /root/chenyu/c* | xargs sed -i 's#/A/B\ C#E=F#g'我们也可以这样grep -Rl /A/B\ C /root/c...原创 2019-06-11 12:17:35 · 5544 阅读 · 0 评论 -
linux shell之字符串的比较
1 字符串常用的比较字符串相等[[ $str1 == $str2 ]]字符串不相等[[ $str1 != $str2 ]]字符串大小比较[[ $str1 >$str2 ]]字符串等于空[[ -z $str2 ]]字符串不等于空[[ -n$str2 ]]用test代替[]if test $str1 == $str2...原创 2019-03-13 23:29:25 · 21312 阅读 · 0 评论 -
linux shell之通过标识测试文件系统属性
1通过标识测试文件系统属性[ -f $file_var ] :如果给定的变量包含正常的文件路径或文件名,则返回真。[ -x $var ] :如果给定的变量包含的文件可执行,则返回真。[ -d $var ] :如果给定的变量包含的是目录,则返回真。[ -e $var ] :如果给定的变量包含的文件存在,则返回真。[ -c $var ] :如果给定的变量包含的是一个字符设备文件的路径,...原创 2019-03-13 23:22:32 · 2292 阅读 · 0 评论 -
linux shell之IFS分割字符串
1 问题我们有段字符串data="chenyu:chenzixuan:chenzi",我们需要通过:分割,我们可以采用IFS我们可以采用下面的模板oldIFS=$IFSIFS=":"for item in $data;do *******doneIFS=$oldIFS2 代码实现#/bin/bashdata...原创 2019-03-13 22:43:07 · 3885 阅读 · 0 评论 -
shell基础二
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:$echo $$运行结果29949特殊变量列表变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字,表转载 2016-09-24 18:15:06 · 2419 阅读 · 0 评论 -
shell基础三
如果表达式中包含特殊字符,Shell 将会进行替换。例如,在双引号中使用变量就是一种替换,转义字符也是一种替换。举个例子:#!/bin/basha=10echo -e "Value of a is $a \n"运行结果:Value of a is 10这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:Value of a is 1转载 2016-09-24 18:16:23 · 2390 阅读 · 0 评论 -
shell基础四
Bash 支持很多运算符,包括算数运算符、关系运算符、布尔运算符、字符串运算符和文件测试运算符。原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加:#!/bin/bashval=`expr 2 + 2`echo "Total v转载 2016-09-24 18:17:48 · 2430 阅读 · 0 评论 -
shell之什么时候使用shell以及最简单的shell程序
因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。因此,之所以要使用Shell脚本是基于:简单性:Shell是一个高级语言;通过它,你可以简洁地表达复杂的操作。可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。开发容易:可以在短时间内完成一个功能强大又妤用的脚本。转载 2016-09-21 21:17:36 · 3708 阅读 · 0 评论 -
shell之a+b求和l脚本的三种写法
第一种#!/bin/basha=5b=10c=$[ $a+$b ]echo ${c}第二种#!/bin/basha=5b=10let "c=a+b"echo ${c}第三种#!/bin/basha=5b=10((c=a+b))echo ${c}原创 2016-09-26 20:01:50 · 12195 阅读 · 2 评论 -
python之解析最简单的xml
1、person.xm文件如下2、用xml.etree.ElementTree解析person.xml的实现3、效果如下4、总结python里面的list = []相当于java里面的list,然后可以改变其中的值。原创 2017-08-06 01:10:21 · 7125 阅读 · 0 评论 -
Android之在linux终端执行shell脚本文件(通过aapt)得到apk包名
1、问题我们在ubuntu上经常想看到apk的包名,然后在终端通过pidcat.py packageName 过滤日志,我们常用的办法手机连接电脑,然后打开这个appadb shell dumpsys activity top我们可以看到当前activity的名字和包名,但是如果这是一个apk呢?还没有运行呢?我们可以通过工具aapt命令看,也可以通过jadx反编译看包名,这里写个非常简单的she...原创 2018-05-23 23:53:56 · 4418 阅读 · 0 评论 -
Android之在linux终端执行shell脚本直接打印当前运行app的日志
1、问题我们一般很多时候会需要在ubuntu终端上打印当前运行app的日志,我们一般常见的做法是1)、获取包名 打开当前运行的app,然后输入如下命令,然后在第一行TASK后面的就可以看到包名adb shell dumpsys activity top2)、我们的终端安装了pidcat.py脚本,然后执行如下的命令就可以打印当前运行app的全日志,pidcat.py packageNam...原创 2018-05-24 22:56:43 · 4306 阅读 · 0 评论 -
python之sys.argv获取命令行的参数
1、问题执行python文件,我们怎么获取在终端获取输入参数,我们可以使用sys.argv,特么之前不是不熟悉2、代码#!/usr/bin/pythonimport sysif __name__ == '__main__': first = sys.argv[0:] print first second = sys.argv[1:] print second name = sys...原创 2018-06-23 21:37:44 · 8241 阅读 · 0 评论 -
shell之通过if [ $? != 0 ]判断上次程序是否执行成功
1、问题在shell脚本里面有时候我们需要判断上一个程序有没有执行成功,比如用chomd 777 file命令,我们可以用通过if [ $? != 0 ]判断2、代码实现#!/bin/bashecho "chenyu"#这里不能写成if [$? != 0]或者if [$? != 0 ]或者if[ $? != 0]if [ $? != 0 ]; then echo "last ex...原创 2018-06-23 22:16:49 · 37609 阅读 · 3 评论 -
shell之用command在终端判断是否存在这个命令
1、command解释command命令在shell脚本里面,如果发现有个函数和我们需要执行的命令同名,我们可以用command用来强制执行后面的命令,而不是同名函数,然后我们也可以在shell脚本里面判断莫个命令是否存在,我们平时一般用which命令也行。2、测试代码#!/bin/bashfunction pwd(){ echo "I am pwd function"}ech...原创 2018-06-23 22:53:25 · 6605 阅读 · 0 评论 -
python之闭包
1 闭包概念绑定了函数内部引用的所有变量,把它引用的东西都放在一个上下文中“包”了起来2 闭包的Demo理解需求:比如我们要实现2个函数,每个函数有个参数,然后现在需要实现这2个函数参数的相加功能1) 不用闭包python普通实现#!/usr/bin/env pythondef plus_first(first): return firs...原创 2018-11-24 18:13:48 · 2147 阅读 · 0 评论 -
linux shell之$?和得到联合使用命令的结果
1 介绍$?命令:可以得到上次执行命令的值,如果返回时0,说明执行成功,如果是其它数说明命令执行失败联合使用命令:我们一般这样使用value=$(cat 1.txt | grep chenyu)echo $value2 代码测试#/bin/bashpwd="pwd"ll="l+"$pwdif [ $? -eq 0 ];then...原创 2019-03-13 22:31:51 · 2410 阅读 · 0 评论 -
shell基础一
Shell支持自定义变量。定义变量定义变量时,变量名不加美元符号($),如:variableName="value"注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help转载 2016-09-24 18:13:27 · 2481 阅读 · 0 评论