粗略过了一遍,记录一下方便自己查询。 

 

利用cat连接文件

 

a.jpg.001      a.jpg.002

 

cata.jpg.* > a.jpg

 

 

利用cat创建文件

 

 

echo 带双引号 shell echo 双引号_vim

cat < 文件 与 cat 文件  的效果一样。

 

echo 带双引号 shell echo 双引号_ico_02

 

echo 带双引号 shell echo 双引号_bash_03

 

使用less 来分页显示

上下 jk,首尾Gg,翻页pageup,pagedown

 

echo 带双引号 shell echo 双引号_ico_04

配合 sort -r 倒序

 

echo 带双引号 shell echo 双引号_vim_05

 

 

head , tail

 

echo 带双引号 shell echo 双引号_vim_06

$((expression))

expression 是数值或者算术操作符

 

echo 带双引号 shell echo 双引号_echo 带双引号_07

花括号扩展

 

echo 带双引号 shell echo 双引号_ico_08

命令替换

 

echo 带双引号 shell echo 双引号_vim_09

 

引号 

双引号

echo的时候 加上双引号会将引号内容当做一个参数。

因此 会使得echo 的单词分隔失效。此外路径名、波浪线、花括号扩展也会失效。

但是算数扩展和命令替换还会生效。

 

echo 带双引号 shell echo 双引号_bash_10

 

单引号

 

使所有扩展都失效

 

echo 带双引号 shell echo 双引号_bash_11

 

 

转义字符

经常用于配合双引号使用

也用于\t之类 , 表示制表符等

单引号中的\只是一个简单的字符

 

echo 带双引号 shell echo 双引号_echo 带双引号_12

echo 命令带上-e 就能解释转移字符序列

 

 

echo 带双引号 shell echo 双引号_echo 带双引号_13

 

echo 带双引号 shell echo 双引号_echo 带双引号_14

history 与 !

history  显示出 行号 命令

可以通过 !行号 来执行

 

echo 带双引号 shell echo 双引号_vim_15

 

 

shell如何寻找命令

当输入ls的时候, shell会寻找 PATH中目录列表

 

echo 带双引号 shell echo 双引号_ico_16

而 PATH 通常定义在/etc/profile中

 

 

echo 带双引号 shell echo 双引号_bash_17

最后一行 export 将环境导出到随后要运行的程序中

 

 

激活我们的修改

可以在.bashrc中添加我们的别名 如 alias ll = 'ls -l --color=auto'

只有在启动shell的时候才会读取.bashrc 之类的文件, 因此,修改此类文件后要关闭会话并重新打开的时候才会生效。 可以使用source .bashrc 强制生效

 

vim在编辑多个文件

vim a.txtb.txt

:n    ,  :N 分别可以跳到下一个、上一个文件。

:buffers 可以查看所有在编辑的文件

:buffer  数字  可以跳到对应文件

 

 

vim插入整个文件

:r a.txt

:r表示读取

 

带时间的提示符

 

[13:31root@VM_0_7_centostest]$PS1="[\A\u@\h \W]\$"

然后保存在/etc/profile或者~/bashrc中

 

颜色

修改  vim ~/.bash_profile

PS1="[\u@\h\W]\033[1;32m\A\033[1;0m \$ "

\033[1;32m表示字体淡绿色    \033[1;0m\表示字体正常色

范围

字体颜色\033[1;30m  黑色 到 \033[1;37m 白色

 

背景色\033[0;40m  黑色 到 \033[0;47m 白色

 

echo -e "\033[背景;字体颜色m 字符串\033[0m"

 

eg : echo -e"\033[30m 黑色字 \033[0m"

 

find

 

查找 路径下 名称为 某个前缀 大于30M 的文件

 

echo 带双引号 shell echo 双引号_bash_18

action

 -exec command {} ;

这里{} 是指当前路径名, ;是必须的结尾

 

-ok 会在执行前询问

 

echo 带双引号 shell echo 双引号_echo 带双引号_19

 

多次执行

 

echo 带双引号 shell echo 双引号_bash_20

 

xargs--show-limits获取最大参数数量

$xargs --show-limits

Your environmentvariables take up 2301 bytes

POSIX upper limit onargument length (this system): 2092803

POSIX smallestallowable upper limit on argument length (all systems): 4096

Maximum length ofcommand we could actually use: 2090502

Size of commandbuffer we are actually using: 131072

 

快速创建类似的目录/文件

 mkdir -p testdir/dir-{00{1..9},0{10..99},100} 

touchtestdir/dir-{00{1..9},0{10..99},100}/file-{a..z}

 

{00{1..9},0{10..99},100}   理解为 001-009 ,010-099,100三段

 

echo 带双引号 shell echo 双引号_echo 带双引号_21

 

echo 带双引号 shell echo 双引号_ico_22

 

 

-regex 正则查找文件

 

echo 带双引号 shell echo 双引号_echo 带双引号_23

 

stat : ls的加强版

 

gzip,gunzip , bzip2,bunzip2

bzip更慢质量更高

gunzip -c  xx.gz |less 查看

zcatxx.gz |less

 

echo 带双引号 shell echo 双引号_vim_24

tar归档

tar -zcvf  归档并压缩  gzip

tar -zxvf    解压   gzip

 

zip压缩+归档,主要用于与windows交互

 

rsync同步

 

rsyncsource destination

source 和 destination必须有一个是本地

远程 由 rsync://[user@]host:[:port]/path指定

 

 

echo 带双引号 shell echo 双引号_bash_25

$$ 为当前bash进程

可见 , 当前进程 运行了子程序

 

echo 带双引号 shell echo 双引号_bash_26

 

grep

 

echo 带双引号 shell echo 双引号_ico_27

-n 显示行号

-v 不匹配

 -L 不包含的文件

-l 包含的文件

 

echo 带双引号 shell echo 双引号_ico_28

没有\d 此外{ } 需要转移

 

echo 带双引号 shell echo 双引号_vim_29

 

这里可以直接 find ./-regex "[0-9]" -ok delete  

echo 带双引号 shell echo 双引号_echo 带双引号_30

设置LANG

为了防止某些错误

 

vim/etc/profile

 

LANG=en_US.UTF-8

LANGAGE=en_us

 

对文本的处理

 

diff :逐行比较文件

!表示被改变的行

 

echo 带双引号 shell echo 双引号_vim_31

comm:逐行比较两个文件

 

 

echo 带双引号 shell echo 双引号_echo 带双引号_32

uniq 报告并忽略重复行

只能检测相邻的行

 

sort 对文本行排序

 

echo 带双引号 shell echo 双引号_vim_33

-n 基于数值排序

 

echo 带双引号 shell echo 双引号_echo 带双引号_34

-k 对 指定的字符排序 这里 -k 2 表示对第二个字段排序

-t 表示 指定分隔符,默认空格或者制表符

 

echo 带双引号 shell echo 双引号_echo 带双引号_35

 

 

echo 带双引号 shell echo 双引号_echo 带双引号_36

多键值排序

sort -k3.7nbr 0k 3.1 nbr -k 3.4nbr ls.txt

ls.txt

abc  123  11/25/2008

abc2  123 10/20/2007

 

echo 带双引号 shell echo 双引号_bash_37

 

echo 带双引号 shell echo 双引号_ico_38

path-对源文件进行diff操作

 

 

echo 带双引号 shell echo 双引号_echo 带双引号_39

 

echo 带双引号 shell echo 双引号_echo 带双引号_40

打补丁后 c1变成了c2的样子

 

tr 替换/删除字符

 

echo 带双引号 shell echo 双引号_echo 带双引号_41

 

删除相邻的重复

 

echo 带双引号 shell echo 双引号_vim_42

sed

替换,  2s表示只对第二行替换

 

echo 带双引号 shell echo 双引号_ico_43

-n选项和p命令一起使用表示只打印那些发生替换的行:

来自 <http://man.linuxde.net/sed>

 

echo 带双引号 shell echo 双引号_echo 带双引号_44

除了匹配行的其他行

 

echo 带双引号 shell echo 双引号_echo 带双引号_45

去掉注释

echo 带双引号 shell echo 双引号_vim_46

写入文件:w命令  

在example中所有包含test的行都被写入file里:

sed -n '/test/w file' example

 

来自 <http://man.linuxde.net/sed>

 

 

 

 

变量

 

read 来读取

 

echo 带双引号 shell echo 双引号_vim_47

declare -i 声明 整数变量

              -a 声明array

              -r   readonly

 

echo 带双引号 shell echo 双引号_ico_48

 

echo 带双引号 shell echo 双引号_vim_49

#、##变量内容的删除替换

注意 从左的话 就要指定 最左端的/ ?

  从右边 就要指定最右端的 bin?

删除匹配的内容

#删除最短, ##删除最长

 

echo 带双引号 shell echo 双引号_vim_50

 

echo 带双引号 shell echo 双引号_vim_51

%与%%类似。 不过是从右往左

 

 

删除最后一个

这里从: 到 bin止

echo 带双引号 shell echo 双引号_ico_52

保留第一个

 

echo 带双引号 shell echo 双引号_ico_53

/  、//替换 一个和全部

 

echo 带双引号 shell echo 双引号_ico_54

 

 

new_var={old_var-default} 若old_var不存在,则default值,否则为$old_var

 

echo 带双引号 shell echo 双引号_ico_55

 

:-    如果是空或者空字符,都为default内容

 

echo 带双引号 shell echo 双引号_ico_56

 

new_var={old_var+default},若old_var不存在 则new_var为空,否则为default

当为+:的时候,old_var不存在或者为空,new_var为空,否则default

new_var={old_var=default}与 - 的区别在于,old_var是否设置。 详细参考《鸟哥的Linux》p316

 

new_var={old_var?expr},若old_var不存在 则输出expr

new_var={old_var:?expr},若old_var不存在或者为空字符串则输出expr

 

echo 带双引号 shell echo 双引号_echo 带双引号_57

 

获取字符串长度

${#param}

 

echo 带双引号 shell echo 双引号_vim_58

字符串分片切割

${param:begin:end}  

 

echo 带双引号 shell echo 双引号_ico_59

 

 

编码转换

iconv -f 旧编码 -t 新编码 文件 -o 输出到新文件

繁体转简体

iconv -f UTF8 -tbig5 cn.txt |  iconv -f big5 -t gb2312 |iconv -f gb2312 -t utf8 -o cn2.txt

 

echo 带双引号 shell echo 双引号_bash_60

简体转繁体

iconv -f UTF8 -tgb2312 c.txt |  iconv -f gb2312 -t big5 |iconv -f big5 -t utf8 -o cn.txt

 

echo 带双引号 shell echo 双引号_ico_61

 

 

格式化输出

nl , cat -n 输出行号

 

echo 带双引号 shell echo 双引号_bash_62

fold设置行长度

连续的字符不会被切断

 

echo 带双引号 shell echo 双引号_vim_63

printf

 

echo 带双引号 shell echo 双引号_vim_64

ftp

ftp ftp.gnu.org

anonymous

cdgnu/diction

ls

get xx

bye

 

echo 带双引号 shell echo 双引号_bash_65

 

./configure && make && make install 编译

 

./configure 后生成Makefile

Makefile描述了生成最后可执行程序时各部件之间的依赖关系

make后 生成了许多-o的文件  这里是Makefile里面指定的。

 

echo 带双引号 shell echo 双引号_vim_66

make clean 后清除了

 

echo 带双引号 shell echo 双引号_echo 带双引号_67

移除后 再make就生成了

 

echo 带双引号 shell echo 双引号_vim_68

make install后 出现在/usr/local/bin中

 

echo 带双引号 shell echo 双引号_ico_69

 

make install后的程序卸载:

可以直接 rm $(whichxx)

 

echo 带双引号 shell echo 双引号_bash_70

Makefile里有没有uninstall这一节,如果有的话,就可以用

make uninstall

如果没有的话,你修改一下Makefile,把cp改称rm -rf就行了

 

 

其他

进制

分别为 16 2 8 10 进制

 

echo 带双引号 shell echo 双引号_vim_71

位运算和 数字的三元表达式

 

echo 带双引号 shell echo 双引号_ico_72

 

数组

 

echo 带双引号 shell echo 双引号_bash_73

多个命令执行重定向

 

echo 带双引号 shell echo 双引号_vim_74

 

进程替换

<(list)

list为一系列命令

 

echo 带双引号 shell echo 双引号_ico_75

把awk的输出赋值到变量

利用进程替换 

效果如图:

read i j <  <(echo "$(echo "123 456" |awk '{printf "%d %d\n",$1,$2}')")
echo "$i_$j"

 

echo 带双引号 shell echo 双引号_bash_76