shell初识与变量
ctrl-u 删除光标前
ctrl-k 删除光标后
ctrl-a 光标放到行首
crtl-e 光标放到行尾
echo -e "\n" 换行(-e 特殊字符特殊处理)
env 查看所有环境变量
初识
shell提供了用户操作内的接口
cat /etc/shells 查看本机包含的所有shell
stty -echo 键入终端的内容不显示
stty echo 退出隐藏终端
alias 查看所有的别名
alias ll=“ls -l” 设置别名
unalias ll 取消别名设置
Bash shell 的内建命令 type
用途: 用来测试命令的类型
type [-tpa] name
选项和参数:
:不加任何选项,会显示name是外部命令,还是bash内置命令
-t //会将name以下面这些关键字来表示出他的意义:
file :外部命令
alias :命令别名
builtin :bash内置命令
不显示任何数据时,表示name不是任何命令
-p //后面接外部命令时,才会显示出命令的完整文件名
-a //会由PATH变量定义的路径中,将所以含name的指令都列出来,包括alias
Ps:
[root@rourou ~]# type -t ls
alias
[root@rourou ~]# type -t cd
builtin
[root@rourou ~]# type -t pwd
builtin
[root@rourou ~]# type -t date
file
history
history //列出全部历史命令记录
history 10 //显示最近10条执行过的命令
history -c //清除目前 shell 中的所以历史命令
history -a //将目前新增的命令写入 ~/.bash_history文件中
history -r //读入内存
history -w //写入histfiles
操作:
!25 执行第25条历史命令
! ser 执行最近一次以 “ser”开头的命令
!! 执行上一条命令
注意history的安全问题,历史命令的记录数量上要控制好
注意:同一帐号同时多次在线执行命令时,这样会产生多个bash,那么会以最后一个登出的命令历史记录为准
建议使用一个用户登入bash,再用[Ctrl]+z fg bg 来控制前后台来切换不同的工作
bash登录欢迎信息
vim /etc/issue 显示系统信息
![issue含义.jpg](https://img.haomeiwen.com/i18861868/b5c342f4ffa9a703.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
vim /etc/mote 修改登录欢迎信息
bash 控制用户可以打开的最大文件数等
ulimit -f 1024 限制用户仅等建立10MBytes以下容量的文件
![ulimit.jpg](https://img.haomeiwen.com/i18861868/65a8be65ccc33d07.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
通配符
通配符.jpg特殊符号:
# 批注符号
\ 转移符号,可以将具有特殊意义的符号变为一般字符
| 管道符,把前一个命令的结果传递给后一个命令,可以多个,以此类推
; 连续下达命令的分隔符
$ 取用变量值的前缀符号
& 将一个工作置于后台
! 逻辑运算意义上的非
/ 路径分隔符
>,>> 输出重定向,>覆盖, >>追加
<,<< 输入重定向
'' 单引号,单引号内的字符均视为一般字符
"" 双引号,其内的字符具有特殊意义,具有变量置换功能
`` 其内的命令可以先执行,建议用$( )取代
() 在中间为子shell的起始与结束
{} 在中间为命令区块的组合
数据重定向
0 标准输入 (stdin)
1 标准输出 (stdout)
2 错误输出 (stderr)
Ps: /dev/null 黑洞文件,将数据导入会被清空
变量
什么是变量
举个例子:
yy=123
echo $yy
123
变量设定的规则
1.变量名=变量值,不能有空格
2.变量名只能包含数字和字母,但是开头不能有数字
3.“ ” 弱引,引号内的特殊字符还是特殊字符
‘ ’ 强引,引号内的特殊字符会输出为普通字符
4.可用转意符 \ 将特殊符号(如 [Enter], (uname -r) 先执行uname -r 然后echo打印{PATH}:/home/bin
7用export将普通变量转换为环境变量 export ROUROU (环境变量一般为大写)
8.unset rourou 取消变量
环境变量
echo $RANDOM 产生随机数
PS1:(提示字符的设置)
PS1=\d"Mon Feb 2"
\d :可显示出“星期 月 日”的日期格式,如:"Mon Feb 2"
\H :完整的主机名称。
\h :仅取主机名称在第一个小数点之前的名字,如鸟哥主机则为“study”后面省略
\t :显示时间,为 24 小时格式的“HH:MM:SS”
\T :显示时间,为 12 小时格式的“HH:MM:SS”
\A :显示时间,为 24 小时格式的“HH:MM”
@ :显示时间,为 12 小时格式的“am/pm”样式
\u :目前使用者的帐号名称,如“dmtsai”;
\v :BASH 的版本信息,如鸟哥的测试主机版本为 4.2.46(1)-release,仅取“4.2”显示
\w :完整的工作目录名称,由根目录写起的目录名称。但主文件夹会以 ~ 取代;
\W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。
# :下达的第几个指令。
$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $
只在本次shell里有效有效退出重进后主机名为之前的
列出shell环境下的所有环境变量及其内容
env 是 environment (环境) 的简写
set 列出系统中所有的变量
子程序仅会继承父程序的环境变量, 子程序不会继承父程序的自订变量
环境变量文件
登入检查4个文件
/etc/inputrc :定义快捷键
/etc/profile.d/*sh :定义bash操作接口颜色、语系、命令别名等
etc/locale.conf :定义系统的默认语系
.bashrc
. ~/.bashrc 将该文件读到给环境中
登出检查2个文件
~/.bash_history
历史命令记录文件;记录的数量与HISTFILESIZE变量有关。在/etc/profile里
~/.bash_logout
记录了当我注销bash后,系统再帮我做完什么动作后才离开的。
预定义变量
echo $# 位置参数个数(不包括shell脚本名)
echo $* 位置参数组成的字符串
echo $! 上一个后台命令对应的进程号
echo $? 上一个命令的退出状态,为十进制数字,如果返回为0,则代表执行成功,则否为不成功。
echo $$ 当前的进程号PID
变量键盘读取、数组与宣告: read, array, declare
read:
[root@www ~]# read [-pt] variable
选项不参数:
-p :后面可以接提示字符!
-t :后面可以接等待的秒数
Ps:
read -p “请输入你的姓名” name
echo "你的姓名是: $name"
array:
var=(qwe asd zcv)
echo ${var[1]}
asd
echo ${var[*]}
qwe asd zcv
替换取代.jpg