shell 是一个命令解析器,侦听用户指令,启动 执行并将结果返回给用户,属于交互式的
是Linux下一种程序设计语言,它有变量 关键字 流程控制 等结构化语句,用它可以编写功能强大的程序脚本
shell信息查看
查看支持的SHELL cat /etc/shells
[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
查看当前使用的SHELL echo $SHELL
[root@localhost ~]# echo $SHELL
/bin/bash
查看shell版本
[root@localhost ~]# bash -version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[root@localhost ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
修改用户的shell
1) vim /etc/passwd更改最后一项
2)usermod -s ...
shell的初始化
一个用户登录,需要执行一下几个文件
/etc/profile->~/.bash_profile->~/.bashrc->/etc/bashrc
~/.bash_logout 退出时执行的动作
历史命令
历史命令保存: vim ~/.bash_history
[root@localhost ~]# vim ~/.bash_history
...
cd LibO_3.3.2rc2_Linux_x86_install-rpm_en-US/
ls
...
查看历史
[root@localhost ~]# history
1008 bash -version
1009 bash --version
1010 qq
1011 vim ~/.bash_history
1012 history
执行历史命令
! !! 上一次命令
!1012 执行相关编号号指令
!-5 执行倒数第5个
!h !p !c 执行最后能匹配到该字符的命令
与命令相关的变量
echo $HISTFILE 历史记录文件(可以在/etc/profile中设置)
[root@localhost ~]# echo $HISTFILE
/root/.bash_history
echo $HISTFILESIZE 历史记录文件保存的记录大小
[root@localhost ~]# echo $HISTFILESIZE
1000
echo $HISTSIZE 内存中保存的文件大小
[root@localhost ~]# echo $HISTSIZE
1000
注意:后两者有所不同,一个是写入文件中,一个是活动在内存中
如何禁止历史记录的方法
[root@localhost ~]# cat ~/.bash_logout
# ~/.bash_logout
clear
[root@localhost ~]# echo "history -c" >> ~/.bash_logout
[root@localhost ~]# cat ~/.bash_logout
# ~/.bash_logout
clear
history -c
在每次退出的时候,通过执行history -c 来把命令清空即可
执行多条命令的方法
1 无条件执行 命令行之间用分号隔开
eg mkdir a;pwd;useradd a
()子shell执行
[root@localhost ~]# cd /etc/X11/;ls
applnk prefdm sysconfig xinit xorg.conf
fs serverconfig twm Xmodmap Xresources
[root@localhost X11]# (cd /etc/gdm;ls)
custom.conf locale.alias PostLogin PreSession XKeepsCrashing
Init modules PostSession securitytokens.conf Xsession
[root@localhost X11]#
可以看到,你如果()这样执行指令,所开启的是一个新的shell来进行,而不是进入当前的环境
2 有条件的执行
&& 逻辑与 前一个执行成功时,再执行第二个,如果前者不成功,后者不执行
|| 逻辑或 前一个执行不成功时,在执行后者,若前者执行成功,后者不执行
shell命令执行的返回值 $?
0: 表示成功,无错误
非0:不同程度的问题
命令行的替换
! 历史记录
{} 字符展开,如mkdir {a,b,c,d}dump
[root@localhost tmp]# ls
[root@localhost tmp]# mkdir {a,b,c,d}dump
[root@localhost tmp]# ls
adump bdump cdump ddump
${} 变量替代 取变量值,有时单独一个$不安全
[root@localhost tmp]# a=1
[root@localhost tmp]# echo $a
1
[root@localhost tmp]# echo $a1
本意最后面一句,是要输出11的,结果没有任何显示
[root@localhost tmp]# echo ${a}1
11
算术运算
$(())
eg $((3+5))
`` 或$() 命令替换 如果和其他命令连用是,先执行` `中的命令
$$ 显示进程号
创建shell程序的步骤
1)创建脚本文件
2)设置其执行权限
3)运行
一个简单脚本的例子
[root@localhost shell]# vim t1.sh
#!/bin/bash
strl="how ,are you"
echo ${strl}
[root@localhost shell]# chmod u+x t1.sh
[root@localhost shell]# ./t1.sh
how ,are you
read 读数据
格式
read [选项] [变量名]
-p 提示(数据输入时的提示)
-s 输入不显示
-n 接收多少个字符
[root@localhost shell]# vi t2.sh
#!/bin/bash
echo -n "输入你的数据:"
read var1
echo "你输入的数据为${var1}"
[root@localhost shell]# chmod u+x t2.sh
[root@localhost shell]# ./t2.sh
输入你的数据:1
你输入的数据为1
流程控制 三大流程控制结构 顺序 选择 循环
选择
if [ 条件 ]
then
...
fi
比较运算符 数值比较
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符比较
= 等于
!= 不等于
\> 大于
\< 小于
-z 是否为空(长度是否为0,为0则为真)
-n 是否不为空(长度是否不为0,不为0则为真)
条件测试
test 或者[ ]
-b file 文件存在,而且是块设备文件
-c file 文件存在,而且是字符设备文件
-f file 文件存在,而且是普通文件
-e file 文件是否存在
-h file 文件存在,而且是符号链接文件
-g file 文件是否设置了GID(特权位上G+S)
-p file 文件存在,而且是管道文件
-r file 文件是否可读
-w file 文件是否可写
-x file 文件是否可执行
-u file 文件是否设置了UID(特权位上加U+S)
-K file 文件是否设置了粘贴位(特权位上加o+T)
-O file 当前用户是否为属主
-G file 当前用户是否为属祖
file1 -nt file2 file1是否比file2新
if格式2
if [ 条件 ]
then
command1
else
command2
fi
if格式3
if 嵌套
if [ ... ]
then
if [ ... ]
then
...
else
...
fi
else
...
fi
shell的基本知识
原创
©著作权归作者所有:来自51CTO博客作者懒猫横行的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:我还能信你吗
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
shell命令基本知识点
shell基本知识点整理
shell 基本知识 -
linux shell基本知识 sleep命令
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时) sleep 1 睡眠1秒 sleep 1s 睡眠1秒 sleep 1m 睡眠1分 sleep 1h 睡眠1小时
linux shell sleep linux bash linux系统 -
DHCP的基本知识
文章主要介绍了DHCP的工作原理,以及它的一些基本功能。
基础DHCP DHCP介绍 DHCP功能