蕲蛇图片,大笑西游论坛,秦筝缓弦歌结局
bash
bash 与 sh兼容,现在使用的linux就是使用bash作为用户的基本shell。
linux中shell
使用echo $shell
查看当前shell。 使用 vim /etc/shells
查看linux支持的shell 。
alias
命令查看当前shell别名
// #alias alias ll='ls -l --corlor=auto' ...在当前shell中设置
临时
别名alias alias_name='origin_name'
// #alias vi='vim' #vi //实际执行vim删除别名
unalias alias_name
#unalias vi
-当前用户永久配置别名 vi ~/.bashrc
#vi ~/.bashrc // 添加别名,并保存退出 alias vi='vim' // 重新加载.bashrc文件到当前shell #source ~/.bashrc别名生效顺序
注:别名的优先级高于系统中默认命令
history [选项] [历史命令保存文件]
options~/.bash_history
注: history中历史命令为上次登录时使用的命令,可以使用-w同步写入这次登录后使用的命令
历史命令默认会保存1000条,可以在环境变量配置文件/etc/profile
中修改historysize
值
使用tab键补全命令或文件名,一次tab键未补全时,再次tab键显示多个补全后命令或文件后从中选择使用的命令或文件,但有时没有该命令或文件时无法完成补全。
**注:**tab键使用$path环境变量中给定的可执行文件的搜索路径中搜索命令
符号 | 作用 |
---|---|
” | 单引号。在单引号中所有的特殊符号,如’$’和’`’(反引号)都没有特殊含义。 |
“” | 双引号。在双引号中特殊符号都没有特殊含义,但是”$”、”`”和”\”是例外,拥有“调用变量的值”、“引用命令”、和“转移符”的特殊含义。 |
` ` | 反引号。在反引号括起来的内容是系统命令,在bash中会先执行它,和 |
$() | 和反引号作用一样,用来引用系统命令 |
# | 在shell脚本中,#开头行代表注释 |
$ | 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。 |
\ | 转移符。跟在\之后的特殊符号将失去特殊含义,变为普通字符。如 \$将输出 "$" 符号,而不当做是变量引用 |
// 变量名=变量值 #x=5 // 注:其间不能有空格 例如x= 5、x =5、x = 5等 // 打印变量 #echo $x #echo ${x}
#x=123 #x="$x"456 #x=${x}789
set可以查看系统下所有变量,包括环境变量和用户变量
// 查看所有变量 #set // 设置此选项,调用未声明变量时报错(默认情况下无任何提示) #echo $a #set -u #echo $a -bash: a: unbound variable
unset 变量名
// 删除变量,变量名前不能加$ #unset a
环境变量和用户自定义变量的区别?
用户自定义变量只能在当前shell中生效
环境变量在当前shell和这个shell的所有子shell中生效
// 进入子shell # bash // 查看当前进程树 # pstree |- ... |-bash--bash--pstree ... // 退出子shell # exit # pstree |- ... |-bash--pstree ...
// 当前shell中定义a # a=5 # echo $a 5 // 进入子shell # bash # pstree |- ... |-bash--bash--pstree ... // 无法查看父shell中的自定义的变量a # echo $a # eixt // 父 shell 中导出自定义变量 a,子shell可以看到父shell中的变量 # export $a # bash // 子shell中查看变量a # echo $a 5 // 子shell无法删除父shell定义的变量a # unset a # exit // 父shell删除自定义的变量a # unset a
ps1变量:命令提示符设置
\d:显示日期,格式为 “星期 月 日” \h:显示完整的主机名。如默认的主机名”localhost.localhost” \t:显示24小时制时间,格式为“hh:mm:ss \a:显示24小时制时间,格式为“hh:mm” \u:显示当前用户名 \w:显示当前所在目录的完整名称 \w:显示当前所在目录的最后一个目录 $:提示符。如果root用户会显示提示符为“#”,如果普通用户会显示提示符“$”# echo $ps1 [\u@\h \w]\$
ps2 定义换行提示符如下代码中的“>”
# ls \ >~
locale命令查看当前语系
lang:定义系统主语系的变量 lc_all:定义整体语系的变量// 查看系统当前语系 # locale ... # echo $lang // 查看linux系统支持的所有语系 # locale -a |more
cat /etc/sysconfig/i18n,下次开机启动后系统进入的是默认语言环境
# cat /etc/sysconfig/i18n lang="zh_cn.utf-8"
linxu中文支持
前提条件,正确安装中文字体和中文语系
// 固定参数个数的求和shell脚本 #/bin/bash num=$1 num=$2 sum=$(( $num1 + $num2 )) echo $sum
位置参数变量 | 作用 |
---|---|
$n | n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十个以上的参数需要用大括号包含,如${10} |
$* | 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 |
$@ | 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 |
$# | 这个变量代表命令行中所有参数的个数 |
// $*和$@的区别,保存为param.sh #!/bin/bash for i in "$*" do echo $i done for i in "$@" do echo $i done # chmod u+x param.sh # ./param.sh 1 2 3 4 1 2 3 4 1 2 3 4
预定义变量 | 作用 |
---|---|
$? | 最后依次执行的命令的返回状态。如果这个变量值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确 |
$$ | 当前进程的进程号 |
$! | 后台运行的最后一个进程的进程号(pid) |
shell变量的缺点?
shell变量是弱类型 默认变量都是字符串declare来指明声明的变量类型
declare [+/-][option] 变量名
options:
// shell变量默认为字符串 # aa=11 # bb=22 # cc=$aa+$bb # echo $cc 11+22 // 明确声明变量类型 # declare -i cc=$aa+$bb // 自动转换了$aa、$bb为整型变量参与运算 # echo $cc 33 // 查看指定变量的属性 # declare -p cc declare -i cc="33"
// 定义数组,shell脚本能够自动检测出这个movie变量是数组 # movie[0]=zp # movie[1]=tp # declare -a movie[2]=live # echo ${movie} # echo ${movie[2]} # echo ${movie[*]}
// export 调用 declare -x 变量 来声明环境变量 # bb=2 # export bb // export真正调用是declare -x bb=2 # declare -x bb=2 // 查看所有的环境变量 #declare -p ... declare -x bb=2 ...
// 只读属性,变量不能重新赋值、删除、取消只读属性,一般不使用只读属性 # declare -rx test=123 # test=456 -bash: test: readonly variable # unset test -bash: test: cannot unset: readonly variable # declare +r test -bash: declare: test: readonly variable
// 上节中数值计算的方式求cc的数值比较复杂,可以使用下面方式 # aa=1 # bb=2 # dd=$(expr $aa + $bb) // 注:$aa和$bb和+ 之间有空格 # echo $dd // 上面的方式也很复杂 # aa=1 # bb=2 # dd=$(($aa+$bb)) # dd=$[$aa+$bb]
注:这里数值越大,优先级越高
注:变量测试方式十分简洁但逻辑复杂,也不好记,实际工作中可以查阅;可以使用其他方式实现相同测试结果即可。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论