机器取代人类成为现实,Linux shell才可被取代?
机器取代人类成为现实,Linux shell才可被取代?
新睿云
新睿云
新睿云-让云服务触手可及
本次笔者用通俗易懂的语言介绍一下Linux shell,由于笔者能力有限,如有有描述不准确的地方还请大家指正。
其实shell是十分有魔力的,笔者猜测真的有一天机器取代人类后,人工智能极度发达shell才会被取代!机器想要做什么直接自己调用自己,目前来说Linux shell还是十分有市场的。
一、Linux shell是什么?
shell 就是壳,区别于核。
Linux 的 核 叫 kernel , 壳有很多种,有命令行的: bash 、sh 、csh 、ksh, 有图形化的: KDE、GNOME、CDE、 XFCE ,据说 Linus 那伙人只负责开发 核。
Windows 9X 系列的核是 DOS,图形化的 壳 叫 Windows Explorer ,命令行 壳 叫 command。从 Windows XP 开始,Windows 的 核 叫做 WindowsNT(Windows New Technology),图形化壳叫 Windows Explorer ,命令行 壳 有 command 、cmd.exe ,后面还推出了 Windows PowerShell。由于 Windows NT 技术是针对图形化壳设计出来的核,而 Windows 9X 就是在 DOS 上加了一个壳。所以 Windows XP蓝屏情况比 Windows9 少得多,但偶尔也会出现。此外Windows7蓝屏就比Windows8与10多的多,可能也是基于上述的情况
因此笔者可以把shell简单理解成命令行解析器。
三、Linux shell运行流程
其实不论是命令行的shell还是图形化的shell,全部都是访问操作系统中的某一些功能,处理一些具体的事物或者文件(文件一般都是二进制)。在Linux下的alias 命令是通过链接访问源文件,所以文件就变成了命令。在 Linux 的 /bin 目录和 /usr/bin 目录中有 Linux 命令对应的文件,在 Windows 的 %windir% 目录即 操作系统安装硬盘分区的 Windows 目录 和 %windir%/system32 目录中有 Windows 命令对应的文件, 此外还可以引入外部命令和自定义命令。而 shell 的作用就是解释某条命令对应的文件的文件路径,供用户使用并返回使用结果。这也就是为何有 shell 脚本一说。脚本语言是种解释型语言,不能编译成二进制代码,区别于编译型语言。就如 shell ,它的作用是将命令解释成对应的文件名,然后通过文件名调用文件。对于图形化 shell 是通过鼠标的点击来访问文件的,但实际也是通过文件名,因为每个文件都有包含文件名的完整路径。
三、Linux shell其实是脚本语言
任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。
有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。
这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。
而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。
这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。
编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。
脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合 Web 开发以及小工具的制作。
Shell 就是一种脚本语言,笔者编写完源码后不用编译,直接运行源码即可。
总结:很多时候,很多人,包括我,在学习时都懒得看理论部分,认为计算机科学是门应用科学,只要掌握技能就行,理论那些逐渐就懂了。可事实不是这样的,长期对某件事物知其然不知其所以然会让人变得对某件事物没有追求,最后在 困惑—忽略困惑—麻木 这一过程中变得平庸。所以,困惑的时候,何不看看书?
机器取代人类成为现实,Linux shell才可被取代?的更多相关文章
- linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行
linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行 crontab每分钟执行一次,但5秒以上才有更新数据,有时候一分钟可能跑不完上一个进程,需要先等10秒再判 ...
- Linux-(3)Linux Shell 使用
三.Linux Shell 3.1 文件管理 3.1.1 ls 命令 显示指定工作目录下的内容及属性信息 ls 命令是Linux下最常用的指令之一.ls命令为英文单词 list 的缩写,正如英文单词 ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- Linux Shell 笔记
1.查看进程的环境变量 普通:$cat /proc/1642/environ 换行:$cat /proc/1642/environ | tr '\0' '\n' tr的命令格式是tr SET1 SE ...
- LINUX SHELL脚本攻略笔记[速查]
Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...
- Linux Shell 编程基础详解——吐血整理,墙裂推荐!
第一部分:Linux Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应用程序, ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 重定向与管道【转帖】
by 程默 在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以 ...
- 【转】 Linux shell的&&和||
http://www.2cto.com/os/201302/189655.html Linux shell的&&和|| shell 在执行某个命令的时候,会返回一个返回值,该返回值 ...
随机推荐
- 来吧!一文彻底搞定Vue组件!
作者 | Jeskson 来源 | 达达前端小酒馆 Vue组件的概述 组件是什么呢,了解组件对象的分析,Vue组件中的data属性,props传递数据的原理到底是什么. 事件通信的那些事 如何了解父子 ...
- [LeetCode] 279. Perfect Squares 完全平方数
Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 1 ...
- divide two numbers using + opertor
package testpacknm; import java.util.Scanner; public class testcnm { public static void main(String[ ...
- NTT&FFT(快速?变换)
NTT&FFT 预先知识:无 我觉得我们可以从NTT/FFT讲起? 两个其实本质相同,都是求 多项式乘积 的算法 FFT \((x,y)\)指复数,我们可以不用管它 首先我们构造单位根\(\o ...
- C#自定义特性的使用
特性类的使用过程: 第一步:定义一个特性类,定义一些成员来包含验证时需要的数据:第二步:创建特性类实例:创建一个特性类的实例,里面包含着验证某一个属性或者字段需要的数据.将该实例关联到某个属性上面.第 ...
- 分布式数据库缓存系统Apache Ignite
Apache Ignite内存数据组织是高性能的.集成化的以及分布式的内存平台,他可以实时地在大数据集中执行事务和计算,和传统的基于磁盘或者闪存的技术相比,性能有数量级的提升. 将数据存储在缓存中能够 ...
- 为某金融企业开发团队分享DevOps Server流水线使用经验
http://www.cnblogs.com/danzhang/ DevOps MVP 张洪君
- Shell脚本——添加和删除用户
写一个脚本admin_user.sh,其用法格式为: admin_user.sh --add USERLIST --del USERLIST -v|--verbose -h|--help 其中, -h ...
- python解决自动化测试静态页面加载慢的情况
# coding:utf8from selenium import webdriverimport time # 创建一个ChromeOptions的对象option = webdriver.Chro ...
- HandlerInterceptorAdapter
handler,是指controller的@Controller注解下的整个方法名