1 文件流
Linux shell中有三种输入\输出流:标准输入流,标准输出流,标准错误流。每种流都有一个文件描述符、一个常用的缩写名称、一个常用的默认设备(这个有点意思)。
键盘输入(默认设备),其实就是将输入发送到标准输出流,其缩写为stdin,标识为0。
终端显示(默认设备),其实就是标准输出流,其缩写为stdout,标识为1。
终端上显示错误信息(默认设备),其实就是标准错误流,其缩写stderr,标识为2。
[ 其中上面三个标识,可以用于当一个命令执行完后,利用最后的输出信号,进行判断($?)命令\脚本 执行是否成功,如果$? 为2 则代表执行失败。]
2 最常使用的逻辑运算符
场景1:当前2个命令,如果要前面一个执行完再执行后面一个;
&& 符号链接,如果使用此符号链接,则只有当前面一个执行成功才会执行后面一个。
场景2:当前2个命令,如果前面一个执行失败,则执行后面一个;(失败则退出)
|| 当前面一个执行失败,则执行后面一个(clear.sh || return ),执行失败则退出。
3 将流使用stdin,stdout
场景:需要将命令、脚本执行的过程、结果同时输出到文本和窗口。
一般使用后台、或者 >> 会将结果、过程都输出到指定文件。此时使用tee命令即可。
tee会把输出拆分为两个流,一个流传送到stdout,一个传送到stdin
#!/bin/bash
ls -la | tee test.txt
# 此时窗口会输出,并且文件里面也会有输入
4 文件查看
大多数情况都是可以按文件后缀看到文件类型,但是在Linux中文件后缀(扩展名)并不是使用文件正常工作中所必须的部分,它们的存在仅仅是处于习惯,是其他操作系统带来的残留影响。
一般使用ls -lF ,但是只能显示文件、文件夹、可执行等大概信息,实际的类型还是无法知晓。file 命令可以查看文件的类型,文件属性.
file file_name ;
file * # 查看当前文件夹所有文件的类型
#活着.1080p.HD中字: directory
[www.66ys.org]守法公民BD中英字幕1024x576无水印版.rmvb: RealMedia file
0C844F52E8350E67FD41BC45AFCBC16EA7B88830.torrent: BitTorrent file
43B9C14A60C2DDA9BB55B9FC8A7A0779B18B69CE.torrent: BitTorrent file
800: directory
B0444518E3B2FB1933C769F44D4986031BCC0659.torrent: BitTorrent file
B4263935317AD1103550783132B57456CC3A854B.torrent: BitTorrent file
D50319A98262D564E2E3B2E05866D72933868219.torrent: BitTorrent file
Everything-1.4.1.988.x86-Setup.exe: PE32 executable (GUI) Intel 80386, for MS Windows
hat.1080p.BD中英双字[最新电影www.6vhao.tv].mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
teleport-assist-windows-3.0.1.6.exe: PE32 executable (GUI) Intel 80386, for MS Windows, Nullsoft Installer self-extracting archive
阿特米斯的奇幻历险.1080p.HD中英双字[66影视www.66Ys.Co].mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
艾娃.1080p.HD中英双字: directory
爱与怪物.1080p.BD中英双字: directory
悲惨世界.1080p.HD中字[66影视www.66Ys.Co].mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
超人:明日之子.1080p.HD中字: directory
templates: directory
test.py: Python script, UTF-8 Unicode text executable, with CRLF line terminators
tornado-resources: directory
tornado-resources-master.zip: Zip archive data, at least v1.0 to extract
untitled: directory
uwsgi.ini: UTF-8 Unicode text
测试.py: Python script, UTF-8 Unicode text executable, with CRLF line terminators
试验.py: Python script, UTF-8 Unicode text executable, with CRLF line terminators
5 文件拼接
需求将两个文件合成一个文件
cat file1 file2 > file3
此时是将stdout 输入到stdin ,此时如果使用cat file1 file2 >file2 则会报错,文件不可以同时进行输入,输出操作。
6 显示文件时输出行号,
cat -n
7 逐步查看文件文本。
使用cat能方便看文件,但是如果日志文件太大,那就完全没用了。
more、less、pg、most等都是可以的,但是less是1985年发布的改进版more。less确实比
more好用
less 使用最多的翻页快捷键
pageDe、e或者空格 前进一页
PageUp 、b 后退一页
e、j、return、下箭头 前进一行
y、k、上箭头 后退一行
G p 前进到文件结尾
1G 回到文件开头
Q 退出less命令
使用less 后,然后在界面中使用 = (等号)可以查看到文件信息,当前页数等。
less -N file 可以在查看时显示行数,
less还有个使用较少的方式,一边查看,然后编辑当前页面。使用less后,然后使用v,则会进行编辑当前页面,然后退出后会继续查看。当然我们使用最多的还是vim,所以这个命令有点鸡肋。
8 tail、head命令
tail 查看文件末尾行数,默认是10 行,
tail -100f 直接看到最后100行,并且会持续进行输出到窗口显示,此命令也可以同时查看多个文件。
head 查看文件前10行,
head -n 5 查看文件前5行 ,后面可以接多个文件,多文件进行查看。