菜鸟学Linux 第070篇笔记 array,trap,getopts,VNC

简介:

菜鸟学Linux 第070篇笔记 array,trap,getopts,VNC



array


变量:内容空间,字符型



声名数组

declare -a AA


数组赋值方法

AA[0]=jerry

AA[1]=tom

AA[2]=windy 

AA[6]=natasha


AA=(jerry tom wendy natasha)

AA=([0]=jerry [1]=tom [2]=wendy [6]=natasha)



数组如何引用

echo ${AA[1]}   输出该数组第二个元素的值


echo ${#AA[0]} 输出该数组第一个元素值的字符长度


echo ${#AA[*]} 输出该数组一共包含多少元素(不包含元素值为空的元素)

echo ${#AA[@]} 输出该数组一共包含多少元素(不包含元素值为空的元素)





信号捕捉并且实现特殊处理 trap

(在脚本运行时,当用户为脚本输入某信号时,此命令捕捉到该信号并执行所定义的动作)

1 SIGHUP

2 SIGINT

9 SIGKILL

15 SIGTERM

18 SIGCONT

19 SIGSTOP


此为信号捕捉一个简单的脚本(当用户想中断该脚本时Ctrl+C trap就捕捉到该信号)

#!/bin/bash

#

function CLEAN() {

  rm -rf /var/tmp/test

  echo "Cleaning..."

}

trap 'CLEAN; exit 5' INT


mkdir -p /var/tmp/test

while true; do

  touch /var/tmp/test/file-`date +%F-%H-%M-%S`

  sleep 2

done




再学一个脚本参数

1. getopts 此命令可以为脚本后加选项,并且可以在选项后加参数的值

2. 脚本中getopts后引号所引起的为该脚本可接的选项

3. 引号中的第一个冒号可以去除getopts所提示的错误信息

4. 引号中最后的一个引号表示b选项后可以跟参数,如要给d也加参数则在d后加入:

5. 特殊变量 OPTARG 即可调用其后所跟的参数

6. 特殊变量 OPTIND 选项索引 可以将选项移动到最后一个选项

#vim ./opttest.sh

以下为脚本内容

#!/bin/bash

#

getopts ":db:" OPT

echo $OPT

echo $OPTARG

保存退出


执行该脚本时所产生的信息

# ./opttest.sh -b "123"

b

123


# ./opttest.sh -d

d


getopts:

OPTARG

OPTIND




为脚本生成首部信息

1. 先检测后部所跟的脚本名称是否为已存在文件

   如果文件存在并且文件里有内容则打开,(而不进行生成脚本首部)

2. 生成脚本首部信息

3. 让脚本后可接参数



#!/bin/bash

# name: mkscript

# description:

# version: 0.0.1

# author: Winthcloud

# data time: 01/04/2017 15:03:00

# Usage: mkscript FILENAME

while getopts ":d:" SWITCH; do

  case $SWITCH in

    d)

      DESC=$OPTARG ;;

    \?)

      echo "Usage: mkscript [-d DESCRIPTION ] FILENAME"

  esac

done


shift $[$OPTIND-1]


if ! grep "[^[:space:]]" $1 &> /dev/null; then

cat > $1 << EOF

#!/bin/bash

# name: `basename $1`

# description: $DESC

# version: 0.0.1

# author: Winthcloud

# data time: `date "+%F %T"`

# Usage: `basename $1`

#


EOF

fi


vim + $1


until bash -n $1 &> /dev/null; do

  read -p "Syntax error, q|Q for quiting, others for editing: " OPT

  case $OPT in

    q|Q)

      echo "Quit."

      exit 8 ;;

    *)

      vim + $1

  esac

done


chmod +x $1



将此脚本保存到/bin 然后加执行权限,以后再写脚本即可自动生成首部






写脚本 getinterface.sh 

1. 脚本可接受(i,I,a)选项,每个只可单独使用 [-i interface |-I IP|-a]

while getopts ":i:I:" SWITCH; do

  case $SWITCH in

    i)

      SHOWIP $OPTARG

      [ $? -eq 13 ] && echo "Wrong ethercard."

      ;;

    I)

      SHOWETHER $OPTARG

      [ $? -eq 14 ] && echo "Wrong IP."

      ;;

    *)

      USAGE ;;

  esac

done


2. 当用户使用-i选项时,显示其指定网卡的IP地址

# ifconfig eth0 | grep -o "inet addr:[0-9\.]\{1,\}" | cut -d: -f2

3. 当用户使用-I选项时,显示其后面的IP所属的网络接口

# ifconfig | grep -B 1 "192.168.11.122" | grep -o "^[^[:space:]]\{1,\}"

4. 当用户单独使用-a选项时,显示所有接口及其IP地址(lo除外)

# ifconfig | grep -A 1 "^eth" 








VNC (Virtual Network Console)  远程桌面

明文传送数据

远程登录Linux用户名为系统用户名,但是密码独立存放



远程连接Linux桌面

    1. Linux安装远程VNC软件 vnc-server

     # yum install vnc-server

     # rpm -qa vnc*

    2. 为要实现远程连接vnc-server的用户配置密码 

     为当前用户配置vnc密码

     # vncpasswd

    3. 启动vnc-server

     # vncserver &   (第一次启动时使用)

    4. 修改家vnc用户的家目录里的~/.vnc/xstartup

     # vim ~/.vnc/xstartup

     以下两行去#号

       # unset SESSION_MANAGER

       # exec /etc/X11/xinit/xinitrc

     最后一行twm & 改成

     gnome-session &

    5. 重新启动vnc-server

     # vncserver -kill :1 

     # vncserver -kill :#

     # vncserver &

     # chkconfig vncserver on

    

    此时客户端即可实现远程连接服务器端

    下载软件vnc viewer

    连接时记得IP后加:1 :2

    如192.168.11.122:1

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1889089如需转载请自行联系原作者


Winthcloud

相关文章
|
3月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
184 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
119 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
126 2
linux笔记 diff及patch的制作与使用
|
5月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
5月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
5月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
5月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
5月前
|
Linux
Linux源码阅读笔记17-资源分配及总线系统
Linux源码阅读笔记17-资源分配及总线系统
|
5月前
|
存储 Linux 数据库
Linux源码阅读笔记16-文件系统关联及字符设备操作
Linux源码阅读笔记16-文件系统关联及字符设备操作
|
5月前
|
Ubuntu Linux Shell
【linux】PetaLinux 2024.1安装笔记
【linux】PetaLinux 2024.1安装笔记
335 0