粗略过了一遍,记录一下方便自己查询。
利用cat连接文件
a.jpg.001 a.jpg.002
cata.jpg.* > a.jpg
利用cat创建文件
cat < 文件 与 cat 文件 的效果一样。
使用less 来分页显示
上下 jk,首尾Gg,翻页pageup,pagedown
配合 sort -r 倒序
head , tail
$((expression))
expression 是数值或者算术操作符
花括号扩展
命令替换
引号
双引号
echo的时候 加上双引号会将引号内容当做一个参数。
因此 会使得echo 的单词分隔失效。此外路径名、波浪线、花括号扩展也会失效。
但是算数扩展和命令替换还会生效。
单引号
使所有扩展都失效
转义字符
经常用于配合双引号使用
也用于\t之类 , 表示制表符等
单引号中的\只是一个简单的字符
echo 命令带上-e 就能解释转移字符序列
history 与 !
history 显示出 行号 命令
可以通过 !行号 来执行
shell如何寻找命令
当输入ls的时候, shell会寻找 PATH中目录列表
而 PATH 通常定义在/etc/profile中
最后一行 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 的文件
action
-exec command {} ;
这里{} 是指当前路径名, ;是必须的结尾
-ok 会在执行前询问
多次执行
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三段
-regex 正则查找文件
stat : ls的加强版
gzip,gunzip , bzip2,bunzip2
bzip更慢质量更高
gunzip -c xx.gz |less 查看
zcatxx.gz |less
tar归档
tar -zcvf 归档并压缩 gzip
tar -zxvf 解压 gzip
zip压缩+归档,主要用于与windows交互
rsync同步
rsyncsource destination
source 和 destination必须有一个是本地
远程 由 rsync://[user@]host:[:port]/path指定
$$ 为当前bash进程
可见 , 当前进程 运行了子程序
grep
-n 显示行号
-v 不匹配
-L 不包含的文件
-l 包含的文件
没有\d 此外{ } 需要转移
这里可以直接 find ./-regex "[0-9]" -ok delete
设置LANG
为了防止某些错误
vim/etc/profile
LANG=en_US.UTF-8
LANGAGE=en_us
对文本的处理
diff :逐行比较文件
!表示被改变的行
comm:逐行比较两个文件
uniq 报告并忽略重复行
只能检测相邻的行
sort 对文本行排序
-n 基于数值排序
-k 对 指定的字符排序 这里 -k 2 表示对第二个字段排序
-t 表示 指定分隔符,默认空格或者制表符
多键值排序
sort -k3.7nbr 0k 3.1 nbr -k 3.4nbr ls.txt
ls.txt
abc 123 11/25/2008
abc2 123 10/20/2007
path-对源文件进行diff操作
打补丁后 c1变成了c2的样子
tr 替换/删除字符
删除相邻的重复
sed
替换, 2s表示只对第二行替换
-n选项和p命令一起使用表示只打印那些发生替换的行:
来自 <http://man.linuxde.net/sed>
除了匹配行的其他行
去掉注释
写入文件:w命令
在example中所有包含test的行都被写入file里:
sed -n '/test/w file' example
来自 <http://man.linuxde.net/sed>
变量
read 来读取
declare -i 声明 整数变量
-a 声明array
-r readonly
#、##变量内容的删除替换
注意 从左的话 就要指定 最左端的/ ?
从右边 就要指定最右端的 bin?
删除匹配的内容
#删除最短, ##删除最长
%与%%类似。 不过是从右往左
删除最后一个
这里从: 到 bin止
保留第一个
/ 、//替换 一个和全部
new_var={old_var-default} 若old_var不存在,则default值,否则为$old_var
:- 如果是空或者空字符,都为default内容
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
获取字符串长度
${#param}
字符串分片切割
${param:begin:end}
编码转换
iconv -f 旧编码 -t 新编码 文件 -o 输出到新文件
繁体转简体
iconv -f UTF8 -tbig5 cn.txt | iconv -f big5 -t gb2312 |iconv -f gb2312 -t utf8 -o cn2.txt
简体转繁体
iconv -f UTF8 -tgb2312 c.txt | iconv -f gb2312 -t big5 |iconv -f big5 -t utf8 -o cn.txt
格式化输出
nl , cat -n 输出行号
fold设置行长度
连续的字符不会被切断
printf
ftp
ftp ftp.gnu.org
anonymous
cdgnu/diction
ls
get xx
bye
./configure && make && make install 编译
./configure 后生成Makefile
Makefile描述了生成最后可执行程序时各部件之间的依赖关系
make后 生成了许多-o的文件 这里是Makefile里面指定的。
make clean 后清除了
移除后 再make就生成了
make install后 出现在/usr/local/bin中
make install后的程序卸载:
可以直接 rm $(whichxx)
Makefile里有没有uninstall这一节,如果有的话,就可以用
make uninstall
如果没有的话,你修改一下Makefile,把cp改称rm -rf就行了
其他
进制
分别为 16 2 8 10 进制
位运算和 数字的三元表达式
数组
多个命令执行重定向
进程替换
<(list)
list为一系列命令
把awk的输出赋值到变量
利用进程替换
效果如图:
read i j < <(echo "$(echo "123 456" |awk '{printf "%d %d\n",$1,$2}')")
echo "$i_$j"