我是靠谱客的博主 聪明乐曲,最近开发中收集的这篇文章主要介绍python3.5.2 shell_Linux python3安装/shell脚本/if/循环/函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

python3安装

安装过程

安装包:

wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz

tar -xvf Python-3.7.0.tgz #解压

基础包

1、基础yum包

yum install gcc

yum install zlib

yum install zlib-devel

yum install libffi-devel -y

yum install openssl openssl-devel -y

检测平台:

./configure --prefix=/usr/local/python3/

编译:

make

安装:

make install

设置快捷键:

ln -s /usr/local/python3/bin/python3 /bin/python3#设置后可以用python3进入python编辑

步骤:

安装python3的包 并解压

安装依赖包

检测平台 查看是否有问题 (echo $? 如果是0执行成功 非0执行失败)

编译 查看是否能够编译(echo $? 如果是0执行成功 非0执行失败)

最后安装  (echo $? 如果是0执行成功 非0执行失败)

设置快捷键

pythonTab快捷键命令补全

提高写程序的效率,补全功能是必不可少的。对于python,介绍vim编辑下和python交互模式这两种linux常用环境下的补全。

vim下的补全

简单python关键词补全

python 函数补全带括号

python 模块补全

python 模块内函数,变量补全

安装步骤:

cd ~

unzip master.zip

mkdir -pv ~/.vim/tools/pydiction

cp -r pydiction-master/after ~/.vim

cp pydiction-master/complete-dict ~/.vim/tools/pydiction

完成后确保有如下结构即可:

1359827-20180828204131969-119361342.png

修改用户vim配置文件:

[root@node1 ~]#vim ~/.vimrc

filetype plugin on

let g:pydiction_location='~/.vim/tools/pydiction/complete-dict'

测试补全功能:

vim进入新建test.py,导入sys模块,按Tab键,可发现已经有补全功能了。

python交互模式的自动补全

python交互模式的自动补全

编写tab补全脚本:

[root@node1 ~]#cat ~/.pythonTab.py

import readline, rlcompleter; readline.parse_and_bind("tab: complete")

[root@node1~]#

修改系统环境变量

[root@node1 ~]#cat /etc/profile.d/tab.sh

export PYTHONSTARTUP=~/.pythonTab.py

[root@node1~]#

[root@node1 ~]#. !$

. /etc/profile.d/tab.sh

[root@node1~]#

PYTHONSTARTUP:重要的Python环境变量之一,包含了在每次启动的解释器时执行Python源代码的初始化文件的路径。这个文件通常命名为.pythonrc.py。

!$:调用上一个命令的最后一个参数。

常见问题

2、module not found error no module named '_ctypes' make *** error 1yum install libffi-devel -y3、编译安装python3,删除键不能用

yum install readline-devel

重新编译安装就可以了4、pip is configured with locations that require TLS/SSL, however the ssl module in Python is notavailable.

yum install openssl openssl-devel -y

shell脚本

什么是shell?

shell是一个在操作系统之上的软件,linux登录后默认就进入这个软件 shell是一个命令的解释器,能解析用户所输入的命令 (ls cp rm pwd 等等) shell拥有自己内建的命令集

bash

bash(Bourne Again shell )是shell的扩展,并且完全兼容shell(类似vim与vi的关系)

第一个shell脚本

第一步:使用文本编辑器(vim)来创建文本文件(一般以.sh结尾)

第一行必须包括shell声明:#!

#!/bin/bash (告诉系统执行的时候要调用什么解释器)

#开头的是shell的注释

第二步:输入命令 echo “hello world”

第三步:给文件添加执行权限 chmod 755 hello.sh

第四步 运行脚本

第一种方式:指定脚本的绝对或相对路径来运行 ./hello.sh

第二种方式:直接运行解释器,将脚本作为参数运行 sh hello.sh

常见问题 -bash: ./hello.sh: Permission denied 没有赋予执行权限

shell变量/赋值

变量

变量以字母或者下划线开头,后面接任意长度的字母、数字和下划线,如 var=linux 变量的引用需要在前面加$符号 ,

如echo “$var” 如果变量的值中间有空格,需要用双引号引起来,如var=“hello world”

单双引号区别:

单引号变量不解析

双引号变量可以解析

特殊变量

位置参数 $n ,n为数字

$0为命令本身

$1-$9是命令行第一道第9个参数

$* 代表所有参数

$# 代表参数的个数

$? 代表上一个命令的返回状态

命令替换和赋值

命令替换的格式: $(cmd) 或者 `cmd` # ``为tab上的反引号

在执行命令的时候,会先将$(cmd) 或者 `cmd` 里的命令先执行一遍,再将结果返回到原来的命令中

var=$(uname -a) echo $var

命令替换和管道的区别?

命令替换是将一个命令的输出作为另外一个命令的参数,而管道是将命令的输出作为下一个命令的标准输入

如 date +%Y|touch touch $(date +%Y)

算数运算和赋值

首先,echo 1+2,没有输出3。因为shell需要特殊的格式来进行算数运算

方式一 ((i=$j+$k))

方式二 let i=$j+$k

赋值

var=$(($i+$j))

echo $var

sh lufei.sh ni(位置参数)

lufei.sh:#!/bin/bash

echo $1echo $(id) id的执行结果作为echo的参数

echo `id` 反引号 跟上面一样

多个命令分隔符

分号(;)是shell的命令分隔符, 让同一行的命令能够顺序执行。如echo 1 ;echo 2

课上小例子

1、命令行输入2个数字,写个小程序,计算2个数字的和,并输出结果2、命令行输入2个文件,写个小程序,把这两个文件都拷贝到以年月日命名的目录下,并输出每次拷贝的执行结果 date +%Y%m%d

1.

#!/bin/bash

let sum=$1+$2

echo $sum2.#!/bin/bash

file1=$1

file2=$2

dir=`date +%Y%m%d`mkdir $dircp $file1 $dir&&echo $?cp $file2 $dir&&echo $?

if语句控制

if 判断

在shell中if条件判断语句和我们的C、python等语言不同,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a ==b ]),否则会报错

if基本语法if[ 表达式 ];then ;fi

或ifcommand;then ;fi

其中[ 表达式 ] 等同于test命令,man test

条件测试类型

整数测试

-eq 测试两个整数是否相等-ne 测试两个整数是否不等-gt 测试一个数是否大于另一个数-lt 测试一个数是否小于另一个数-ge 大于或等于-le 小于或等于

字符串测试(两边要有空格)

==等于!=不等>大于<小于-z string 测试指定字符是否为空,空着真,非空为假-n string 测试指定字符串是否为不空,空为假 非空为真

文件测试

-e FILE 测试文件是否存在-f file 测试文件是否为普通文件-d file 测试指定路径是否为目录-r file 测试文件对当前用户是否可读-w file 测试文件对当前用户是否可写-x file 测试文件对当前用户是都可执行

组合测试

-a: and

-o: or!: 非

&&运算符

command1 &&command2&&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;命令之间使用 &&连接,实现逻辑与的功能。

如test-f /var/log/messages && echo ok

||运算符

command1 ||command2||则与&&相反。如果||左边的命令未执行成功,那么||右边的命令就会执行

如 test-f 123 || echo error

if练习

判断当前用户是否是root,不是的话退出,如果是的话显示一下root的登录shell

id=`id -u`if [ $id -eq 0 ]

then

grep"^root" /etc/passwd|cut -d: -f7elseexit

fi

命令行输入任意三个整数,判断最大的数

MAX=$1

if [ $2 -ge $1]; then

MAX=$2fiif [ $3 -ge $MAX ]; then

MAX=$3fi

echo"the max number is $MAX."

用Shell脚本,判断/bin/nohup是不是可执行文件,如果是将其拷贝到/tmpdir目录下,判断如果/tmpdir目录不存在,自动创建。

if [ -x /bin/nohup ]

thenif [ ! -d /tmpdir ]

then

mkdir/tmpdir

fi

cp/bin/nohup /tmpdir

fi

循环

for语法

for arg in[list]

do

command…

done

list列表可以是空格分割的字符串,也可以是命令替换返回的结果

如for v in /etc/sudoers /etc/resolv.conf

do ls-l $v

done

for循环练习

打印1-10

[root@localhost /]#for i in `seq 10`

>do>echo $i> done

for i in /etc/crontab /etc/inittab ; do cat $i ; done 循环打印文件

请用for创建100个文件,文件名为ps1-ps100

#!/bin/bash

for i in `seq 100`

do

touch pa$i

done

请用for把ps1-ps100,分别创建100个tar包,命名为ps1.tar-ps100.tar

#!/bin/bash

for i in `ls pa*`

do

tar-cvf $i.tar $i

done

while循环

while基本语法

while[condition]

do

command...

done

#输入名字 打印一个随机数字

while read -p "please input a name"name;

do

echo $name;

done

死循环

while :; do echo true ; done 一句while循环

函数

函数语法

函数一般定义在shell脚本中使用

function name ()

{

}

shell函数可以带function关键字,也可以不带

shell函数内可以加return返回值,也可以不带,如果不带就以最后一条命令运行结果,作为返回值。

例如

demoFun(){

echo"这是我的第一个 shell 函数!"}

echo"-----函数开始执行-----"demoFun

echo"-----函数执行完毕-----"

综合练习

判断用户如果不存在就创建用户 ,如果存在就打印用户id

1 #!/bin/bash

2 if [ $#-ne 1 ];then

3 echo "args errors,should hava one arg"

4 exit 1

5fi6 user=$1

7 if grep -q "^$user" /etc/passwd8then9 echo "$user is alive,id is $(id -u $user)"

10 else

11 echo "$user is not alived,creating"

12useradd $user13 if [ $? -eq 0 ]14then15 echo "create user success"

16 else

17 echo "create user failed"

18fi19 fi

写一个脚本模拟Linux登录

while read -p "localhost login:"user

doif [[ $user == ""]]

thencontinuefi

read-s -p "Password:"passwdif [ $user == "root" -a X$passwd == X"123456"]

then

echo""

while read -p "[$user@myterminal ~]#"cmd

do

$cmd

doneelseecho"Login incorrect"fi

done

写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。

1 #!/bin/bash

2 if [ $#-eq 0 ]

3then4 echo "must have a arg at least"

5 exit 1

6fi7

8 file=$1

9 dest=/tmp10 if [ ! -f $file ]11then12 echo "$file doesn't exist"

13 exit 1

14 else

15 cp $file $dest/

16 if [ $? -eq 0 ]17then18 echo "backup success,deleting..."

19rm $file20 else

21 echo "backup failed,do not rm $file"

编写shell脚本,把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下

dir='/root'subdir=`ls /root`for i in$subdir

doif [ -d $dir/$i ]

then

cp-r $dir/$i /tmp/fi

done

请用shell编写一个等腰三角形,接收用户输入的数字

left=$(($1-1))

count=1move=$leftor i in `seq $1`

dofor j in`seq $move`;do

echo-n " "donefor k in`seq $count`;do

echo-n "*"donefor j in`seq $move`;do

echo-n " "done

echo

count=$((count+2))

move=$((move-1))

done

最后

以上就是聪明乐曲为你收集整理的python3.5.2 shell_Linux python3安装/shell脚本/if/循环/函数的全部内容,希望文章能够帮你解决python3.5.2 shell_Linux python3安装/shell脚本/if/循环/函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部