Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376156
  • 博文数量: 61
  • 博客积分: 2451
  • 博客等级: 上尉
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-06 21:24
文章分类

全部博文(61)

文章存档

2012年(1)

2011年(44)

2010年(16)

分类: LINUX

2011-04-15 23:19:23

sed 输出奇数行
sed -n '1~2p' urlfile
------------------------------
忘记退出光盘挂载点下载ftp文件引发的问题
因为光盘是只读文件系统
当你在挂载点连ftp下载文件时会遇到 Read-Only File System Problem
但是以为是自己的文件系统问题
于是:mount -o remount,rw /
但是错误提示依旧,后来发现自己还在光盘挂载点下的目录里。。。
退出来就好了 。。。。
-----------------------------------
bash 的 history 功能
默认能记录1000条命令 记录在~/.bash_history 下
但是注意的是记录的是上次登录所打过的命令 并不是这次登录,而这次登录用过的命令记录在内存中,当注销系统时才会写入~/.bash_history
set 显示全部环境变量(包括自定义环境变量) 
env 显示全局变量
显示set 独有的 :
set > hello;env | awk -F= '{print $1}' | grep -v -f - hello;rm -f hello
不加参数的export秀出所有的环境变量
显示系统所支持的所有语系:
locale -a


[root@Server1 ~]#cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
整体系统默认定义的语系
 
read 使用
-p  参数显示提示信息
-t  表示等待用户多少秒
-s  不回显用户的输入
-n num 表示接受用户几个字符就退出
-a arrayname 表示将用户的输入按IFS分割成一个个域后 存放在数组arrayname中

---------------------------------------------
declare 
export 不加参数就会列出环境变量
类似于这种格式:
declare -x [环境变量]
选项:
-i 声明为整数类型
-a 将后面的变量声明为数组
-x 加上这个选项后相当于export 变量
-r 变量设定为readonly 
如果将变量改回自定义变量的话 declare +x 变量

--------------------------------------------------
限制用户的某些系统资源
ulimit -a 查看
man ulimit 查看详细选项
[root@www ~]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
可以看到这里shell能够建立的文件大小没有限制
[root@www ~]# ulimit -f 10240
然后查看下:
[root@www ~]# ulimit -f -d
file size               (blocks, -f) 10240
data seg size           (kbytes, -d) unlimited
然后再测试下:
[root@www ~]# dd if=/dev/zero of=test.file bs=1M count=20
文件大小超出限制
通过ulimit -f unlimited 改回成默认值
-u 该用户可以使用的进程数
-t 可以使用的最大cpu时间
-c 可以建立的最大的核心文件大小是多少。所谓核心文件就是当程序发生错误时将内存中的数据copy到一个文档中。
-----------------------------------------------------------------------


-------------------------
列出最近使用的n条命令
history -n 3
-c 清除history
man history

在我登入到系统中时,系统会从~/.bash_history 将读取以前下达过的命令。在用户注销时又会将打过的历史命令加入到~/.bash_history中。~/.bash_history中记录的命令条数与HISTORYSIZE有关。
通过history查到历史命令前得号 然后通过!number 执行历史命令 通过!!执行上条历史命令。

-----------------------------------------------------
[root@localhost /test]# a=xxx
[root@localhost /test]# echo abc | sed 's/b/'$a'/'
axxxc

[root@bill cu]# cat a2.sh 
#!/bin/bash
echo "% < >"|sed "s/$1/1/g;s/$2/2/;s/$3/3/"
[root@bill cu]# sh a2.sh % \< \>
1 2 3

ls -Sr | { i=1;while read f;do mv -f "$f" $i;let i++;done;}

-----------------------------------------------------------------------------
split -a 4 -b 5m -d inpufile test

其中-a 标识suffix的个数 
-b 指定每个文件大小 这里为5m 注意m 要小写
-d 指定suffix用数字 默认是字母的
inputfile 表示要进进行分割的文件
test 指定preffix为test

------------------------------------------------
统计文件中某单词出现的次数
  1. #! /bin/bash
  2. pat=$1
  3. file=$2
  4. [ ! -f "$file" ] || [ $# -ne 2 ] && exit
  5. i=0
  6. for howmany in $(< $file)
  7.    do
  8.       [[ "$howmany" =~ "\<$pat\>" ]] && (( i++ ))
  9. done
  10. echo "$pat: $i times appeared"
没有考虑特殊情况
grep -oPn 'ID_\w+_T' *.txt

这里-n 选项的:
 -n, --line-number
              Prefix each line of output with the line number within its input
              file.


==============================================================================
在 20 世纪 80 年代中期,对 AWK 语言进行了更新,并不同程度地使用一种称为 NAWK (New AWK) 的增强版本对其进行了替换。许多系统中仍然存在着旧的 AWK 解释器,但通常将其安装为 oawk (Old AWK) 命令,而 NAWK 解释器则安装为主要的 awk 命令,也可以使用 nawk 命令。Dr. Kernighan 仍然在对 NAWK 进行维护,与 GAWK 一样,它也是开放源代码的,并且可以免费获得。 
GAWK 是 GNU Project 的 AWK 解释器的开放源代码实现。尽管早期的 GAWK 发行版是旧的 AWK 的替代程序,但不断地对其进行了更新,以包含 NAWK 的特性。
=================================================================================
find 命令的输出作为while 循环的输入:
方法1:
  1. #!/bin/bash
  2. find ./ -type f | while read line
  3. do
  4. echo "$line"
  5. done
方法2:
  1. #!/bin/bash
  2. while read line
  3. do
  4. echo "$line"
  5. done< <(find ./ -type f -print)
解释下方法二的进程替换<()
shell碰到<()的时候会把里面的命令执行,那么就是一个进程,而这个进程的输出就会保存到临时文件/dev/fd/n,<表示将命令的输出重定向到临时文件。扩展的结果是这个临时文件名。然后< <();就是将这个临时文件重定向到while 命令。
----------------------------------------------------------
A&&B||C 相当于下面代码
if(A)
{
       B
}else
{
       C
}

------------------------------------------------------------
awk下 可以使用sqrt 函数求绝对值
a:
220 34 50 70
553 556 32 21
12 13 14 98 33
b:
10
8
2
求 a 的每一行 减去b的每一行所得结果的绝对值:
awk 'NR==FNR{a[FNR]=$1;next}{for(i=1;i<=NF;i++){$i=sqrt(($i-a[FNR])^2)}}1' b a
210 24 40 60
545 548 24 13
10 11 12 96 31




阅读(2145) | 评论(0) | 转发(0) |
0

上一篇:Cisco 路由器密码恢复

下一篇:RIPv1 RIPv2

给主人留下些什么吧!~~