下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 59 | 管道
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

Linux实战技能100讲

共118讲 · 118课时,约1200分钟
4248
免费
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 什么是Linux
免费
04 | Linux的内核版本及常见发...
免费
05 | 安装VirtualBox虚拟机
免费
06 | 在虚拟机中安装Linux系统
免费
07 | 第一次启动Linux
免费
08 | 万能的帮助命令:man、hel...
09 | 初识pwd和ls命令
10 | 详解ls命令
11 | 详解cd命令
12 | 创建和删除目录
13 | 复制和移动目录
14 | 如何在Linux下进行文本查...
15 | 打包压缩和解压缩
16 | Vim的四种模式
17 | Vim的正常模式
18 | Vim的命令模式
19 | Vim的可视模式
20 | 用户和用户组管理及密码管...
21 | su和sudo命令的区别和使用...
22 | 用户和用户组的配置文件介...
23 | 文件与目录权限的表示方法
24 | 文件权限的修改方法和数字...
25 | 权限管理以及文件的特殊权...
26 | 网络管理
27 | 查看网络配置
28 | 修改网络配置
29 | 网络故障排除命令
30 | 网络管理和配置文件
31 | 软件包管理器的使用
32 | 使用rpm命令安装软件包
33 |使用yum包管理器安装软件包
34 | 通过源代码编译安装软件包
35 | 如何进行内核升级
36 | grub配置文件介绍
37 | 使用ps和top命令查看进程
38 | 进程的控制与进程之间的关...
39 | 进程的通信方式与信号:ki...
40 | 守护进程
41 | screen命令和系统日志
42 | 服务管理工具systemctl
43 | SELinux简介
44 | 内存与磁盘管理
45 | 内存查看命令
46 | 磁盘分区和文件大小查看
47 | 文件系统管理
48 | i节点和数据块操作
49 | 分区和挂载
50 | 分区和挂载磁盘配额
51 | 交换分区swap的查看与创建
52 | 软件RAID的使用
53 | 逻辑卷LVM的用途与创建
54 | 系统综合状态查看命令sar...
55 | 什么是Shell
56 | Linux的启动过程
57 | Shell脚本的格式
58 | 脚本不同执行方式的影响
59 | 管道
60 | 重定向
61 | 变量赋值
62 | 变量引用及作用范围
63 | 环境变量、预定义变量与位...
64 | 环境变量配置文件
65 | 数组
66 | 转义和引用
67 | 运算符
68 | 特殊字符大全
69 | test比较
70 | if判断的使用
71 | if-else判断的使用
72 | 嵌套if的使用
73 | case分支
74 | for的基本使用
75 | C语言风格的for
76 | while循环和until循环
77 | 循环的嵌套和break、conti...
78 | 使用循环处理位置参数
79 | 自定义函数
80 | 系统函数库介绍
81 | 脚本资源控制
82 | 信号
83 | 一次性计划任务
84 | 周期性计划任务
85 | 为脚本加锁
86 | 元字符介绍
87 | find 演示
88 | sed和awk介绍
89 | sed替换命令讲解
90 | sed的替换指令加强版
91 | sed的其他常用命令
92 | sed多行模式空间
93 | 什么是sed的保持空间
94 | 认识awk
95 | awk的字段
96 | awk表达式
97 | awk判断和循环
98 | awk数组
99 | awk数组功能的使用
100 | awk函数
101 | 防火墙概述
102 | iptables规则的基本使用...
103 | iptables过滤规则的使用
104 | iptables nat表的使用
105 | firewalld
106 | SSH介绍之Telnet明文漏洞
107 | SSH服务演示
108 | FTP服务器 vsftpd介绍与...
109 | vsftpd配置文件介绍
110 | vsftp虚拟用户
111 | samba服务演示
112 | NFS服务
113 | Nginx基本配置文件
114 | 使用Nginx配置域名虚拟主...
115 | LNMP环境搭建
116 | DNS服务的原理
117 | NAS演示
118 | 结束语

精选留言(3)

  • 2019-09-02
    最后关于内部命令结果不会返回给父进程这块没理解,我用的 history (内部命令) 接 wc 来查看一共有多少条历史记录,看起来是可以正常工作,并且结果也会返回给父 shell。

    $ history | wc -l
    $ 63

    作者回复: 1 内部命令在子进程中的执行行为不会影响到父进程,并非执行结果的显示
    2 history | wc -l 这条命令是把history的标准输出作为了wc的标准输入(这是管道的默认功能),wc执行的时候会创建子进程,并把标准输出指向父进程(当前shell)的标准输出,所以看到输出结果是63
    3 对变量赋值操作 echo 123 | read a ,再查看 a变量的值 echo $a 是空值,这才是需要避免的子进程没有把变量返回给父进程的错误示例。

    2
    1
  • 2019-09-26
    [root@localhost ~]# cd /var | cat | ps -f

    执行这个命令的时候, 会显示:
    UID PID PPID C STIME TTY TIME CMD
    root 9769 29848 0 13:04 pts/2 00:00:00 ps -f
    root 29848 29751 0 12:17 pts/2 00:00:00 -bash

    问题:
    1. 为啥cat命令没有打印出pid出来。 单独cat | ps -f会打印出来
    2. 为啥路径还是在~, 而不是在/var. cd这个内部命令没有起作用么?
    展开

    作者回复: 1 试一下 单独运行cat 和 cat <<< "hello" ,你会发现cat如果有输入并正常结束,是不会产生阻塞的;也就是执行ps命令的时候,cat命令已经执行结束了,自然看到cat进程。

    2 管道符会产生子进程,cd /var 相当于执行bash 然后运行了cd /var 再执行了exit ,所以当前shell下“没起作用”

  • 2019-09-06
    老师, 我的电脑上执行:.
    vscode echo 1234 | read b
    ➜ .vscode echo $b
    1234

    作者回复: 执行之前先使用unset b,是否父进程提前为b做了赋值?
    另外vscode我这里没有复现环境,考虑用标准的RHEL7试一下