管道、重定向、vim编辑器 多操作几次自然而然就记住了 一. 管道 将一个命令的输出(结果)作为输入给另一个命令处理,管道可以有多个 # stat 1 | tail -3 # tail -5 /etc/passwd |head -1 # cat /etc/passwd |wc -l wc 统计有多少行,字符等 -l lines,行数 -L 字符串最大长度(不包含结束符) -c/-m 字符(linux系统中的字符串有一个结束符‘\0’) -w 单词 # cat /etc/passwd |grep root |wc -l grep 查找内容 # cd /etc # grep root * --表示在当前目录的所有文件里查找有root关键字的行 处理字符串命令: cut --切割 -d --分割符 -f --列 ,负数也可以 sort --排序 -n --按照数字大小排序,从小到大 -r -n --按照数字大小排序,从大到小 uniq --重复的次数 -c --重复次数 tr --删除或替换字符串(替换的可以是字母、数字、符号等) -d --删除 # cat /etc/passwd | head -1 | cut -d':' -f2 # cat /etc/passwd | head -1 | cut -d':' -f1,2 # cat /etc/passwd | head -1 | cut -d ':' -f -2 # cat /etc/passwd | cut -d':' -f3 | sort -n # cat /etc/passwd |cut -d':' -f7 | uniq -c # cat /etc/passwd | head -1 | tr ':' ',' --将':'替换成',' # cat /etc/passwd | head -1 | tr -d ':' # cat /etc/passwd | head -1 | tr ':' '\n' # cat /etc/passwd | head -1 | tr ':' 'A' # cat /etc/passwd | head -1 | tr 'root' 'ROOT' 二. 重定向 0 标准输入(stdin) ----- 终端 --------标准输出(stdout) 1 | | 错误输出(stderr) 2 /dev/stdin 标准输入设备(键盘) /dev/stdout 标准输出设备 /dev/stderr 标准输出设备 # ls /proc/self/fd/ 0 1 2 3 --0,1,2系统自动创建 标准输入:指你键盘的输入 标准输出:指结果里正确的输出,一般的设备是屏幕,可以用> 或者 1> 来重定向 错误输出:指结果里错误的输出,一般的设备是屏幕,可以用 2> 来重定向 将本来输出到屏幕的内容输出到其他地方 # ls > 1.txt --重定向到某个文件(标准输出) # ls abc 2> 1.txt --重定向到某个文件(标准出错) # ls &> 1.txt --&,表示1,2,清空内容再写入 # ls 1.txt aaa > 1.txt 2>&1 --2>&1与&>作用一样 # ls abc &>> 1.txt -->>,追加内容 # ls install.log.syslog fdsafasf 1> 1.txt 2> 2.txt # cat 1.txt > /dev/null --/dev/null类似一个黑洞设备 # echo 123 > 1.txt --覆盖之前的内容 # echo 456 >> 1.txt --追加内容 # wc -l < 1.txt --将文件的内容重定向出来 2 # cat > 1.txt hello hello --ctrl+d结束 # cat 1.txt hello hello # cat > 123.txt << EOF --EOF是end of file的缩写,就是一个标记 > 111 > 222 > EOF # cat >> 123.txt << HAHA --相比于上一条,这是追加内容,而且标记不一定要用EOF,只要前后一致成对出现就可以 > 333 > 444 > HAHA 三. vim编辑器的使用 vi vim (增强版vi,现在基本各种linux版本都带有vim) vi 有三种模式: 1,一般普通模式: 2,编辑模式: i I o O a A r R 3,命令行模式: : / ? 一般普通模式: 移动光标的方法 h 向左箭头键(←) 光标向左移动一个字符 j 向下箭头键(↓) 光标向下移动一个字符 k 向上箭头键(↑) 光标向上移动一个字符 l 向右箭头键(→) 光标向右移动一个字符 ctrl+b 向上翻页 = page up ctrl+f 向下翻页 = page down + 光标移动到非空格符的下一行 - 光标移动到非空格符的上一行 0 行首 $ 行尾 G 文件最后一行 gg 文件第一行 n 查找 /xxx或者?xxx 查找某个单词 n 向下接着找 N 向上接着找 替换(switch) :n1,n2s/old/new/g 从n1到n2行将old替换成new,g表示替换所有的(global) :1,$s/old/new/g 将整个文件的old替换成new :%s/old/new/g 将整个文件的old替换成new :%s#old#new#g 将整个文件的old替换成new :1,$s/old/new/gc c=确认(confirm) 复制粘贴和删除 x,X x向后删除一个字符,X向前删除一个字符 dw 删除一个单词 word dd 删除一行 delete ndd 删除n行 dG 删除光标所在行到文件最后一行的内容 d$ 删除光标所在处,到该行的最后一个字符 d0 删除光标所在处,到该行的最前面一个字符 yy 复制一行 yank nyy 复制n行 p,P 粘贴 paste u 还原,撤销 undo ctrl+r 重做 插入模式: i,I 光标所在处插入 o,O 下一行插入 a,A 光标所在下一个字符处插入 r,R r替换一个字符,R会一直替换光标所在的文字,直到按下ESC为止 [Esc] 退出编辑模式,回到一般模式中 指令模式: :w 存档(write) :q! quit,退出,!,强制 :qa 退出所有的窗口 :wq! 保存并退出 :x 保存并退出 ZZ 保存并退出 :w [filename] 另存为 :r [filename] 将另外一个文件读入到正在编辑的文件 :n1,n2 w [filename] 将n1到n2的内容储存成filename文件 :n n是数字,快速定位到n行($) vim 1.txt +100 打开1.txt光标直接到100行 :set nu 显示行号 :set nonu 取消行号 :set ic(ignorecase 的缩写) 忽略大小写 :set noic(noignorecase 的缩写) 不忽略大小写 区块选择: v 字符选择 V 行选择 ctrl+v 区块选择 y 将反白的地方复制 d 将反白的地方删除 p 粘贴 n > 右移 n < 左移 多窗口功能: :sp [filename] 水平多窗口 sp = splite 分割 :vsp [filename] 垂直多窗口 v = vertical splite ctrl+w+w 在不同的窗口之间切换 vim环境设定: /etc/vimrc 全局配置文件 ~/.vimrc 用户的配置文件 --手动创建 作业: 创建一个文件命名为test.txt,把/etc/passwd文件的内容全部导入test.txt中 把test.txt文件中的第10行到15行删除 第1到第9行复制到文件的最后 把所有的:号替换成*号,所有的bin替换成sbin 保存退出 很多命令 是要多操作几次才能记住的,其实命令也不多的,经常用习惯就好了,不难的 |
|