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://upload-images.jianshu.io/upload_images/18861868-b5c342f4ffa9a703.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
vim /etc/mote  修改登录欢迎信息

bash 控制用户可以打开的最大文件数等

ulimit -f 1024   限制用户仅等建立10MBytes以下容量的文件
![ulimit.jpg](https://upload-images.jianshu.io/upload_images/18861868-65a8be65ccc33d07.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

通配符

通配符.jpg

特殊符号:

# 批注符号
\   转移符号,可以将具有特殊意义的符号变为一般字符
|   管道符,把前一个命令的结果传递给后一个命令,可以多个,以此类推
;   连续下达命令的分隔符
$   取用变量值的前缀符号
&   将一个工作置于后台
!   逻辑运算意义上的非
/   路径分隔符
>,>>  输出重定向,>覆盖,  >>追加
<,<<  输入重定向
''  单引号,单引号内的字符均视为一般字符
""   双引号,其内的字符具有特殊意义,具有变量置换功能
``   其内的命令可以先执行,建议用$( )取代
()  在中间为子shell的起始与结束
{}  在中间为命令区块的组合

数据重定向

0 标准输入 (stdin)
1 标准输出 (stdout)
2 错误输出 (stderr)

重定向.jpg

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

你可能感兴趣的:(shell初识与变量)