Shell保留变量
保留变量 Bourne shell保留变量 Bash和 Bourne shell以同一种方法来使用特定的shell变量。某些情况下,Bash为变量分配一个默认的值。下表给出一个简单的shell变量的概览: 保留的 Bourne shell 变量 变量名字 定义 CDPATH 一个由冒号分割的目录列表作为内建命令 cd 的搜索路径。 HOME 当前用户的home目录;默认为内建命令 cd 。这个变量的值同样被~扩展使用。 IFS 分割域的一个字符的列表;用于shell把词分开作为扩展。 MAIL 如果这个变量设成一个文件名并且 MAILPATH 变量没有设置,Bash在指定文件中通知用户邮件的到达。 MAILPATH 一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。 OPTARG getopts 内建命令处理的最后的选项参数的值。 OPTIND 最后一个由 getopts 内建命令处理的选项参数的索引号。 PATH 一个用冒号分隔的目录列表,shell从这些目录里寻找命令。 PS1 主要提示符。默认值是 “’\s-\v\$ ‘”。 PS2 次要提示符。默认值是 “’> ‘”。 Bash保留变量 这些变量是设置好的或者被Bash使用的,但是其他shell通常不会对它们进行特殊处理。 保留Bash变量 变量名 定义 auto_resume 这个变量控制shell如何与用户交互和作业控制。 BASH 用于执行当前Bash实例的全路径。 BASH_ENV 如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。 BASH_VERSION 当前Bash实例的版本号。 BASH_VERSINFO 一个只读变量数组,它的成员保存这个Bash实例的版本信息。 COLUMNS select 内建命令来决定打印选择列表时终端宽度。在收到 SIGWINCH 信号时自动设置。 […]
使用bash用10种不同的方法计数到11
使用bash用10种不同的方法计数到11 #!/bin/bash # Counting to 11 in 10 different ways. n=1; echo -n “$n ” let “n = $n + 1” # let “n = n + 1” also works. echo -n “$n ” : $((n = $n + 1)) # “:” necessary because otherwise Bash attempts #+ to interpret “$((n = $n + 1))” […]
特殊Bash变量
特殊Bash变量 字符 定义 $* 展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由 IFS 特殊变量的第一个字符分隔。 $@ 展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。 $# 把位置参数展开为十进制数字。 $? 展开成最近执行的前台管道程序的退出状态。 $- 一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i)。A hyphen expands to the current option flags as specified upon invocation, by the set built-in command, or those set by the shell itself (such as the -i). $ 展开成shell的进程ID。 $! 展开成最近在后台(异步)执行的命令的进程ID。 $0 展开成shell或者shell脚本名。 $_ 下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。The underscore variable is set […]
使用expect配合ssh的key认证实现多台服务器的自动化处理
使用expect配合ssh的key认证实现多台服务器的自动化处理 使用以下方法可以方便、快速的实现多台服务器(500+)的管理,并且对中央管理服务器的配置要求不高。 使用crontab自动更新配置. [root@4Aiur ~]# crontab -l 0 * * * * /usr/sbin/ntpdate -u -t 5 cn.pool.ntp.org >/var/log/ntpsync.log 2>&1 0 23 * * * /Application/Update/run.sh >/dev/null 2>&1 把加载key加入到系统自启动. [root@4Aiur ~]# cat /etc/rc.local #!/bin/sh # /root/.Batch/agent.exp 加载key的expect脚本. [root@4Aiur ~]# cat /root/.Batch/agent.exp #!/usr/bin/expect spawn $env(SHELL) send “cd /root/.Batch/\r” expect “*” send “killall ssh-agent\r” expect “*” send “ssh-agent […]
使用shell进行大小写转换
使用shell进行大小写转换 大写转小写 for f in *; do rename $f echo $f | tr "[:upper:]" "[:lower:]" $f; done 小写转大写 for f in *; do rename $f echo $f | tr "[:lower:]" "[:upper:]" $f; done
使用ssh实现系统管理的自动化
使用ssh实现系统管理的自动化 常见的几种ssh认证方式: 密码认证 使用明文密钥 使用加密密钥 从安全角度考虑,建议使用第三种方式“使用加密密钥”实施自动化。 一、密码认证的自动化 使用伪终端与SSH进行交互(例如,使用类似expect的工具) 一个更改密码的小例子 #!/bin/sh # SCRIPT: chpass # # AUTHOR: Kevin Lee # # DATE: 05-17-2006 # # PURPOSE: This script is change nodes password. # # # REV: 1.0.A # # REV.LIST: # # # set -x # Uncomment to debug this script # set -n # Uncomment […]
vi使用小贴士
vi使用小贴士 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后一行首 vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处 vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename vi filename….filename :打开多个文件,依次编辑 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 Enter :光标下移一行 w或W :光标右移一个字至字首 b或B :光标左移一个字至字首 e或E :光标右移一个字j至字尾 ) :光标移至句尾 ( :光标移至句首 }:光标移至段落开头 {:光标移至段落结尾 nG:光标移至第n行首 n+:光标下移n行 n-:光标上移n行 n$:光标移至第n行尾 H :光标移至屏幕顶行 M :光标移至屏幕中间行 L […]
Bash命令行编辑的快捷键
Bash命令行编辑的快捷键 history 显示命令历史列表 Shortcuts Comment ↑ 显示上一条命令 ↓ 显示下一条命令 !num 执行命令历史列表的第num条命令 !! 执行上一条命令 !ls 执行最后一个以ls开头的命令 Ctrl+r 然后输入若干字符,开始向上搜索包含该字符的命令,继续按Ctrl+r,搜索上一条匹配的命令 ls !$ 执行命令ls,并以上一条命令的参数为其参数 Ctrl+a 移动到当前行的开头 Ctrl+e 移动到当前行的结尾 Esc+b 移动到当前单词的开头 Esc+f 移动到当前单词的结尾 Ctrl+l 清屏 Ctrl+u 删除命令行中光标所在处之前的所有字符(不包括自身) Ctrl+k 删除命令行中光标所在处之后的所有字符(包括自身) Ctrl+d 删除光标所在处字符 Ctrl+h 删除光标所在处前一个字符 Ctrl+y 粘贴刚才所删除的字符 Ctrl+w 删除光标所在处之前的字符至其单词头(以空格、标点等为分隔符) Esc+w 删除光标所在处之前的字符至其单词尾(以空格、标点等为分隔符) Ctrl+t 颠倒光标所在处及其之前的字符位置,并将光标移动到下一个字符 Esc+t 颠倒光标所在处及其相邻单词的位置 Ctrl+(x u) 按住Ctrl的同时再先后按x和u,撤销刚才的操作 Ctrl+s 挂起当前shell Ctrl+q 重新启用挂起的shell […]
SecureCRT的使用技巧
SecureCRT的使用技巧 1、由于网络条件问题,SecureCRT经常会在不使用的时候开服务器的连接。 用下面的方法设置会很大程度上解决上面的问题。(以SecureCRT Version 5.1.0为例) 打开SecureCRT选择Options的General 点Default Session之后选择Edit Default Settions 再选择Terminal,把Send protocol NO_OP 选上之后全部点ok即可。 注: 同样利用screen命令也可以 使用方法: SSH登录后执行 # screen -S freebsd 一旦断线可使用 # screen -x freebsd 来恢复 2、密钥的使用 使用密钥便于连接与管理服务器,也极大的增加了系统的安全性。 个人建议禁止root直接登陆服务器,禁用密码直接登陆服务器,安装密钥时设置密码。 具体使用方法可以到网上搜集资料,这里不再多说。 3、与服务器之间的文件传输 设置连接的属性 选中一连接后鼠标右键点Properties,选择第一项Connection,把Protocol里面的Terminal设置为SSH2,File设置为SFTP(注需要事先安装SecureFX,否则没有次选项) 进入一个连接后点File菜单,点Connect SFTP Tab(快捷键为alt+p),会打开SFTP窗口,可以使用命令传输文件。 命令举例: lcd 进入本地目录 lpwd 显示本地目录路径 cd 进入服务器本身的目录 pwd 显示服务器本身的路径 get 下载服务器文件至本地目录 put 上传本地文件至服务器 SecureFX是一个使用sftp协议的客户端程序,使用方法与其他ftp客户端类似。 4、使用鼠标键的左键复制与中键粘贴 在SecureCRT的options里面的Global Opations […]
系统管理的几个小技巧
系统管理的几个小技巧 一、SecureCRT的使用技巧 1、由于网络条件问题,SecureCRT经常会在不使用的时候开服务器的连接。 用下面的方法设置会很大程度上解决上面的问题。(以SecureCRT Version 5.1.0为例) 打开SecureCRT选择Options的General,点Default Session之后选择Edit Default Settions 再选择Terminal,把Send protocol NO_OP 选上之后全部点ok即可。 注: 同样利用screen命令也可以 使用方法 SSH登录后执行 # screen -S freebsd 一旦断线可使用 # screen -x freebsd 来恢复 2、密钥的使用 使用密钥便于连接与管理服务器,也极大的增加了系统的安全性。 个人建议禁止root直接登陆服务器,禁用密码直接登陆服务器,安装密钥时设置密码。 具体使用方法可以到网上搜集资料,这里不再多说。 3、与服务器之间的文件传输 设置连接的属性 选中一连接后鼠标右键点Properties,选择第一项Connection,把Protocol里面的Terminal设置为SSH2,File设置为SFTP(注需要事先安装SecureFX,否则没有次选项) 进入一个连接后点File菜单,点Connect SFTP Tab(快捷键为alt+p),会打开SFTP窗口,可以使用命令传输文件。 命令举例: lcd 进入本地目录 lpwd 显示本地目录路径 cd 进入服务器本身的目录 pwd 显示服务器本身的路径 get 下载服务器文件至本地目录 put 上传本地文件至服务器 SecureFX是一个使用sftp协议的客户端程序,使用方法与其他ftp客户端类似。 4、使用鼠标键的左键复制与中键粘贴 二、关于BASH命令行使用的 输入set […]