RHEL6入门系列之十一,内/外部命令、重定向、管道

简介:

前面一口气介绍了18个命令,可能大家都已经有些晕了。学习Linux就是这样,它不像Windows那样的傻瓜式操作,要想学好Linux是必须要下苦功的。所以,Linux本身就不是一个面向普通用户的桌面操作系统,而是面向专业运维人员的服务器操作系统。不过大家也没必要把Linux中的所有命令都一口气全学完,其实只要掌握了前面这18个命令,就可以说已经通过了Linux入门的第一关,就已经可以来做一些基本操作了。关键还在于要反复练习,把基础打好。

今天主要介绍几个在Bash中经常用到的基本概念和功能。

一、内部命令和外部命令
 
内部命令,指的是集成在 Shell里的命令,属于shell的一部分,系统中没有与命令单独对应的程序文件。只要shell被执行,内部命令就自动载入内存,用户可以直接使用。如cd命令等。
外部命令,考虑到运行效率等原因,不可能把所有的命令都集成在 shell里,更多的Linux命令是独立于shell之外的,这些就称为外部命令。每个外部命令都对应了系统中的一个文件,而Linux系统必须要知道外部命令对应的程序文件所在的位置,才能由shell加载并执行这些命令。如cp、ls等都属于外部命令。
外部命令的程序文件大都存放在 /bin、/sbin、/usr/bin……这些目录里,Linux系统会默认将这些路径添加到一个名为PATH的变量里,执行“echo $PATH”命令可以显示出PATH变量里的保存的目录路径(路径之间用“:”间隔)。
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
每当要执行一个外部命令时, Linux系统就会先从PATH变量所保存的这些路径里去寻找命令所对应的的程序文件,只有找到了程序文件才能正确地去执行外部命令。这也就意味着,如果把一个外部命令所对应的程序文件删了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行,这点我们在以后还会再提到。当然对于我们目前而言,并不需要知道这些外部命令的具体位置,甚至不用刻意地去分辨一个命令到底是内部还是外部命令,因为它们的使用方法都是基本类似的。
 
明白了内部命令和外部命令的区别之后,下面介绍几个相关的命令。
 
1、which 命令——查找外部命令所对应的程序文件
 
which命令用于查找 Linux外部命令所对应的程序文件,其搜索范围由环境变量PATH决定。
如,查找 ls命令所对应的程序文件。
[root@localhost ~]# which ls
alias ls='ls --color=auto'
        /bin/ls
执行命令后,首先显示出系统中所设置的 ls命令的别名,然后是ls命令的程序文件“/bin/ls”。
如果要查找的是一个内部命令,那将找不到任何对应的程序文件。
[root@localhost ~]# which cd
/usr/bin/which: no cd in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
 
2、help 命令——查看内部命令的帮助信息
help命令只能查看内部命令的帮助信息。
如,查看 pwd命令的帮助信息。

 当用help查看外部命令的帮助信息时则会报错。
[root@localhost ~]# help ls
-bash: help: no help topics match `ls'. Try `help help' or `man -k ls' or `info ls'.

对于外部命令,大都可以使用一个通用的命令选项“ --help”,以查看命令的帮助信息。
如,使用“ --help”选项查看ls命令的帮助信息。

3、man命令——查看命令的帮助手册

help命令查看的帮助信息较为简略,如果要查看更为详尽的帮助信息,可以使用 man命令查看指定命令的帮助手册。
如,查看 ls命令的帮助手册。
[root@localhost ~]# man ls
执行 man命令后将进入阅读环境,按q键可以退出。
无论内部命令还是外部命令,都可以使用 man命令查看其帮助手册。
 
二、重定向
 
Linux系统中标准的输入设备为键盘,标准输出设备为屏幕,但在某些情况下,我们希望能从键盘以外的其他输入设备读取数据,或者将数据送到屏幕外的其他输出设备,这种情况称为重定向。 Shell中输入输出重定向主要依靠重定向符号来实现,重定向的目标通常是一个文件。
 
1.  输入重定向
输入重定向就是将命令中接收输入的途径由默认的键盘重定向为指定的文件,需要使用“ <”重定向操作符。如命令“wc < f1”就表示将f1文件的信息作为wc命令的输入。
输入重定向并不常使用,所以这里就不过多介绍了。
 
2.  输出重定向
输出重定向是将命令的输出结果重定向到一个文件中,而不是显示在屏幕上。输出重定向使用“ >”或“>>”操作符,分别用于覆盖、追加文件。
>”重定向符后面指定的文件如果不存在,在命令执行中将建立该文件,并保存命令结果到文件中。“>”重定向符后面指定的文件如果存在,命令执行时将清空文件的内容并保存命令结果到文件中。
如,查看 /etc/passwd文件的内容,并将输出结果保存到pass.txt文件中。
[root@localhost ~]# cat /etc/passwd > pass.txt
执行该命令后,会在当前目录下生成一个名为 pass.txt的文件,文件中的内容就是“cat /etc/passwd”命令执行的结果。
>>”重定向操作符可以将命令执行的结果重定向并追加到指定文件的末尾保存,而不覆盖文件中原有的内容。
如,查看 /etc/shadow文件的后3行内容,并将输出结果追加保存到pass.txt文件中。
[root@localhost ~]# tail -3 /etc/shadow >> pass.txt
 
三、管道符“|”
 
通过管道符“ |”,可以把多个简单的命令连接起来实现更加复杂的功能。
管道符“ |”用于连接左右两个命令,将“|”左边命令的执行结果作为“|”右边命令的输入,这样“|”就像一根管道一样连接着左右两条命令,并在管道中实现数据从左至右的传输。
ls命令与more命令使用管道符组合使用便可以实现目录列表分页显示的功能。
如,分页显示 /etc目录下所有文件和子目录的详细信息。
[root@localhost ~]# ls -lh /etc | more
ls命令与 grep命令使用管道符组合使用可以只显示目录列表中包含特定关键字的列表项。
如,显示 /etc目录下包含有“net”关键字的所有文件和子目录的详细信息。
[root@localhost ~]# ls -lh /etc | grep net
-rwxr-xr-x. 1 root root 1.3K 4月  10 2012 auto.net
-rw-r--r--. 1 root root    74 5 31 2012 issue.net
-rw-r--r--. 1 root root 767 11月  30 2009 netconfig
-rw-r--r--. 1 root root    58 5 23 2012 networks
drwxr-xr-x. 2 root root 4.0K 1月    8 19:14 xinetd.d
如,统计一下 /etc目录下所有以“.conf”结尾的文件的个数。
[root@localhost ~]# ls -l /etc/*.conf | wc –l      
44                         
如,查看 /etc/httpd/conf/httpd.conf文件中除了以“#”开头的行和空行以外的内容。
[root@localhost ~]# grep -v “^#” /etc/httpd/conf/httpd.conf | gerp –v “^$”

本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1118336
相关文章
|
XML 监控 网络协议
云深处绝影四足机器人协议学习解析
本文详细介绍并解析了云深处绝影X20四足机器人的通信协议,包括TCP服务端端口号、基于Service的请求/响应通信机制、通信帧结构、消息类型、常见的通信示例如获取状态和导航请求,以及运动控制的参数和命令。文中还提出了对协议中某些未明确说明或可能存在的问题的疑惑。
356 0
云深处绝影四足机器人协议学习解析
|
机器学习/深度学习 人工智能 运维
运维的未来:自动化与人工智能的融合之路
【8月更文挑战第21天】在数字化浪潮中,运维领域正经历着前所未有的变革。本文探讨了自动化和人工智能技术如何重塑运维工作,提升效率与准确性,并预测了未来运维的发展方向。通过分析当前运维面临的挑战,我们揭示了自动化和AI技术带来的机遇,以及它们如何助力运维人员实现更高效的工作流程和决策制定。文章还讨论了这些技术可能对运维职业路径产生的影响,为读者提供了对未来运维趋势的深刻洞察。
312 0
|
10月前
|
JSON JavaScript 前端开发
深入浅出Node.js:从零开始构建RESTful API
在数字化时代的浪潮中,后端开发作为连接用户与数据的桥梁,扮演着至关重要的角色。本文将引导您步入Node.js的奇妙世界,通过实践操作,掌握如何使用这一强大的JavaScript运行时环境构建高效、可扩展的RESTful API。我们将一同探索Express框架的使用,学习如何设计API端点,处理数据请求,并实现身份验证机制,最终部署我们的成果到云服务器上。无论您是初学者还是有一定基础的开发者,这篇文章都将为您打开一扇通往后端开发深层知识的大门。
218 12
|
11月前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
328 6
|
人工智能 算法 自动驾驶
人工智能的伦理挑战与社会责任
【8月更文挑战第10天】随着人工智能技术的飞速发展,其在社会各领域的应用日益广泛。然而,AI技术在带来便利的同时,也引发了一系列伦理问题和社会责任问题。本文将探讨AI技术可能带来的伦理挑战,以及作为技术开发者、应用者和监管者的我们应如何承担起相应的社会责任,确保AI技术的健康发展,服务于人类的福祉。
|
关系型数据库 分布式数据库 数据库
PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。
【7月更文挑战第3天】PolarDB,阿里云的开源分布式数据库,与微服务相结合,提供灵活扩展和高效管理解决方案。通过数据分片和水平扩展支持微服务弹性,保证高可用性,且兼容MySQL协议,简化集成。示例展示了如何使用Spring Boot配置PolarDB,实现服务动态扩展。PolarDB缓解了微服务数据库挑战,加速了开发部署,为云原生应用奠定基础。
580 3
|
监控 安全 网络安全
|
数据采集 网络协议 索引
Python 爬虫技巧:百度页面重定向的自动跟踪与处理
Python 爬虫技巧:百度页面重定向的自动跟踪与处理
|
流计算 Python
Python实现动态银河系:模拟旋转的银河动画
Python实现动态银河系:模拟旋转的银河动画
277 0
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI
人工智能平台PAI
657 0