1,计算指定文件中指定字符的个数的?

cat file|tr -cd letters|wc -c

说明:tr -cd letters只要不匹配letters的字符都删除,其中-c选项是反转的意思,对不匹配的letters的字符进行操作,-d选项就是删除了。wc -c的作用是对字符计数。

[root@PC shell]# cat 1

1 2 3

2 3 4

3 4 5

4 5 6

[root@PC shell]# cat 1 | tr -cd 3 | wc -c

3

[root@PC shell]# cat 1 | tr -cd 1 | wc -c

1

[root@PC shell]# cat 1 | tr -cd 4 | wc -c

3

很好奇wc -c对中文是怎么处理的结果:

[root@PC shell]# echo 中 | wc -c

4

[root@PC shell]# echo -n 中 | wc -c # 事实说明是一个中文被表示成了3

3

[root@PC shell]# echo 123 | wc -c

4

[root@PC shell]# echo -n 123 | wc -c #注意采用echo 结合 wc计数时,加上 -n 选项

3

2,stty

设置、复位和报告终端操作参数。

好吧,我得说这真是个很难记的命令,熟练使用就暂时别想了。

首先呢,先说个有趣的用法,隐形:

[root@PC shell]# stty -echo # 关闭回显功能,就隐形了,你输入的命令将不会显示,但是结果还是会输出

[root@PC shell]# 1  2  3  4  5  6  7  8  a  c  scripts  xx

[root@PC shell]# Linux PC 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686 i686 i386 GNU/Linux

[root@PC shell]# 你知道我输入了什么吗

[root@PC shell]# [root@PC shell]#   #在这开启了echo,stty echo

[root@PC shell]# ls

1  2  3  4  5  6  7  8  a  c  scripts  xx

[root@PC shell]# uname -a

Linux PC 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:53:09 EST 2011 i686 i686 i386 GNU/Linux

[root@PC shell]# echo "你知道我输入了什么吗"

你知道我输入了什么吗

当然还有其他很重要的使用,对终端有很灵活的控制。

[root@PC shell]# stty -a  # 打印出所有的设置

speed 38400 baud; rows 27; columns 91; line=0;

intr= ^C;quit= ^\;erase= ^?;kill= ^U;eof= ^D;eol=;eol2=;

swtch=;start= ^Q;stop= ^S;susp= ^Z;rprnt= ^R;werase= ^W;lnext= ^V;

flush= ^O;min=1;time=0;

-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr

-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany

-imaxbel -iutf8

opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

[root@PC shell]#

其中:

eof : 输入结束

erase : 向后删除字符,

intr : 中断当前程序

kill : 删除整条命令

quit :退出当前程序

start : 启动屏幕输出

stop :停止屏幕输出;

susp : terminal stop当前程序。

3,pidof

获取一个正在运行作业的进程ID(PID)。

[root@PC shell]# pidof vsftpd

1368

[root@PC shell]# pidof httpd

8326 8286 8091 8062 7755 7566 7418 7249 7102 2129 2101

4,fuser

fuser 命令用指定的文件或者文件系统显示进程进程号,默认情况下每一个文件名后会跟着一个字母来表示类型。

必要参数

-l 显示信号

-4 IPv4

-6 IPv6

-a 与程序相关的所有文件

-k 删除程序相关的所有文件

-I 互交模式

-s 不显示处理信息

-u PID显示用户名

-v 运行时,显示相信处理信息

- 清零

-m 挂载文件系统

-signal 发送信号

-n 指定关键字进行搜索,如 文件、UDP、TCP

-V 显示版本显示

列出进程号后面都跟随一个字母,该字母指示进程如何使用文件。

c:当前目录

e:扩展

f:打开的文件

r:根目录

m:共享库

[root@PC lib]# fuser /home/max # 看下啥进程在用/home/max目录

/home/max:           14606c

[root@PC lib]# ps aux | grep 14606 | grep -v grep # 查找下

max      14606  0.6  0.1   5008  1468 pts/1    Ss+  01:21   0:00 -bash

# 事实上,是我另一个putty窗口中登录了max用户,正如上面所示

还有些巧用,只是技巧太多需要,多练习:

[root@PC lib]# fuser -un tcp 21 # 众所周知21为ftp所用

21/tcp:               1368(root)

[root@PC lib]# ps aux | grep 1368 | grep -v grep # 果然 vsftpd

root      1368  0.0  0.0   5296   528 ?        Ss   Mar12   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

5,` `、[ ]、(( ))

当然,这几个东西真的有点让人糊涂。

使用` `.``.``.` `条件判断结构, 而不是[ ... ], 能够防止脚本中的许多逻辑错误. 比如, &&, ||, 操作符能够正常存在于` `条件判断结构中, 但是如果出现在[ ]结构中的话, 会报错。(( ))结构扩展并计算一个算术表达式的值. 如果表达式的结果为0, 那么返回的退出状态码为1, 或者是"假"。 而一个非零值的表达式所返回的退出状态码将为0, 或者是"true"。

下面我们针对上面几句话做些实验,实验之前先说个东西,在shell中下边这个结构:dosomething&&thendo 的含义是只有dosomething执行成功后才执行thendo,而dosomething||thendo 则是dosomething失败后再执行thendo。

[root@PC lib]# [[ 1&&2 ]]

[root@PC lib]# [ 1&&2 ] # 不能执行

-bash: [: missing `]'

[root@PC lib]# a=2+3 # 这样是不能计算的

[root@PC lib]# echo $a

2+3

[root@PC lib]# ((a=2+3)) # 正确计算

[root@PC lib]# echo $a

5

[root@PC lib]# (a=2+3) # 单个括号也能进行计算

[root@PC lib]# echo $a

5

[root@PC lib]# (a++) # 但是却不能用这种方式。。。。

-bash: a++: command not found

[root@PC lib]# ((a++)) # 这时候(( ))的威力出来了。

[root@PC li

好了,这两天的学习成果就化为两篇博客了。静下心来多练习练习吧。。。

linux shell stty,Shell 学习(五)---stty、[[ 等相关推荐

  1. 学员故事:老男孩Linux运维班学习五个月,让我实现月薪万元+

    本文由Linux运维脱产班77期学员提供 哈喽,我是老男孩Linux77期的李学员,今天给大家分享下我的成长经历,希望能为迷茫的你提供正确的方向. 在来老男孩之前,我是一名设计师,经朋友介绍,报名了老 ...

  2. Linux 探索之旅 | 第五部分第五课:循环往复,Shell 开路

    -- 作者 谢恩铭 转载请注明出处 内容简介 前言 while 循环 until 循环 for 循环 总结 第五部分第六课预告 1. 前言 上一课 Linux探索之旅 | 第五部分第四课:条件一出,S ...

  3. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  4. Linux 探索之旅 | 第五部分第六课:一朝 Shell 函数倾,斗转星移任我行

    -- 作者 谢恩铭 转载请注明出处 内容简介 前言 函数的作用 函数的定义 传递参数 返回值 变量作用范围 重载命令 函数的设计 总结 第五部分第七课预告 1. 前言 上一课 Linux探索之旅 | ...

  5. Linux shell的简单学习

    Linux shell的简单学习 shell script 其实就是纯文本档,我们可以编辑这个档案,然后讥这个档案来帮我们一次执行多个指令, 戒者是刟用一些运算不逡辑刞断来帮我们达成某些功能. Lin ...

  6. Linux系统编程【5】——stty的学习

    从文件的角度看设备 之前几篇文章介绍的编程是基于文件的.数据可以保存在文件中,也可以从文件中取出来做处理,再存回去.不仅如此,Linux操作系统还专门为这个东西建立了一套规则,就是前期介绍的" ...

  7. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  8. Linux基础:Shell脚本学习

    一.shell简介 Shell是用户和Unix/Linux内核沟通的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行 ...

  9. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

最新文章

  1. java中抽象类的匿名子类和匿名对象
  2. 采用简单的对比度和亮度来去除水印
  3. 实战上亿数据,如何实现秒查!
  4. Innumerable Ancestors 尺取 dfs序 lca
  5. 电脑两边黑边怎么还原_Mac电脑录制的视频有黑边?如何解决
  6. 简记:我的Scala学习之路
  7. mysql多库备份_Mysql 之多库备份
  8. ArcGIS for Desktop 10.2安装破解与使用图文详解
  9. 内存颗粒位宽和容量_内存颗粒有没有多与少的区别啊?或者说比较多的颗粒比少的颗粒好些?...
  10. CCF-CSP计算机职业资格认证备考
  11. iOS活体人脸识别的Demo和一些思路
  12. 51单片机_7-1独立按键控制流水灯方向
  13. spring mvc 附件上传至腾讯云qcloud
  14. Android学习计划
  15. 【图片、视频修复】Real-CUGAN的简单使用
  16. SAP ABAP 业务对象 BUS6041 AssetSubCostRev 后续资产成本和收入 BAPI 清单和相关 TCODE
  17. 索尼PK东芝 -- 看了很有收获
  18. 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds
  19. SQL SERVER 对等发布
  20. 在 Windows 10 中通过命令提示符或控制面板启用 Telnet

热门文章

  1. Python常用内建模块(内含实例)
  2. 红旗linux内存要求多大,红旗Linux系统如何配置LILO文件
  3. 用HTML写的整人小游戏(一)之 奔跑的no
  4. python画框框图
  5. SQL教程——联合查询
  6. 噬灵僵尸异界游最新章节
  7. Unity 实现物体破碎效果(转)
  8. codevs1403 新三国争霸
  9. 【linux】i386与AMD64的区别
  10. PlayBlock,可能是引爆下一代区块链游戏的开端