本文共 2220 字,大约阅读时间需要 7 分钟。
shell的定义:
在计算机科学中,Shell就是一个命令解释器。一句话,shell就是在操作系统和应用程序之间的一个命令翻译工具。
脚本 是可执行命令的组合shell 的分类
基本上shell分两大类:图形界面shell和命令行shell
图形界面shell:图形界面shell就是我们常说的桌面 命令行式shell windows系统: cmd.exe 命令提示字符 linux系统: sh / csh / ksh / bash / … 我们常说的shell是命令行式的shell,在工作中常用的是linux系统下的bash。查看当前系统的shell类型
echo $SHELL
查看当前系统环境支持的shell
[root@linux-node1 ~]# cat /etc/shells
shell 的注释
单行注释:
除了首行的#不是注释外,其他所有行内容,只要首个字符是#,那么就表示该行是注释多行注释:
多行注释有两种方法::<<! … ! 和 :<<字符 … 字符(重定向到什么也不干 :表示什么也不干)常见命令详解:
grep : (搜索)grep -rn bash
(递归当前目录(.)(包含bash 的行)) *当日志中有错误可以用这个命令显示错误在哪个文件中 find:(文件搜索工具)
find . -name "*hello*`
搜索文件名大概是 xxx 的文件
sed:(基于行的文件编辑工具)
sed "s#sed#SED#" sed.txt
将sed.txt 文件中每一行第一个小写的sed 替换为大写的sed 输出预览,原文件没有被修改
sed -i "s#sed#SED#" sed.txt
将sed.txt 文件中每一行第一个小写的sed 替换为大写的sed 输出预览,原文件被修改
sed "2s#sed#SED#g" sed.txt
(*2(第二行,不是所有行 ) s (替换) #sed(原内容)#SED(替换后的内容)g(所有列)))
sed -i "3a\hello" sed.txt
(*3 (第三行) a下方 \hello (增加内容))
sed -i "3i\hello" sed.txt
(*3 (第三行) i 当前行数 \hello (增加内容))
sed -i "4d" sed.txt
(*4(第四行) d (删除))
sed -i "1s#python#python3#1" `find class -name "*.py" ` sed -i "1s#python3#python#1" class/*/*.py python@ubuntu:~/Desktop/class$ tree.├── day1│ ├── abc.py│ ├── list_timeit.py│ ├── newabc.py│ └── tmit.py├── linklist│ ├── CycleLinkList.py│ ├── DoubleLinkList.py│ └── SingleLinkList.py└── sort ├── bubble_sort.py ├── insert_sort.py ├── merge_sort.py
将class 目录下首行python 解释器换成python3
awk (基于行拆分列的文件编辑工具)
常见参数:
-F 指定行的分隔符
常见动作:
print 显示内容$0 显示当前行所有内容$n 显示当前行的第n列内容,如果存在多个$n,它们之间使用逗号(,)隔开python@ubuntu:~$ cat awk.txt awk awk awkawk awk awk awk awk awk awk awk awk awk awk awk
awk '{awk $1,$3}' awk.txt
读取awk.txt 的每一行,打印第一列和第三列
常见 内置变量:
FILENAME 文件名 (读取一行打印一行的文件名字)
awk '{print FILENAME}' awk.txt
NR 行号
awk '{print NR $0}' awk.txtawk 'NR==2 {print $2}' awk.txt
第一个打印所有行号和内容,第二个打印二行二列的内容
NF 列数
awk '{print NF}' awk.txt 输出每一行可分割的列数 awk '{print $NF}' awk.txt输出最后一列的内容
OFS 输出格式的列分隔符,缺省是空格
awk 'BEGIN{OFS=":"}{print NR,$0}' awk.txt 1:awk awk awk2:awk awk awk 3:awk awk awk 4:awk awk awk 5:awk awk awk
FS 输入文件的列分融符,缺省是连续的空格和Tab 模板文件内容
awk 'BEGIN{FS="k"} {print $2,$3}' awk.txt (awk -F "k" '{print $2,$3}' awk.txt)这种方法简单 aw aw aw aw aw aw aw aw aw aw
输出以k 为分割点的第二列第三列的内容
转载地址:http://cheun.baihongyu.com/