shell命令

shell命令

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  awk
awk 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.txt
awk '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  awk
2: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 为分割点的第二列第三列的内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值