linux基础笔记-5-重定向、vim及文件查找

9. io

三个默认io(fd):

  • stdin:0,键盘
  • stdout:1,显示器
  • stderr:2,显示器

重定向

重定向符:

>覆盖输出,>>追加输出

为避免误用>覆盖关键文件, 可以set -C禁用>,set +C启用
强制覆盖输出,则使用 >|

2>  #重定向错误输出
2>> #重定向错误追加输出
&>  #重定向标准输出、错误输出至同一个文件
&>> #不存在这种用法

输入重定向:<

cat 默认标准输入

#小写转大写:
tr 'a-z' 'A-Z' < file 

<<  EOF #文档结束标记
cat << EOF
> line 1
> line 2
> EOF
line 1
line 2

pipe

管道:一个命令的输出作为另一个命令的输入。

echo 'foobar' | tr 'a-z' 'A-Z'
echo "abc" | passwd --stdin USERNAME

linux哲学思想之一:组合小命令,完成复杂任务。

tee命令

读取stdin,输出stdout和文件。

echo foobar | tee 1.txt,tee会输出到屏幕并保存到1.txt。

wc -l test.c | cut -d' ' -f1,仅显示行数

练习

1.统计文件个数
ls | wc -l
注意不加-l:ls -l | head -2

2.获取当前用户所有shell
cut -d: -f7 /etc/passwd | sort -u
注:/bin/false是最严格的禁止login选项,一切服务都不能用,而/sbin/nologin只是不允许系统login

3.显示目录所有文件类型

file ./*
file ./$(ls .)
file `ls .`
ls . | file  #错误
ls | xargs file #整错
# 很多命令不支持pipe传递参数,而xargs可以把stdin数据转换为命令行参数。

4.取出文件第2行
head -2 simple.c | tail -1

5.显示passwd倒数第二个用户的用户名和shell,显示并保存
tail -2 /etc/passwd | head -1 | cut -d: -f1,7 | tee 1.txt

6.显示etc目录pa开头文件的个数
ls -d /etc/pa* | wc -l
注意不能计算pa*目录中的文件,即不展开目录。

7.将alias cls=clear添加至.bashrc
echo "alias cls=clear" | >> ~/.bashrc

10.vim

文本编辑器:处理ascii
字编辑器:word,wps等

vim:全屏,模式化编辑器

vim +行号 file
vim + file		#直接编辑最后一行
vim +/PATTERN	#直接编辑第一次匹配位置

模式

常用三种模式:

  • 编辑模式,也叫命令模式
  • 输入模式
  • 末行模式

其它还有:替换模式,可视模式。


常用模式转换:

编辑->输入:

  • i:切换
  • a:字符后面
  • o:新建一行
  • I:行首
  • A:行尾
  • O:行的上方

编辑->末行(只能这样进入末行模式)

  • :
  • :1d删除第一行
  • :1,3d删除1-3行
  • 也可以执行shell命令
  • 返回编辑模式:两次esc
  • :wq等价于:x

启用鼠标::set mouse=a

末行模式下
.:当前行
$:最后一行
例如,:.,+2d即删除当前行及下面的2行。


命令模式按R进入替换模式。


可视模式

切换:v,V,ctrl+v

选中后d可删除,y,p命令也可操作。


快捷键

编辑模式下按ZZ,可保存退出

移动光标的方法:

[字符数]h/j/k/l

使用跳转符
w:到下一单词词首
e:到当前或下一单词词尾
b:到当前或下一单词词首
前面也可以加数字

0:跳至行首
^:跳至行首第一个非空字符
$:跳至行尾

nG:跳至第n行
G:最后一行

末行模式直接给出行号 :N

翻屏

ctrl+f:下翻
ctrl+b:上翻
ctrl+d:下翻半屏
ctrl+u:上翻半屏

复制、删除

nd[跳转符],即ndw,nde,ndb

最近一次删除可粘贴
p:整行则粘贴至下方,否则粘贴至后面
P:整行则粘贴至上方,否则粘贴至前面

y命令(复制)用法同d

c也是删除命令,用法同d,但删除后进入输入模式。

替换

r为替换命令。
敲3ra,则光标处的3个字符变为a。

或者直接R进入替换模式

撤销

u
也可前加数字
恢复撤销:ctrl+r

查找

/PATTERN:向下查找
?PATTERN:向上查找

n,N找下一个和上一个

也可以用sed的s命令查找并替换

:.,$-1s#abc#def#g,即当前行的倒数第二行的abc替换为def。

%表示全文,即上一个命令等于:%s#abc#def#gi

11.文件查找

注意区分,grep,egrep,fgrep用于文本查找。

命令

有locate和find。

locate

locate是非实时,模糊匹配, 根据全系统文件数据库进行。优势仅仅是快,不常用。

os每天都会更新数据库。updatedb命令,可手动生成文件数据库。

find

find可遍历指定目录查找,速度慢。但实时,精确。支持很多查找标准。常用。

用法:find 路径 标准 actions
路径默认为当前目录
标准默认为所有文件
actions默认为显示


可选标准:

-name 'FILENAME'
-iname 'FILENAME'  #不区分大小写
-regex #PATTERN
-user #USERNAME
-group #GROUPNAME
-uid UID
-gid GID
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件

# eg.
find /tmp -user root

-type c
              File is of type c:
              b      block (buffered) special
              c      character (unbuffered) special
              d      directory
              p      named pipe (FIFO)
              f      regular file
              l      symbolic link; this is never true if the -L option or the
                     -follow option is in effect, unless the symbolic link  is
                     broken.  If you want to search for symbolic links when -L
                     is in effect, use -xtype.
              s      socket
              D      door (Solaris)
              
-size [+|-]n(k/M/G) -ls
#加减号表示大于小于,无加减号则是小于等于该大小。
-size 1k :小于等于1k 

-atime
-mtime
-ctime
+n  #至少n天
-n  #n天内
#或以分钟为单位
-amin
-mmin
-cmin

-perm MODE #精确匹配
-perm /MODE #任一u、g、o匹配
-perm -MODE #包含MODE位,如755包含644

如果某个文件的属主被删除了,属主会变成uid号。

find的查找条件可以组合

  • -a(默认)
  • -o
  • -not
  • -not \(A -a B\)等价于-not A -o -not B

可选动作:

-print:默认
-ls:#类似ls -l
-ok CMD {} \;    
	#Like  -exec but ask the user first.
-exec CMD {} \ ;
	#反斜线是格式规定,详细说明请man。
#花括号是查到的文件的引用。

# eg.
find ./ -perm -006 -exec chmod o-w {} \;
find ./ -name "*.sh" -a -perm -111 -exec chmod o-x {} \;	

#查找当前系统没有属主或属组且最近1天内被访问过的文件,将其属主属组改为root
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root;root {} \;

#查找所有用户都没有w权限的文件,并显示详细信息
find ./ -not -perm /222 -ls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值