Linux 常用操作汇总

Linux命令详解

如何编辑大文件?

’’’
Linux下的话可以用sed来查找和编辑,做法是:

  1. 先用grep做一次特征字符串过滤,打印出行号,命令是grep -n -H –color ‘xxxx’ file;
  2. 然后用sed做一次单行编辑预览,命令是sed -n ‘nnns/xxx/yyy/p’ file | tee file.done,其中nnn是行号,s是替换命令,xxx是替换前内容,yyy是替换后内容,file.done是结果;
  3. 再次用grep确认修改正确后,执行sed -i ‘nnns/xxx/yyy/’ file,让修改生效。

作者:梁涛
链接:https://www.zhihu.com/question/20654719/answer/15756024
来源:知乎
’’’

补充说明
linux 三兄弟,awk,grep,sed
sed是一个流编辑器,专门处理行文件,可以对一行或多行进行快捷的处理
处理的命令列举如下

详细参考: 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压缩率调整

常用命令

lsof

​ 列出当前系统打开文件的工具,在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

​ 当初使用到这个命令的场景主要是/tmp莫名其妙的被占满了,但是直接使用duls根本无法看到大文件,只有用df命令可以发现tmp已经使用100%。此时,使用lsof可以进一步进行调查。

​ 使用lsof命令的原因之一就是,当一个磁盘不能被卸载时,借助lsof这个命令我们可以轻易的识别哪些文件正在被占用。以下是常用的场景:

  1. 通过lsof命令列出打开的文件(可以针对特定用户)lsof -u apache

  2. 列出特定端口运行的进程

    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

  3. 列出ipv4以及ipv6的文件lsof -i 4

  4. 列出TCP端口范围1-1024端口lsof -i TCP:1-1024

  5. 通过脱字符排除某个用户lsof -u^root

  6. 查找特定用户使用的文件和命令lsof -i -u apache

  7. 列出所有网络连接lsof -i

  8. 杀死特定用户的所有活动kill -9 lsof -t -u named

  9. 采用PID搜索lsof -p 1

  10. 恢复删除的文件

    ​更加详细的使用,请查看枯木的博文

Vim学习

说明:vim有普通模式,Ex命令模式,编辑模式,选择模式等。凡是增加了 : 的命令,都是在Ex命令模式下使用的。

分屏幕操作

  1. 普通模式中,使用C-w开头的快捷键 可以针对当前窗口进行拆分
  2. 分割: s水平分割,h垂直分割
  3. 跳转:w循环跳转,hjkl分别是左右上下跳转;
  4. 调整:= 所有的窗口等宽,等高;_ 最大化活动窗口的高度,| 最大化活动窗口的宽度 , [N]<C-w>_ 把活动窗口的高度设定为 N 行, [N]<C-w>| 把活动窗口的高度设定为N列
  5. 关闭:c关闭当前窗口 ,o关闭其他窗口
  6. vim 分屏Ex命令
  7. 分割::sp[ilt]:vsp[ilt],后面+文件名,可以直接打开文件
  8. 跳转:
  9. 关闭::clo[se]命令,:on[ly]命令

分页签

vim可以分页签进行处理,主要命令是 :tab 相关的命令,切换tab也是通过命令进行

  1. <C-w>T 把当前窗口挪到新的标签
  2. :tabe[dit] {filename} 创建 新的标签,指定打开文件,没有文件名的话,就是打开新文件
  3. :tabc[lose] :tabo[nly] 关闭当前标签,或者只保留当前标签
  4. 跳转::tabn[ext] {N} {N}gt 切换到指定页签

重复

vim的重复命令,活用各种组合命令键,效果非常不错,比如在行最后增加的话,使用A 而 不使用 $a

  1. . 普通模式下重复上一次的命令
  2. @; 命令行重复
  3. @@ 宏命令重复

自增自减和简单宏

自增和自减

C-a 是将数字自增1,C-x是将数字自减1,通常都是10进制的柱子。但是如果遇到0开头的数字,vim默认会将其当做 8进制的数字。

执行了以下设置的话,可以指定vim任意处理都是10进制的

简单的宏

q 开始录制宏,随后指定的一个按钮(比如a),可以将宏绑定在按钮之上。输入结束以后,再次按下q ,宏定义结束。

通过 @+[宏绑定字母] 进行宏的调用。多次调用的话,可以有如下的简化操作

  1. 通过@@ 重复执行一次
  2. 通过[N]@@重复执行N次
组合使用

场景:对每一行的数字进行+4096的操作

组合命令:<qa><0><4096C+a><j><q><@a><100@@>

组合命令解释(每个尖括号里代表一个单独的命令):

  1. 开始录制宏
  2. 到行首
  3. 对第一个数字执行4096次自增操作
  4. 换行
  5. 结束录制宏
  6. 执行一次宏
  7. 执行100次宏

调用外部命令

场景:需要对文件的第二列排序,数字形式

组合命令::0,$!sort -k2 -n [-t]

组合命令解释:将0~末尾的行作为输入,调用sort命令。

其他

  1. * 可以快速查询和 显示匹配的内容
  2. 格式化:> 向右边 缩进 一行,< 向 左边 缩进 一行, = 自动缩进;组合命令举例:gg=G 将所有行进行自动化的缩进。
  3. 消除搜索的高亮 :noh

Emacs学习

spacemacs

发表评论

邮箱地址不会被公开。 必填项已用*标注