Contents
Linux命令详解¶
如何编辑大文件?¶
’’’
Linux下的话可以用sed来查找和编辑,做法是:
- 先用grep做一次特征字符串过滤,打印出行号,命令是grep -n -H –color ‘xxxx’ file;
- 然后用sed做一次单行编辑预览,命令是sed -n ‘nnns/xxx/yyy/p’ file | tee file.done,其中nnn是行号,s是替换命令,xxx是替换前内容,yyy是替换后内容,file.done是结果;
- 再次用grep确认修改正确后,执行sed -i ‘nnns/xxx/yyy/’ file,让修改生效。
作者:梁涛
链接:https://www.zhihu.com/question/20654719/answer/15756024
来源:知乎
’’’
补充说明
linux 三兄弟,awk,grep,sed
sed是一个流编辑器,专门处理行文件,可以对一行或多行进行快捷的处理
处理的命令列举如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<span></span> a<span class="se">\ </span>在当前行下面插入文本。 i<span class="se">\ </span>在当前行上面插入文本。 c<span class="se">\ </span>把选定的行改为新的文本。 d 删除,删除选择的行。 D 删除模板块的第一行。 s 替换指定字符 h 拷贝模板块的内容到内存中的缓冲区。 H 追加模板块的内容到内存中的缓冲区。 g 获得内存缓冲区的内容,并替代当前模板块中的文本。 G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。 l 列表不能打印字符的清单。 n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。 N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。 p 打印模板块的行。 P<span class="o">(</span>大写<span class="o">)</span> 打印模板块的第一行。 q 退出Sed。 b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。 r file 从file中读行。 t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。 w file 写并追加模板块到file末尾。 W file 写并追加模板块的第一行到file末尾。 ! 表示后面的命令对所有没有被选定的行发生作用。 <span class="o">=</span> 打印当前行号码。 <span class="c1"># 把注释扩展到下一个换行符以前。</span> |
详细参考: Linux命令大全
bash的任务控制(job control)¶
命令 | 说明 | 备注 |
---|---|---|
& | cmd & 将工作丢到后台执行,会回显 生成 [job number] PID ,完成时候回显 [job number] Done。 |
|
ctrl + z | 将任务放到后台执行,并且暂停 | |
jobs | jobs [-lrs] 查看目前的job,l 同时列出PID, r 仅列出后台正在run的Job, s 仅列出在后台stop的任务, + 表示最后被丢到后台的工作,也是fg 默认从后台取出的工作。- 表示倒数第二个被丢到后台的工作 |
|
fg | fg [%job number] 将对应的jobnumber的任务返回前台,不给ID的话,默认取出最后一个,并且运行 |
|
bg | bg [%job number] 将指定的id的命令进入后台运行,bg + / bg - 将带有标记的命令进入执行 |
|
kill | kill -signal [%job number]PID 结束指定的进程 或者 job |
|
关于压缩¶
tar压缩率调整¶
1 |
<span></span>GZIP="-9" tar zcvf /home/homee.tgz /media |
常用命令¶
lsof¶
列出当前系统打开文件的工具,在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。
当初使用到这个命令的场景主要是/tmp莫名其妙的被占满了,但是直接使用du
、ls
根本无法看到大文件,只有用df
命令可以发现tmp已经使用100%。此时,使用lsof可以进一步进行调查。
使用lsof命令的原因之一就是,当一个磁盘不能被卸载时,借助lsof这个命令我们可以轻易的识别哪些文件正在被占用。以下是常用的场景:
-
通过lsof命令列出打开的文件(可以针对特定用户)
lsof -u apache
-
列出特定端口运行的进程
shell
# lsof -i TCP:53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 16885 named 20u IPv4 61664 0t0 TCP localhost:domain (LISTEN)
# lsof -i UDP:53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
named 16885 named 512u IPv4 61663 0t0 UDP localhost:domain
# lsof -i:53
named 16885 named 20u IPv4 61664 0t0 TCP localhost:domain (LISTEN)
named 16885 named 512u IPv4 61663 0t0 UDP localhost:domain -
列出ipv4以及ipv6的文件
lsof -i 4
-
列出TCP端口范围1-1024端口
lsof -i TCP:1-1024
-
通过脱字符排除某个用户
lsof -u^root
-
查找特定用户使用的文件和命令
lsof -i -u apache
-
列出所有网络连接
lsof -i
-
杀死特定用户的所有活动
kill -9
lsof -t -u named
-
采用PID搜索
lsof -p 1
-
恢复删除的文件
更加详细的使用,请查看枯木的博文
Vim学习¶
说明:vim有普通模式,Ex命令模式,编辑模式,选择模式等。凡是增加了 :
的命令,都是在Ex命令模式下使用的。
分屏幕操作¶
- 普通模式中,使用
C-w
开头的快捷键 可以针对当前窗口进行拆分 - 分割:
s
水平分割,h
垂直分割 - 跳转:
w
循环跳转,hjkl
分别是左右上下跳转; - 调整:
=
所有的窗口等宽,等高;_
最大化活动窗口的高度,|
最大化活动窗口的宽度 ,[N]<C-w>_
把活动窗口的高度设定为 N 行,[N]<C-w>|
把活动窗口的高度设定为N列 - 关闭:
c
关闭当前窗口 ,o
关闭其他窗口 - vim 分屏Ex命令
- 分割:
:sp[ilt]
,:vsp[ilt]
,后面+文件名,可以直接打开文件 - 跳转:
- 关闭:
:clo[se]
命令,:on[ly]
命令
分页签¶
vim可以分页签进行处理,主要命令是 :tab
相关的命令,切换tab也是通过命令进行
<C-w>T
把当前窗口挪到新的标签:tabe[dit] {filename}
创建 新的标签,指定打开文件,没有文件名的话,就是打开新文件:tabc[lose]
:tabo[nly]
关闭当前标签,或者只保留当前标签- 跳转:
:tabn[ext] {N}
{N}gt
切换到指定页签
重复¶
vim的重复命令,活用各种组合命令键,效果非常不错,比如在行最后增加的话,使用A
而 不使用 $a
。
.
普通模式下重复上一次的命令@;
命令行重复@@
宏命令重复
自增自减和简单宏¶
自增和自减¶
C-a
是将数字自增1,C-x
是将数字自减1,通常都是10进制的柱子。但是如果遇到0开头的数字,vim默认会将其当做 8进制的数字。
执行了以下设置的话,可以指定vim任意处理都是10进制的
1 |
<span></span><span class="nb">set</span> <span class="nv">nrformats</span><span class="o">=</span> |
简单的宏¶
q
开始录制宏,随后指定的一个按钮(比如a
),可以将宏绑定在按钮之上。输入结束以后,再次按下q
,宏定义结束。
通过 @+[宏绑定字母]
进行宏的调用。多次调用的话,可以有如下的简化操作
- 通过
@@
重复执行一次 - 通过
[N]@@
重复执行N次
组合使用¶
场景:对每一行的数字进行+4096的操作
组合命令:<qa><0><4096C+a><j><q><@a><100@@>
组合命令解释(每个尖括号里代表一个单独的命令):
- 开始录制宏
- 到行首
- 对第一个数字执行4096次自增操作
- 换行
- 结束录制宏
- 执行一次宏
- 执行100次宏
调用外部命令¶
场景:需要对文件的第二列排序,数字形式
组合命令::0,$!sort -k2 -n [-t]
组合命令解释:将0~末尾的行作为输入,调用sort命令。
其他¶
*
可以快速查询和 显示匹配的内容- 格式化:
>
向右边 缩进 一行,<
向 左边 缩进 一行,=
自动缩进;组合命令举例:gg=G
将所有行进行自动化的缩进。 - 消除搜索的高亮
:noh
Emacs学习¶
spacemacs