Linux python3安装/shell脚本/if/循环/函数
2021-07-11 12:07
                         标签:基本语法   hellip   dem   装包   开头   inpu   move   代码   条件测试    安装包: 基础包 检测平台: 编译: 安装: 设置快捷键: 步骤:  提高写程序的效率,补全功能是必不可少的。对于python,介绍vim编辑下和python交互模式这两种linux常用环境下的补全。     简单python关键词补全     python 函数补全带括号     python 模块补全     python 模块内函数,变量补全 安装步骤: cd ~   wget https://github.com/rkulla/pydiction/archive/master.zip unzip master.zip mkdir -pv ~/.vim/tools/pydiction cp -r pydiction-master/after ~/.vim cp pydiction-master/complete-dict ~/.vim/tools/pydiction 完成后确保有如下结构即可: 修改用户vim配置文件: 测试补全功能: vim进入新建test.py,导入sys模块,按Tab键,可发现已经有补全功能了。 python交互模式的自动补全 编写tab补全脚本: 修改系统环境变量 PYTHONSTARTUP:重要的Python环境变量之一,包含了在每次启动的解释器时执行Python源代码的初始化文件的路径。这个文件通常命名为.pythonrc.py。        !$:调用上一个命令的最后一个参数。   shell是一个在操作系统之上的软件,linux登录后默认就进入这个软件 shell是一个命令的解释器,能解析用户所输入的命令 (ls cp rm pwd 等等) shell拥有自己内建的命令集 bash(Bourne Again shell )是shell的扩展,并且完全兼容shell(类似vim与vi的关系) 变量以字母或者下划线开头,后面接任意长度的字母、数字和下划线,如 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)   判断当前用户是否是root,不是的话退出,如果是的话显示一下root的登录shell 命令行输入任意三个整数,判断最大的数 用Shell脚本,判断/bin/nohup是不是可执行文件,如果是将其拷贝到/tmpdir目录下,判断如果/tmpdir目录不存在,自动创建。 打印1-10 请用for创建100个文件,文件名为ps1-ps100 请用for把ps1-ps100,分别创建100个tar包,命名为ps1.tar-ps100.tar 死循环 函数一般定义在shell脚本中使用   判断用户如果不存在就创建用户 ,如果存在就打印用户id  写一个脚本模拟Linux登录     写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。     编写shell脚本,把/root/目录下的所有目录(只需要一级)拷贝到/tmp/目录下     请用shell编写一个等腰三角形,接收用户输入的数字   Linux python3安装/shell脚本/if/循环/函数 标签:基本语法   hellip   dem   装包   开头   inpu   move   代码   条件测试    原文地址:https://www.cnblogs.com/chenxuming/p/9550957.htmlpython3安装
安装过程
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编辑
pythonTab快捷键命令补全
vim下的补全

[root@node1 ~]# vim ~/.vimrc
filetype plugin on
let g:pydiction_location=‘~/.vim/tools/pydiction/complete-dict‘
python交互模式的自动补全
[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 ~]#
常见问题
2、module not found error no module named ‘_ctypes‘ make *** error 1
yum install libffi-devel -y
3、编译安装python3,删除键不能用
yum install readline-devel
重新编译安装就可以了
4、pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
yum install openssl openssl-devel -y 
shell脚本
什么是shell?
bash
第一个shell脚本
shell变量/赋值
变量
特殊变量
命令替换和赋值
命令替换和管道的区别?
算数运算和赋值
首先,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 $1 
echo $(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 $sum
2.
#!/bin/bash
file1=$1
file2=$2
dir=`date +%Y%m%d`
mkdir $dir
cp $file1 $dir&&echo $?
cp $file2 $dir&&echo $?if语句控制
if 判断
在shell中if条件判断语句和我们的C、python等语言不同,shell的if语句条件必须用[ ]括起来,另外[ ]里外都需要用空格与周围隔开(例如[ a == b ]),否则会报错
if基本语法  
    if [ 表达式 ];then    ;fi
    或
    if command;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练习
id=`id -u`
if [ $id -eq 0 ]
then
grep "^root" /etc/passwd|cut -d: -f7
else
exit
fi
MAX=$1
if [ $2 -ge $1 ]; then
    MAX=$2
fi
if [ $3 -ge $MAX ]; then
         MAX=$3
fi
echo "the max number is $MAX."
if [ -x /bin/nohup ]
    then 
    if [ ! -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循环练习
[root@localhost /]# for i in `seq 10`
> do 
> echo $i
> done
for i in /etc/crontab /etc/inittab ; do cat $i ; done 循环打印文件
#!/bin/bash
for i in `seq 100`
  do
         touch pa$i
  done
 #!/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循环
函数
函数语法
function name ()
{
}
shell函数可以带function关键字,也可以不带
shell函数内可以加return返回值,也可以不带,如果不带就以最后一条命令运行结果,作为返回值。
例如
demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"
综合练习
 1 #!/bin/bash
  2 if [ $# -ne 1 ];then
  3    echo "args errors,should hava one arg"
  4    exit 1
  5 fi
  6 user=$1
  7 if grep -q "^$user" /etc/passwd
  8 then
  9    echo "$user is alive,id is $(id -u $user)"
 10 else
 11    echo "$user is not alived,creating"
 12    useradd $user
 13    if [ $? -eq 0 ]
 14    then
 15     echo "create user success"
 16    else
 17         echo "create user failed"
 18    fi
 19 fi
while read -p "localhost login: " user
do
 if [[ $user == "" ]]
 then
    continue
 fi
 read -s -p "Password: " passwd
 if [ $user == "root" -a  X$passwd == X"123456" ]
 then
           echo "" 
   while read -p "[$user@myterminal ~]#" cmd
   do
      $cmd
    done
 else
           echo "Login incorrect"
 fi 
 done
  1 #!/bin/bash
  2 if [ $# -eq 0 ]
  3 then
  4    echo "must have a arg at least"
  5    exit 1
  6 fi
  7 
  8 file=$1
  9 dest=/tmp
 10 if [ ! -f $file ]
 11 then
 12    echo "$file doesn‘t exist"
 13    exit 1
 14 else
 15    cp $file $dest/
 16    if  [ $? -eq 0 ]
 17    then
 18       echo "backup success,deleting..."
 19       rm $file
 20    else
 21       echo "backup failed,do not rm $file"
dir=‘/root‘
subdir=`ls /root`
for i in $subdir
 do
    if [ -d $dir/$i ]
    then
 cp -r $dir/$i /tmp/
    fi
 done
left=$(($1-1))
count=1
move=$left
or i in `seq $1`
 do
   for j in `seq $move`;do
     echo -n " "
   done
   for k in `seq $count`;do
     echo -n "*"
   done
   for j in `seq $move`;do
     echo -n " "
   done
   echo 
   count=$((count+2))
   move=$((move-1))
 done
文章标题:Linux python3安装/shell脚本/if/循环/函数
文章链接:http://soscw.com/essay/103703.html