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
------------------------------------------------
统计文件中某单词出现的次数
- #! /bin/bash
- pat=$1
- file=$2
- [ ! -f "$file" ] || [ $# -ne 2 ] && exit
- i=0
- for howmany in $(< $file)
- do
- [[ "$howmany" =~ "\<$pat\>" ]] && (( i++ ))
- done
- 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:
- #!/bin/bash
- find ./ -type f | while read line
- do
- echo "$line"
- done
方法2:
- #!/bin/bash
- while read line
- do
- echo "$line"
- 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) |