shell脚本判断变量文件目录的写法

Linux shell 是灰常强大的,这篇文章是一些基本的shell命令,

先写一些基本语法: 

1、字符串判断 

str1 = str2      当两个串有相同内容、长度时为真 

str1 != str2      当串str1和str2不等时为真 

阅读全文→

smarteng 发布于 2010-09-13 12:57

linux shell 命令行编辑常用快捷键

 

删除

ctrl + d      删除光标所在位置上的字符相当于VIM里x或者dl

ctrl + h      删除光标所在位置前的字符相当于VIM里hx或者dh

ctrl + k      删除光标后面所有字符相当于VIM里d shift+$

ctrl + u      删除光标前面所有字符相当于VIM里d shift+^

ctrl + w      删除光标前一个单词相当于VIM里db

ctrl + y      恢复ctrl+u上次执行时删除的字符

ctrl + ?      撤消前一次输入

alt  + r      撤消前一次动作

alt  + d     删除光标所在位置的后单词

移动

ctrl + a      将光标移动到命令行开头相当于VIM里shift+^

ctrl + e      将光标移动到命令行结尾处相当于VIM里shift+$

ctrl + f      光标向后移动一个字符相当于VIM里l

ctrl + b      光标向前移动一个字符相当于VIM里h

ctrl + 方向键左键    光标移动到前一个单词开头

ctrl + 方向键右键    光标移动到后一个单词结尾

ctrl + x       在上次光标所在字符和当前光标所在字符之间跳转

alt  + f      跳到光标所在位置单词尾部[break]

替换

ctrl + t       将光标当前字符与前面一个字符替换

alt  + t     交换两个光标当前所处位置单词和光标前一个单词

alt  + u     把光标当前位置单词变为大写

alt  + l      把光标当前位置单词变为小写

alt  + c      把光标当前位置单词头一个字母变为大写

^oldstr^newstr    替换前一次命令中字符串   

历史命令编辑

ctrl + p   返回上一次输入命令字符

ctrl + r       输入单词搜索历史命令

alt  + p     输入字符查找与字符相接近的历史命令

alt  + >     返回上一次执行命令

其它

ctrl + s      锁住终端

ctrl + q      解锁终端

ctrl + l        清屏相当于命令clear

ctrl + c       另起一行

ctrl + i       类似TAB健补全功能

ctrl + o      重复执行命令

alt  + 数字键  操作的次数

实际操作:

#ctrl+l  清屏先

minuit@suse:~>str1 str2 str3  #输入三个单词发现第一单词需要大写好按c+a跳到开头按a+c

minuit@suse:~> Str1 str2 str3  #好现在单词就变成了现在这个样子,又发现第二个单词要全大写(这样的命令真是玩死人:( )好吧如果你当前光标在第二个单词,那直接a+u把这个单词改变,如果不在的话那按住c+a接着c+f跳到第二个单词那再a+u就OK了结果像下面所示

minuit@suse:~> Str1 STR2 str3   #我想换过来怎么办我的位置已经在最后一个单词这个好办按住a+2+b哈哈跳到了第二个单词再来一下a+l这下第二个单词全小写了,再来一个比较典型的例子

[url]http://bbs.chinaunix.net/viewthread.php?tid=842595[/url]

标题:如何将数据文件中的每个词的第一个字母变成大写?

哈哈这个难不到我们吧因为我们已经会了a+c了

minuit@suse:~> welcome to chinaunix!   #不就是变个大小写吗按住c+a接着a+3+c看看效果

minuit@suse:~> Welcome To Chinaunix!  #GOOD很简单

我们再来试试替换

minuit@suse:~> Welcome To Chinaunix!  #还是这三单词c+a跳到开头再接着跳到第二个单词那(因为a+t只能跟前一个单词做替换所以不能在第一个单词按a+t)按住a+t

minuit@suse:~> To Welcome Chinaunix!  #现在成这样子的了如果我用再按a+2+t那又变了一个样

minuit@suse:~> Chinaunix!  Welcome To   #好了来一点比较常用的

minuit@suse:~>ls /tmp/               #看看下面有些什么

file1 file2 file3 ..... .. 

minuit@suse:~>^ls^cd         #现在再又想进入目录很简单的健入替换命令就行了在命令很长时用这个替换可以省掉很多按a+b或a+f的时间

cd /tmp/

minuit@suse:/tmp>   #进入了tmp目录了

跳转的命令就不试了大家自己体会试也看不见^_^


smarteng 发布于 2010-08-13 18:45

快速统计日志文件里点击量前十位的URL

关于shell命令,网上流传着很多奇技淫巧,比如说快速统计日志文件里点击量前十位的URL: awk '{print $7}' /path/to/log | sort | uniq -c | sort -nr | head -n 10 附:这里假设日志文件是common格式的,如此一来,按空格分隔后,第七个字段就是URL 稍加思考,你会发现这里又是sort,又是uniq,存在重复操作,下面看看如何优化这条shell命令: 01 #!/bin/awk -f 02 03 { 04 url[$7]++ 05 } 06 07 END { 08 for (key in url) { 09 print url[key], key | "sort -nr | head -n 10" 10 } 11 } 把上面代码(去掉行号)保存到demo.awk文件里,然后:chmod +x ./demo.awk,做这些就够了。 我找了一个7G的common格式日志文件来测试性能,视服务器性能结果会有差异,但相对值应该差不多: time awk '{print $7}' /path/to/log | sort | uniq -c | sort -nr | head -n 10 real 1m57.150s user 1m6.794s sys 0m13.923s time ./demo.awk /path/to/log real 1m21.414s user 0m32.799s sys 0m22.556s 总体消耗的时间降低了四分之一,还是很明显的。


smarteng 发布于 2010-01-10 09:54

第一行#!/bin/bash说明

这是特例,代表由/bin/bash 负责解释。
#!/usr/bin/perl
#!/bin/csh
都是脚本常用的开头。
有一个非常奇怪的名字,叫shbang line
#!叫做Magic number
 
这是定义由哪个shell解释脚本
可以是ash、bash、ksh、csh、zsh等

 


smarteng 发布于 2009-06-21 20:59