shell概述

Posted xiaoxiannvblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell概述相关的知识,希望对你有一定的参考价值。

1. 每一个命令都会返回一个值 0和非0
可以通过$?获取上一个命令的返回值
2. 第一个shell脚本:ping 114.114.114.114
改进一:ping一次,如果成功输出成功,如果失败输出失败
ping -c1 114.114.114.114 && echo "success" ||echo "failed"
改进二:不想看到执行过程,只要结果。采用重定向
ping -c1 114.114.114.114 &>/dev/null && echo "success" ||echo "failed"
3. bash sh ./ping.sh?
bash /usr/bin/bash; sh bash的链接 这两种方式不需要可执行权限
./ping.sh或者绝对路径执行bash需要可执行权限
4. #!/usr/bin/bash #!表示用哪个解释器执行 没有指定解释器,这一行会生效
不生效:bash ping.sh 指定解释器
生效: ./ping.sh 没有指定解释器,这一行会生效
5. 程序语言执行
C ---编译---二进制机器码(CPU)

JAVA ---编译---字节码 CPU 不能直接执行

Shell ---解释 执行的时候,考虑逻辑关系,执行就慢

Python ---编译---字节码 pvm
---解释---
6.bash中添加python解释器

/usr/bin/python <<-EOF

print "Hello World!"

EOF

7.子Shell中执行 与当前Shell中执行
当前Shell中执行: source shell.sh 或者 . shell.sh 路径随Shell中路径改变
子Shell中执行:bash shell.sh ./shell.sh 路径不会变
8.login shell nologin shell对比·

login shell su - user 系统级和用户级配置文件都会执行

nologin shell su user 不加载新用户的环境 只能登录 没有其他权限 执行 /etc/bashrc ~/.bashrc

9.bash配置文件

系统级 /etc/profile /etc/bashrc

用户级 ~/.bash_profile ~/.bashrc

~/.bash_logout ~/.bash_history 用户退出时执行

系统级和用户级 用户登录时执行
10 常用命令
!数字 !1024 意义:history 列出历史命令,然后执行第1024个
!string !da 最近一个以da开始执行的命令
!$ 上一个命令最后一个参数
!! 上一个命令
alias 查看别名
unalias 取消别名
命令前面加 跳过别名 也可以取消别名
临时 添加别名 alias aa=‘ls‘
永久 添加别名 .bashrc 中添加 source .bashrc 生效

11 快捷键
^R 搜索命令
^D 退出
^A 光标移动命令最前面
^E 光标移到命令末尾
^K 删除光标到末尾
^U 删除光标到开始
^L 清屏 但当前命令保存
^S 输入命令,命令正常执行,但是不展示
^Q 展示 ^S的结果
命令:ls /etc/sysconfig 光标在f后面
执行 ^K ls /etc/sysconf
执行一次 ^Y ls /etc/sysconfig
再次执行^Y ls /etc/sysconfigig
12 屏幕使用
yum -y install screen 安装screen
screen -S test 保存屏幕为test
screen -list 查看屏幕集合
screen -r id(screen -list的结果) 恢复

13 场景: vi 编辑一个文件 突然想退出 末行模式 ^z ;事情办完之后,fg回到vi 上次编辑的情况
如果有多个job 


fg %1 回到第一个作业
14 命令排序;&&||

cd /etc/111; ls 顺序执行
mkdir /home/111/222&&echo "aaaa" 前面命令执行结果是true才会执行后面的程序
ls /home/111/222/333 ||mkdir -p /home/111/222/333 没有/home/111/222/333目录才会创建

command & 命令后台执行

文件描述符分 :输出重定向 0 输入重定向 1 错误重定向 2
command &> /dev/null 混合重定向 不管命令成功与否,结果都放回到回收站
command > dev/null 标准输出重定向 如果命令执行正确,结果放到回收站

15 元子符(通配符)

* 任意多个字符
? 任意一个字符
[] 匹配括号中任意一个字符 ^: 非
() 在子shell中执行 当前shell中umask 022 但是想修改umaks 但又不影响当前的uamsk (umask 033 ;touch file )
{} 集合 touh
转义 =table键 =换行

16 echo带颜色输出
-e 识别特殊字符
echo -e "e[1;31m文本内容" 30-37 前景色 40-47 背景色
恢复 echo -e "e0m"
echo -e "e[1;31m文本内容e[0m"

17 su对比su - 

对于su命令,只会更改当前用户,而不会更改当前的用户环境,比如你从oracle 用户su到root账户中,当前路径仍是你刚才的路径,环境变量仍是oracle用户的变量信息。

而su -命令,则在更改当前用户信息的同事还会更改用户环境,如果你从oracle 用户su -到root账户,你会发现你的当前路径已经变味/root/下了,环境变量也变了。这就是区别。


























































































































以上是关于shell概述的主要内容,如果未能解决你的问题,请参考以下文章

第1章 Shell概述

第1章 Shell概述

Shell编程Shell基本概述与脚本执行方式

Shell编程Shell基本概述与脚本执行方式

shell概述

shell概述与echo命令