管道、重定向、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<Enter> 移动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
保存退出
很多命令 是要多操作几次才能记住的,其实命令也不多的,经常用习惯就好了,不难的