Linux 基础-命令帮助文档,IO重定向及管道操作

linux命令分为两种:

  • 内部命令

    linux内置的指令

  • 外部命令

    对应一个位于文件系统某目录下的可执行程序

通过type指令可区分命令类型

[root@senlong ~]# type cd  # 内部命令cd is a shell builtin
[root@senlong ~]# type cat # 外部命令cat is /bin/cat[root@senlong ~]# which cat # 外部命令路径
/bin/cat[root@senlong ~]# whereis cat # 外部命令路径cat: /bin/cat /usr/share/man/man1/cat.1.gz

shell程序搜寻可执行程序文件的路径定义在PATH环境变量中;

[root@senlong ~]# echo $PATH # 输出环境变量

内部命令帮助文档

  • help COMMAND

    [root@senlong ~]# help cdcd: cd [-L|-P] [dir]
      Change the shell working directory.
    
      Change the current directory to DIR.  The default DIR is the value of the
      HOME shell variable.
      ...

外部命令帮助文档

外部命令帮助文档的获取有多种途径,基本上使用man即可满足需求

[root@senlong ~]# man cat

man手册查看方式:

  • gg:头部

  • G: 尾部

  • d: 向下翻半屏

  • u: 向上翻半屏

  • j: 向下一行

  • k: 向上一行

  • 空格:向下翻一屏

SYNOPSIS段落符号

  • [] 可选内容

  • <> 必选内容

  • a|b 二选一

  • ... 同一内容可出现多次

SYNOPSIS
cat [OPTION]... [FILE]...

文本搜索:

  • /KEYWORD:
    以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
    n: 下一个
    N:上一个

  • ?KEYWORD:
    以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
    n: 跟搜索命令同方向,下一个
    N:跟搜索命令反方向,上一个

history命令

  • 作用:管理命令历史
    登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
    登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;

  • 参数
    -a: 追加本次会话新执行的命令历史列表至历史文件中;
    -d: 删除历史中指定的命令;
    -c: 清空命令历史;

  • 快捷操作
    !#: 调用历史中第#条命令;
    !string:调用历史中最近一个以string开头的命令;
    !!: 上一条命令

IO重定向及管道


程序是由指令+数据组成的。换言之,程序是对读入的数据进行处理,再输出数据。数据的输入(Input),输出(Output),简称为IO,在没有指定输入输出的情况下,默认为标准输入和标准输出。打开的文件都有一个文件描述符(fd: file descriptor)表现为一个数字

  • 标准输入:keyborad(键盘), 文件描述符:0

  • 标准输出:monitor(显示屏), 文件描述符:1

  • 标准错误输出:monitor, 文件描述符:2

I/O重定向:改变标准输入与输出的默认位置

标准输出重定向

输出重定向:COMMAND > NEW_POS, COMMAND >> NEW_POS

  • >:覆盖重定向,目标文件中的原有内容会被清除;

  • >>: 追加重定向,新内容会追加至目标文件尾部;

[root@senlong ~]# ls /etc > /tmp/etc.out

注意:覆盖文件内容具有风险

[root@senlong ~]# set -C # 禁止将内容覆盖输出至已有文件中
[root@senlong ~]# ls /etc > /tmp/etc.out
-bash: /tmp/etc.out: cannot overwrite existing file[root@senlong ~]# ls /etc >| /tmp/etc.out # 强制覆盖
[root@senlong ~]# set +C # 允许将内容覆盖输出至已有文件中

标准错误输出重定向

  • 2>: 覆盖重定向错误输出数据流;

  • 2>>: 追加重定向错误输出数据流;

标准输出和错误输出各自定向至不同位置:
COMMAND > /path/to/file.out 2> /path/to/error.out 这种写法会创建两个文件,一个为空

合并标准输出和错误输出为同一个数据流进行重定向:只会生成一个文件

  • &>:覆盖重定向

  • &>>:追加重定向

    [root@senlong tmp]# echo $PATH &> /tmp/path.out

标准输入重定向

输入重定向:<

tr命令:转换或删除字符 默认接受键标准输入(键盘输入)

[root@senlong tmp]# tr abc ABC # 将abc转成ABC
hello
hello
alpha  
AlphA
[root@senlong tmp]# cat testhello world
[root@senlong tmp]# tr eo EO < ./testhEllO wOrld

HERE Documentation:<< 创建文档

  • cat << EOF

  • cat > /path/to/somefile << EOF

    [root@senlong tmp]# cat << EOF
    > how are you?
    > how old are you?
    > EOF
    how are you?
    how old are you?
    [root@senlong tmp]# cat >> /tmp/test.out << EOF
    > how are you?
    > how old are you?
    > EOF
    [root@senlong tmp]# cat /tmp/test.out how are you?
    how old are you?

tee命令

同时在显示屏和文件中输出:一路输入,两路输出

tee [OPTION]... [FILE]...

[root@senlong tmp]# tee /tmp/tee.outhello
hello
world
world
[root@senlong tmp]# cat /tmp/tee.out hello
world

管道 |

COMMAND1 | COMMAND2 | COMMAND3 |...

Note:最后一个命令会在当前shell进程的子shell进程中执行;

[root@senlong tmp]# echo $PATH | tr 'a-z' 'A-Z'/USR/LIB/GOLANG/BIN/LINUX_AMD64:/USR/LOCAL/SBIN:/USR/LOCAL/BIN:/SBIN:/BIN:/USR/SBIN:/USR/BIN:/ROOT/BIN:/USR/LOCAL/GIT/BIN:/ROOT/BIN
[root@senlong tmp]# echo $PATH | tr 'a-z' 'A-Z' | tr -d 'U'/SR/LIB/GOLANG/BIN/LINX_AMD64:/SR/LOCAL/SBIN:/SR/LOCAL/BIN:/SBIN:/BIN:/SR/SBIN:/SR/BIN:/ROOT/BIN:/SR/LOCAL/GIT/BIN:/ROOT/BIN

练习

1.将/etc/passwd文件中的前5行内容转换为大写后保存至/tmp/passwd.out文件中

[root@senlong tmp]# head -n 5 /etc/passwd | tr 'a-z' 'A-Z' > /tmp/passwd.out[root@senlong tmp]# cat /tmp/passwd.out ROOT:X:0:0:ROOT:/ROOT:/BIN/BASHBIN:X:1:1:BIN:/BIN:/SBIN/NOLOGINDAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGINADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGINLP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN

2.将登录至当前系统上用户信息中的后3行的信息转换为大写后保存至/tmp/who.out文件中

[root@senlong tmp]# who | tail -n 3 | tr 'a-z' 'A-Z' > /tmp/who.out
[root@senlong tmp]# cat /tmp/who.out 
ROOT     PTS/0        2017-01-16 17:05 (10.0.2.2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值