linux shell 目录
linux shell 目录
- linux shell 目录
- 类型
- shell主要内容
- 1. 开头(第一行)和环境说明
- 2. 注释 使用#号
- 3. 通配符
- 4. 局部变量和全局变量
- 5. 提取变量 $name 变量修饰符
- 6. 显示输出 echo printf
- 7. 读取用户输入 read
- 8. 脚本位置参数 $* shift
- 9. 重定向符号
- 10. 数组使用
- 11. 命令替换型变量赋值
- 12. 算数运算
- 13. 运算符 大小 等于 逻辑
- 14. 条件语句 if case
- 15. 循环语句 for while until
- 16. 文件测试(和if一起使用)
- 17. 函数
- 18. 调试shell脚本
- 19. 三剑客和linux正则表达式
- 20. linux 正则表达式参考
- 21. vim编辑器使用
类型
unix支持三大主流shell
- Bourne shell(AT&T开发 shell),标准的unix shell,以$提示
- C shell(Berkeley分校 shell),以%提示
- Korn shell (Bourne shell的一个扩展集,AT&T的David Korn开发)
linux支持的shell(可有四种)
- GNU的shell,默认GNU bash(Bourne Again shell)
- TC shell 是unix C shell的一个兼容分支(模仿TENEX名字)
- Z shell 是linux shell的一种,综合体:结合了bash,tcsh,ksh
- 还有一种pdksh(Public Domain Korn shell),是需要向AT&T付费
查看支持/etc/shell
POSXI标准,操作系统标准,其中规范了shell和工具软件标准
执行解析顺序
- 别名
- 关键字
- 函数
- 内置命令
- 可执行程序(派生子shell执行)
命令的退出时子shell完成,exit返回给父shell的状态
部分相关命令
查询进程 ps pstree kill
ps -aux
pstree
kill 2564
查询用户身份 id
为文件创建掩码 umask
为文件创建掩码,可以使目录和文件默认权限减去umask值
chmod 修改文件和目录访问权限
chown 改变文件和目录的所有者
chown 用户:组 filetest 例如 chown root:root filetest.txt
env 查看变量
env 显示环境变量(理解为全局)
| 管道
pipe | 管道两边相当于开了两个子shell,同时执行,不过一个要往管道输入东西,一个要从里面读取东西
who | wc 相当于 who > tmpfile;wc tmpfile;rm tmpfile;
shell和信号(进程会反应)
有些输入会形成信号,然后给shell,会致使shell下进程做出下面动作:
- 忽略信号
- 停止进程
- 继续进程
- 进程被程序中定义的函数捕获,进行处理
信号表:
shell主要内容
1. 开头(第一行)和环境说明
#!/bin/bash
#!为幻数
一个进程(shell)的环境包括:变量、打开的文件、当前工作目录、函数、资源限额、信号等。
使用source(.)命令可以使文件的所有设置成为当前shell的一部分。
/etc/profile 系统级初始化文件
找到/etc/profile.d/*文件执行
.bash_profile(三选一执行) 在用户主目录下,执行~/.bashrc,没有找下面
~/.bashrc,env变量被赋值为名称.bashrc,每次bash脚本,或者shell启动,都会对这个文件进行source,包含了下面设置
set -o 打开内置选项
set +o 关闭内置选项
直接set -o 查看所有当前设置
执行/etc/bashrc
.bash_login(三选一执行) 没有找下面
.profile(三选一执行)没有就到此为止
用户自定义的初始化文件
命令默认搜索路径 echo $PATH
hash命令 显示登陆会话的已执行命令完全路径名
命令分组(注意内侧空格)
( ls; pwd; date ) > outfile
后台执行
man sh | lp&
进程控制(作业控制)
[root@192 ~]# jobs -l 显示后台的作业
[1]+ 2998 Stopped vi
jobs %% 最后一个放进后台的
fg %1 拿回前台
kill 2998
历史命令history
别名
alias cp=‘cp -i’
unalias cp 删除别名
2. 注释 使用#号
3. 通配符
有操作含义的字符 ,在shell中不仅仅是看到的字符串
ls f{a,b,stab} 注意里面没有空格
注意此处(){}在执行命令时的区别
()开启子shell
{空格echo aa;cc=cc;} 在本shell中执行
取消了元字符功能
扩展gloabbing功能(和正则有点区别)
对于双引号,单引号处理特殊的元字符,会使其失效,就是普通字符
但是对于双引号不回禁止$变量替换 和 反引号命令替换
\ 转义单个字符,在“” ‘’ 里面也被保护,但是在“” 中碰到特殊元字符会触发保护,可解决双引号$ 和反引号问题
单双互相保护(单双也是特殊字符)
4. 局部变量和全局变量
取消变量 unset
设置变量 declare -a -f -F -i -r -x
设置全局变量
export var=aa
declare -x arr=aa
5. 提取变量 $name 变量修饰符
var2=${var:-word} var有则自己给 if var 为空,则var 为word,var为空;否则var为空,var2为var
var2=${var:+word} var则别人给
var2=${var:=word} var有则自己给 if var 为空,则var 为word,var为空;否则var为word,var2为var
var2=${var:?word} var有则自己给,否则输出word信息
var2=${var:0:4} 0为开始位置,4为长度
var2=${var:0} 0为开始位置
取消变量使用 unset var 没有$符号
${var%模式}鱼尾少不贪 使用上面的通配符匹配
echo ${var:=aaadddccdcc} echo ${var%d??} 注意完整匹配
${var%%模式}
${var#模式}
${var##模式}
/etc/aaa.txt ${var##*/} 可取出basename
效果
${#var} 变量长度
6. 显示输出 echo printf
echo用法
printf 用法
7. 读取用户输入 read
read var1 var2 var3 对于其余的都会给var3
默认给REPLY
8. 脚本位置参数 $* shift
注意,$@ $*
如果是 “$@” 看成分割的"aa" "BB" "cc",此时for循环三次
如果是 “$*” 看成不分割的"aa BB cc"
9. 重定向符号
shell 启动时继承了3个文件stdin stdout stderr
来自键盘 去向屏幕 去向屏幕
1>
2>
find . -name *.c -print > foundit 2> /dev/null 双向奔赴
&> 或者 >& 一起走向
&1
&2
>>
exec和重定向
exec ls 运行后退出shell,小心
here文档和重定向输入<<
shell调用选项
内置set命令选项
shopt命令和选项
shell内置命令
10. 数组使用
数组参考链接
11. 命令替换型变量赋值
反引号 `命令`
$(命令)
12. 算数运算
求值给变量赋值
$[ exp ]
可不带空格 echo $[1+5*3]
echo \([\)v1+53] echo $[v1+53] 使用变量
$(( exp ))
echo $((1+5*3))
echo \(((\)v1+53)) echo $((v1+53)) 使用变量
declare -i var1 必须先声明,再var1=5+5/5
let 可用于整数运算和数值表达式测试
let “i+=1” ((i+=4))代替let
使用expr(待补充中)
浮点运算
echo “scale=3; 13/2”|bc
使用awk
13. 运算符 大小 等于 逻辑
14. 条件语句 if case
条件结构和流程控制
15. 循环语句 for while until
16. 文件测试(和if一起使用)
17. 函数
18. 调试shell脚本
19. 三剑客和linux正则表达式
三剑客参考链接
linux正则表达式参考链接
20. linux 正则表达式参考
21. vim编辑器使用
参考链接
linux shell 目录的更多相关文章
- Linux Shell编程学习笔记——目录(附笔记资源下载)
LinuxShell编程学习笔记目录附笔记资源下载 目录(?)[-] 写在前面 第一部分 Shell基础编程 第二部分 Linux Shell高级编程技巧 资源下载 写在前面 最近花了些时间学习She ...
- Linux Shell 学习笔记 一 目录结构
以Red Hat Enterprise Linux 各版本为例,RHEL中目录具体作用如下, /bin 存放普通用户使用的命令 /sbin 存放管理员可以执行的命令 /home ...
- Linux Shell Script目录
目录 Linux Shell基础 开始Shell编程 代码 示例代码查看:https://github.com/Furzoom/demo-C/tree/master/src/shell
- Linux Shell高级技巧(目录)
为了方便我们每个人的学习,这里将给出Linux Shell高级技巧五篇系列博客的目录以供大家在需要时参阅和查找. Linux Shell高级技巧(一) http://www.cnblogs.com/s ...
- Linux Shell常用技巧(目录)
Linux Shell常用技巧(一) http://www.cnblogs.com/stephen-liu74/archive/2011/11/10/2240461.html一. 特殊文件: /dev ...
- Linux Shell 常用命令与目录分区的学习总结
很早就想根据自己的学习规律和遗忘规律,自己总结一下Linux/Unix系统的Shell命令,一来便于自己时常查询之用,二来也分享于各位博友 Linux shell是系统的用户界面,即命令行.它提供了用 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
随机推荐
- vue-图书管理系统
/* 路由模块 */ const express = require('express'); const router = express.Router(); const service = requ ...
- 面试官:来说说 https 和 http 区别?
http 和 https的区别? 一.传输信息安全性不同 1.http协议:是超文本传输协议,信息是明文传输.如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息. 2.h ...
- tomcat反向代理,监控,性能优化详细步骤
第1章 tomcat简介Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同 ...
- babel npm包说明
babel-plugin-import 用于按需加载,在使用antd 的时候引入,可以减少包体积
- C语言学习--常量指针与指针常量
指针常量 #include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 cons ...
- visual studio 2015 IOS开发连接mac时提示错误couldn't connect to xxxx, please try again的一个方法
本人使用虚拟机MAC.原本使用虚拟机中的VS2015连接正常没有问题. 但是当把MAC的虚拟机文件COPY到另一个机器上,提示"couldn't connect to xxxx, plea ...
- hive支持的压缩算法
压缩格式的设置 set mapred.output.compression= 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 default deflate .deflate N ...
- 服务器新建分支,vscode检测不到
执行 git remote update origin 命令,刷新远程分支
- 最长公共子序列(LCS)tzoj:5752
http://www.tzcoder.cn/acmhome/problemdetail.do?method=showdetail&id=5752 题意:求两个串的最长公共子序列(顺序相同即为子 ...
- grub boot kali
the partition of labled '/' is /dev/sdb8 (eg:(hdb1,gpt8)) linux (hdb1,gpt8)/vmliuz root=/dev/sdb8 in ...