学习shell脚本之前的基础知识
来源:互联网 发布:历史股价数据 编辑:程序博客网 时间:2024/05/17 01:55
概述:
《跟阿铭学linux》
1、什么是shell
默认安装的shell叫做bash
1.1记录命令历史
1.1.1 !!连续两个!表示执行上一条指令:
1.1.2 !n 这里的n是数字,表示执行命令历史中第n条指令,例如!1002表示执行命令历史中第1002个命令
1.1.3 !字符串(字符串大于等于1),例如!pw表示执行命令历史中最近一次以‘pw’为开头的指令
1.2. 指令和文件名补全
按tab键,按两次把所有匹配文件或命令显示出来。
1.3. 别名(起个小名)
命令:alias
语法:alias 命令别名=‘具体的命令’
1.4、通配符
*来匹配零个或多个字符,而用?匹配一个字符
1.5、输入输出重定向
echo 'hello' > 1.txt (将hello输入到1.txt文件中, >>表示追加,>表示覆盖)
1.6、管道符
“|” ,把前面的命令运行结果丢给后面的命令
1.7、作业控制
暂停Ctrl+z ,使用fg命令恢复它, bg命令后台运行。 Ctrl+c表示终止。
如果关闭停止的工作,首先恢复工作(fg 编码) 然后ctrl+c结束任务, 或者找到pid,然后kill
2、变量
所有的环境变量 env
2.1 环境变量
- 1、PATH决定了shell将到那些目录中寻找命令或程序
- 2、HOME当前用户主目录
- 3、HISTSIZE:历史记录数
- 4、LOGNAME:当前登录用户名
- 5、HOSTNAME: 主机的名称
- 6、SHELL:当前用户shell类型
- 7、LANG语言相关的环境变量
- 8、MAIL:当前用户的右键存放目录
- 9、PWD:当前目录
2.2.1 要想系统内所有用户登录后都能使用该变量
需要在"/etc/profile" 文件最末尾行加入 export 变量名=变量值
例如
echo export myname=jack >> /etc/profile
2.2.2.只想让当前用户使用该变量
需要在用户目录下的.bashrc文件最后一行加入 export 变量名=变量值,然后运行 source .bashrc就可以生效了
pstree 打印进程
取消变量:unset 变量名
3、系统环境变量与个人环境变量的配置文件
/etc/profile: 文件预设的系统变量,例如PATH,USER等等
/etc/bashrc: 这个文件主要预设umask以及PS1:就是命令前字符串
.bash_profile: 定义了用户的个人化路径与环境变量的文件名称,当用户登录时,该文件仅仅执行一次。
.bashrc: 该文件包含专用于你的shell的bash信息,当登录时以及每次打开新的shell都会被读取。
.bash_history: 记录命令历史用的
.bash_logout:当退出shell时,会执行该文件,可以把一些清理的工作放到这个文件中
4、linux shell中的特殊符号
1、*代表零个或多个任意字符(正则表达式)
2、?只代表一个任意字符(正则表达式)
3、#这个符号在linux中表示注释说明的意思,即#后面的内容linux忽略掉
4、\表示转移字符,表示本意例如\\表示一个“\”
5、|管道符 ,前面结果输出到后面的命令中
命令:cut(用来截取某个字段)
-d:后面跟分隔字符,分隔字符要用单引号括起来
-c:后面接的是第几个字符
-f: 后面接的是第几个区块
使用-c参数
命令:sort(排序)
-t分隔符:作用跟cut的-d一个意思
-n: 使用纯数字排序
-r : 反向排序
-u : 去重复
-kn1,n2:由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序
命令:wc
用于统计文档的行数、字符数、词数,常用的选项
-l : 统计行数
-m: 统计字符数
-w:统计词数
[root@iz8vb7cc5e91muwr6fxp3jz ~]# wc /etc/passwd 30 58 1470 /etc/passwd[root@iz8vb7cc5e91muwr6fxp3jz ~]# wc -l /etc/passwd30 /etc/passwd[root@iz8vb7cc5e91muwr6fxp3jz ~]# wc -m /etc/passwd1470 /etc/passwd[root@iz8vb7cc5e91muwr6fxp3jz ~]# wc -w /etc/passwd58 /etc/passwd行数为:30,词数:58, 字符数:1470
命令:uniq (去重复行)
-c : 统计重复行数,并把行数写在前面
111122223333444422224444
[root@iz8vb7cc5e91muwr6fxp3jz test]# vim test.txt[root@iz8vb7cc5e91muwr6fxp3jz test]# uniq test.txt111122223333444422224444[root@iz8vb7cc5e91muwr6fxp3jz test]# sort test.txt|uniq1111222233334444[root@iz8vb7cc5e91muwr6fxp3jz test]# sort test.txt|uniq -c 1 1111 2 2222 1 3333 2 4444
命令:tee (类似 重定向“>”,但是它还可显示到控制台)
[root@iz8vb7cc5e91muwr6fxp3jz test]# echo "efefe" | tee test.txtefefe[root@iz8vb7cc5e91muwr6fxp3jz test]# cat test.txtefefe命令:tr (替换字符,常用来处理文档中出现的特殊符号)
-d :删除某个字符,-d后面跟要删除的字符
-s: 把重复的字符去掉
最常用的就是把小写变大写: tr '[a-z]' '[A-Z]'
[root@iz8vb7cc5e91muwr6fxp3jz test]# head -n2 /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@iz8vb7cc5e91muwr6fxp3jz test]# head -n2 /etc/passwd|tr '[a-z]' '[A-Z]'ROOT:X:0:0:ROOT:/ROOT:/BIN/BASHBIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN[root@iz8vb7cc5e91muwr6fxp3jz test]# head -n2 /etc/passwd|tr 'r' 'R'Root:x:0:0:Root:/Root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@iz8vb7cc5e91muwr6fxp3jz test]# head -n2 /etc/passwd|tr -d 'r'oot:x:0:0:oot:/oot:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin[root@iz8vb7cc5e91muwr6fxp3jz test]# head -n2 /etc/passwd|tr -s 'r'root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin
命令:split (切割文档)
-b : 依据大小来分割文档,单位为byte
-l :依据行数来分割文档
[root@iz8vb7cc5e91muwr6fxp3jz test]# cp /etc/passwd /test[root@iz8vb7cc5e91muwr6fxp3jz test]# lltotal 28drwxr-xr-x 2 root root 4096 Aug 18 19:27 apache2-rw-r--r-- 1 root root 1470 Aug 26 15:57 passwddrwxr-xr-x 2 root root 4096 Aug 17 20:23 test4-rw-r--r-- 1 root root 10240 Aug 17 20:25 test4.tar-rw-r--r-- 1 root root 6 Aug 26 15:47 test.txt[root@iz8vb7cc5e91muwr6fxp3jz test]# split -b500 passwd[root@iz8vb7cc5e91muwr6fxp3jz test]# lsapache2 passwd test4 test4.tar test.txt xaa xab xac[root@iz8vb7cc5e91muwr6fxp3jz test]# split -b500 passwd 100[root@iz8vb7cc5e91muwr6fxp3jz test]# ls100aa 100ab 100ac apache2 passwd test4 test4.tar test.txt xaa xab xac[root@iz8vb7cc5e91muwr6fxp3jz test]# rm -f 100a*[root@iz8vb7cc5e91muwr6fxp3jz test]# split -l10 passwd[root@iz8vb7cc5e91muwr6fxp3jz test]# wc -l *wc: apache2: Is a directory 0 apache2 30 passwdwc: test4: Is a directory 0 test4 1 test4.tar 1 test.txt 10 xaa 10 xab 10 xac 62 total
split -b500 passwd 将 文件passwd以500字节分割
split -l10 passwd 将文件passwd以10行分割
6、$除了用于变量前面的标识符外,还有一个妙用,就是和“!”结合起来使用
7、; 分号,一行执行多条命令
8、~:用户的home目录,如果是root 则是/root 普通用户则是/home/username(对应用户名)
9、& :如果想把一条命令放到后台执行的话,则需要加上这个符号,通常用于命令运行时间非常长的情况
10、>, >> ,2>, 2>> 单个>表示替换, 两个>>表示追加 2表示错误信息重定向
11、[] 中括号,中间为字符组合,代表中间字符中的任意一个。
12、 && 与 || (类似java的短路运算符)
1. command1 ; command2
2. command1 && command2
3. command1 || command2
使用'';'' 时,不管command1是否执行成功都会执行command2;
使用``&&'' 时,只有command1执行成功后,command2才会执行,否则command2不执行;
使用``||'' 时,command1执行成功后command2 不执行,否则去执行command2,总之command1和
command2总有一条命令会执行。
以上引用《跟阿铭学Linux》
- 学习 shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习Linux shell脚本之前的基础知识
- 学习 shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- 学习shell脚本之前的基础知识
- shell脚本之前的基础知识
- 第十二章 学习shell脚本之前的基础知识
- Java 随机数的生成 学习笔记
- POJ1862 Stripies (贪心)
- effective C++ 条款九解读
- ios编译ffmpeg
- Dell电脑如何设置Fn键和其它功能键的组合
- 学习shell脚本之前的基础知识
- C++学习笔记系列三
- linux中普通用户修改密码出现(passwd:Authentication token manipulation error)
- HDU1087 Super Jumping! Jumping! Jumping!
- linux开机启动自动执行某个脚本
- Friend-Graph(暴力枚举)
- 用 Python 实现每秒处理 120 万次 HTTP 请求
- RxJava基础使用
- mybatis配置