关于bash

[color=red]1.linux启动过程:[/color]
init——》getty(提供标准输入、输出、错误输出)——》/bin/login(验证密码、建立初始环境)
————》启动登录shell——》/bin/bash(寻找系统文件/etc/profile,执行其中的命令)——》在用户目录下查找
.bash_profile,或者.bash_login,再或者.profil)——》用户目下的.bashrc

[color=red]set -o[/color]
可以查看bash的选项使用情况
allexport 所有变量会传给子shell
noclobber 重定向时防止文件被覆盖

. .bash_profile与source .bash_profile都是运行.bash_profile文件

[color=red]处理命令的顺序:[/color]
别名——》关键字(if、function、while、until)——》
函数——》内置命令(pwd)——》可执行程序或脚本(date)
使用type str来查看str是什么

[color=red]bash提供了三个命令来改变命令执行顺序:[/color]
command:忽略别名和函数,只处理内置命令和可执行文件
bultin:只查找内置命令,忽略函数和可执行文件
enable:可以打开enable -n 可以关闭bultin命令,即使有内置命令还是执行用户的程序
enable -n;
function cd {bultin cd; echo $PWD}
如果在大括号中执行cd 就会无限循环,必须显示执行bultin的cd

[color=red]退出状态[/color]
在一个命令或程序结束之后,都会给父进程返回一个退出状态。0~255
0表示成功执行,非零都为失败,127为没有找到命令,
如果是致命信号导致了命令退出就是128加上导致器退出的信号值
$?可以查看上一条命令的返回值

后台执行命令

在命令之后加一个&就会让它在后台执行,shell会马上返回
$!是最近送入后台执行的命令

[color=darkred]作业控制[/color]
重置该功能:
set -m
set -o monitor
bash -m -i

ctrl-z:可以将回话挂起
jobs显示现在后来运行的作业
jobs -l显示后台作业与其pid号
bg后台执行,fg前台执行 这两个后面都是加%工作号
%%表示最近的进程,
%string 以string开头的进程 %?string 含string的作业名
jobs -r 列出所有正在运行的进程
jobs -s 列出所有挂起的进程
disown %n 将第n个job移出后台

[color=darkred]命令行快捷键[/color]
history 显示最近执行的命令
history都写在.bash_history中
fc 从最近的历史中选择命令,
fc -l 列出最近的命令
fc -e editor 将命令历史在编辑器中打开
fc -l n-m 列出从n到m的命令
fc -s string 访问以string开头的命令
!! 重新执行上一条命令
!N 重新执行历史列表中第N条命令
!string 重新执行以string 开头的命令
!:N 上一条命令第N个参数
!$ 上条命令的最后一个参数
!^上条命令的第一个参数
!*上条命令的所有参数

[color=darkred]重命名[/color]
alias一般都写在.bashrc中
alias m=more
unalias m 删除一个别名
/m 临时禁止别名

[color=red]管理目录栈[/color]
pushd 目录 压入栈
popd 到栈里的最后一个目录
dirs 列出栈中的目录

匹配
echo f{oo,aa,umble} 匹配字符集
unset nogolb 或者 set +f 可以禁止匹配
chopt

[color=darkred]变量[/color]
[color=brown](1)局部变量[/color]
1.name=tommy 可以这样赋值
2.declare name=tommy 或者这样
-f 列出函数名及其定义 -F列出所有函数名
echo $name 引用变量时之前必须加$
$$代表当前的进程号
bash可以进入一个子进程 exit可以退出
declare -r name=tommy 可以设置一个只读变量 ×等号两边不能加空格×
readonly name 也可以将name设置成只读变量
unset name 可以删除name变量
[color=brown](2)全局变量[/color]
export NAME=john
declare -x NAME=john
NAME=john; expport NAME
export -p 显示所有的全局变量;
export -f name-value的形式被视为函数而不是变量
export -n 将已导出的转换为局部变量
子进程重新设置全局变量以后不会影响父进程中的全局变量
使用转义时echo 需要有-e选项
[color=brown]3.变量扩展修改符[/color]
${newfruit:-apple}--> newfruit定义了的话就输出newfruit的值 没有就是apple
${newfruit:=apple}--> 效果同上,但是没有定义newfruit,newfruit会被赋值apple
${newfruit:+apple}--> 若设置了newfruti,他会输出apple
${name:?str}--> 若没有设置name,则会输出str
${name:offset:len}--> 若设置了name,就会输出name的子字符串
pathname="/usr/bin/local/bin"
${pathname%/bin*}--->/usr/bin/local 删除最短匹配
${pathname%%/bin*}--> /usr 删除最长匹配
${pathname#/usr}--> /bin/local/bin删除字符串开始时的usr 若开始不是usr,则没有改变
${pathname##*}--> 删除字符串开头的×匹配, 最大删除,所以会全删
${#pathname}14 输出字符串的长度
$0 字符串的长度
$1-9 位置参量1-9
${10} 位置参量10
$# 位置参量的个数
$* 所有的参量值 $@与此相同,但是有双引号时不同
"$*"-->"$1 $2 $3" "$@"-->"$1" "$2" "$3"
set a b c d e f g h i j k l m 设置位置参量
print $10-->a0
print ${10}-->j
echo \$$#-->$13
eval echo \$$#-->m
set -- 清空所有变量
[color=brown]4.变量引用[/color]
name=tjc
echo \$name --> $name
echo '$name\t$name' --> $name\t$name
echo "$name\t$name" --> tjc tjc
echo name --> tjc
[color=brown]5.命令替换[/color]
echo "The hour is `data '+%H'"
name='awk -F: '{print $1}' database'
echo $name --> 显示awk的执行结果
echo 'basename \'pwd\'' --> tjc 使用嵌套替换时需要用反斜杠将嵌套命令的‘括起来
echo "$(cal)" 输出日历
数学扩展
$[2+3] 或者 $((2+3))
[color=brown]5.数组[/color]
declare -a name
name=(item1 item2 item3)
echo ${name[0]}-->item1 数组下标从一开始 输出时必须用${}括起来
echo ${name[*]}--> item1 item2 item3
还可以这样定义states=(ME [2]=1 [5]=3) 没有声明的位置就为空
[color=brown]6.函数[/color]
function function_name(){}
export -f 函数名 可以让这个函数变成全局的
[color=orange]7.exec命令[/color]
exec 3<datefile 定义一个文件的输出gd3
sort <&3 将fd3的内容sort一下
exec 4>newfile 定义一个心得newfile的输入fd4
ls >&4 将ls的结果输入到fd4中
exec 5<&4 创建fd4的拷贝gd5
exec 3<&- 关闭fd3
exec在读入时会一行一行的读 而sort或者cat 每次读入一行都会关闭文件然后再打开读入下一行

xargs命令
ls|grep -v info|xargs rm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值