shell 和vim补充内容
常见的shell Bourne shell, C shell Korn shell,这三种情况,bash shell 是Bourn shell 的扩展,位于 /bin/bash下。查看当前使用的是哪种shell的最简单的办法就是随意输入一个不
能识别的命令,系统错误会提示出shell的类型。在linux下shell的切换也是很方便的,如果想从当前的环境shell类型切换到ksh,直接输入ksh就行。 切换到bourne shell 输入 sh
如果想返回到之前的shell,就可以使用exit命令推出,如果打算比较长时间的使用某种shell 的类型,可以编辑 /etc/default/useradd 文件,修改对应的字段既可,重启生效。
如果想改变某个用户的shell类型,可以编辑/etc/passwd/ 用户对应的字段。我的编辑器是vim,编辑起来比较方便,比较常用的光标移动操作命令还算很方便的,
G :光标移动到文本末尾
gg :光标移动到开始
L文本底部,
j下一行,
k上一行,
W下一行开开始,
h左移动一个字符,
l右移动一个字符,
$ 所在行的行末,
^所在行行首
文本插入命令
A 在一行的末尾加入文本 a 在光标的右边加入文本,i在光标的左边插入文本,I在光标所在行插入文本。
字符删除:
x:删除光标所在位置的后一个字符
nx:删后n个字符
X:删除前一个
dd:删除光标所在的行
ndd 从光标所在的行开始,删除n行
复制操作命令:
p 将缓冲区复制当前光标位置
yw 光标所在位置到行尾的字符复制到缓冲区
yy 复制光标所在的行
nyw 从光标所在位置复制n个字符
nyy 从光标起复制n行
保存退出命令:
:m保存退出,忽略拥有者的只读权
:w file_name 将缓冲区内容写入到指定的文件,
vi 两个重要的参数是-r 和 -R r可用于恢复一个在编辑中但由于系统崩溃而未来的及保存的文件,而R选项可以使用只读的方式打开一个文件
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
按照学习进度记录
在linux 下扶着执行脚本的是bash,sh是指向bash的软链接。使用set -x 可以启动脚本的追踪,在运行时候跟踪,
#!/bin/bash
# set 是用来在脚本过程中进行跟踪
set -x
echo -n "are you a student ?"
read anwser
#
if [ $anwser=Y ]
then
echo "Yes,I am a student "
else
echo "No I am not a studetnt "
fi
exit 0
set -x 没有被注释掉时候,执行脚本会出现一些 +开头的行,,可以发现预计输出和实际输出的区别,然后进行修改。
shell变量概述:
在shell中的变量值只对当前的shell有效,比如在一个终端窗口定义变量var,之后在开启新的窗口就看不到var了,在shell里面可以使用变量设定工作环境和保存信息,在变量
中的值也有永久存在的,在变量中存储的值称为字符串,这些字符串是字符构成的,它们是shell 的唯一数据形态;
shell的变量类型
局部(本地)变量:
比如在当前窗口定义的变量。仅仅是局部进程变量,除了自定义的局部变量外。系统也为用户定义了标准的局部变量,用set可以查看命令看,但是也包
括一些环境变量。
环境变量
存储会话和工作环境的信息,存储在环境变量的数据是永久性数据,如系统配置信息,用户帐号以及其他的信息。可以使用echo命令输出
查看比如:echo $HOME,要看有那些环境变量可以使用env命令查看。
特殊变量:$1,$2...表示脚本执行时候的参数,如果超过10个就要用{}括起来,如${10},另外$@和$*它们表示所有的位置参数
#!/bin/bash
#通过$@列出所有的参数
line=1
echo "listening vars with \"\$@\":"
for var in $@
do
echo "var #$line=$var"
let line+=1
done
exit 0
系统内置变量
bash默认了许多内置变量,这些内置变量的使用,直接影响到bash脚本的行为。
BASH 表示完整路径名字/bin/bash
COLORS 设置文件的颜色:
#!/bin/bash
#记录脚本运行的时间,SECONDS变量
time_limit=6
time_interval=1
#
while [ "$SECONDS" -le "$time_limit" ]
do
if [ $SECONDS -lt 7 ]
then
second=1
let seconds+=1
fi
echo "This script already runing $seconds second(s)."
sleep $time_interval
done
exit 0
shell变量的设置:
永久性设置
修改配置文件,在/etc/profile定义的变量对linux 下的所有用户有效,并且永久存在,用编辑器打开后用export 设置就可以。
修改当前用户的.bash_profile文件的所定义变量,但对单用户有效,也就是说个人使用的变量。修改/home/user 下的bash_profile,修改文件后若立刻生效,运行命令
source .bash_profile否则下次启动生效。
暂时使用
export 变量名 =变量值所定义的只对当前的shell有效,关闭shell后消失。
记得以前有印象的是一个 .bashrc的,它们之间的关系不明白,还算百度一下。点击打开链接
shell变量的应用
一个变量只有在被声明赋值,UNSET,EXPORT或者在变量代表一个信号后,才能真正的出现在脚本里面。有的时候还会出现变量的替换,被称为弱引用。
赋值操作用“=“赋值时,等号两边都不能有空格,且不能与-eq混用,赋值可以用 ”=“也可用let 也可用for
例:
var=2
let var2=2
for var3 in 5 7
do
echo $var
done