Linux指令(四)


问题一:DOS与windows中cmd区别

在windows系统中,“开始-运行-cmd”可以打开“cmd.exe”,进行命令行操作。
操作系统可以分成核心(kernel)和Shell(外壳)两部分,其中,Shell是操作系统与外部的主要接口,位于操作系统的外层,为用户提供与操作系统核心沟通的途径。在windows系统中见到的桌面即explorer.exe(资源管理器)是图形shell,而cmd就是命令行shell。这算是cmd与dos的最大区别,一个只是接口、一个是操作系统。只是cmd中的某些命令和dos中的命令相似,因此很多人把二者混为一谈。cmd属于windows系统的一部分,dos本身就是一个系统,在dos系统下可以删除,修复windows系统,而在cmd下则不行。

问题二:Linux下的shell是什么?

Shell俗称壳(用来区别于核 kernel),是一种“命令解析器”。按照ABS的定义,shell是The shell is a command interpreter. More than just the insulating layer between the operating system kernel and the user, it’s also a fairly powerful programming language。分为图形界面shell和命令行shell两大类。
Shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。不同系统有不同的shell,如bash、C shell、windows power shell 等等;在linux系统中,通常是Bourne Again shell ( 即bash)。

问题三:windows下能用bash shell吗?

bash是Linux和Unix下的shell,如果真的想试用,可以在MS windows下安装Cygwin环境,然后再在其下使用。 这时需要注意,Cygwin环境下跟真实的Linux或Unix是有区别的,一些命令会运行不正常。最直接的体验,还是使用Linux来得贴心,几乎可以做任何事情。如果想在MS Windows下使用Shell,建议还是使用微软的PowerShell,它能提供给你操作MS windows的完全功能。

问题四:脚本语言和普通的编程语言有什么区别?

编程语言 “编写-编译-链接-运行”,脚本语言是“解释-执行”而非编译,脚本语言的程序代码即使最终的可执行文件,通过对应的解释器解释执行即可,所以更方便快捷。每种脚本语言都需要其对应的解释器。如Perl、Python、Ruby、JavaScript等都是脚本语言,shell也属于一种比较特殊的脚本语言。

问题五:linux shell即bash和windows cmd区别?

shell是一个命令解释器(也是一种应用程序),处于内核和用户之间,负责把用户的指令传递给内核并且把执行结果回显给用户,同时,shell也可以作为一门强大的编程语言。在linux/unix平台上,shell多半默认为Bash shell。
cmd是Command shell的简写,微软的定义是:The command shell is a separate software program that provides direct communication between the user and the operating system. The non-graphical command shell user interface provides the environment in which you run character-based applications and utilities. The command shell executes programs and displays their output on the screen by using individual characters similar to the MS-DOS command interpreter Command.com.(CommandShell是一个独立的应用程序,它为用户提供对操作系统直接通信的功能,它为基于字符的应用程序和工具提供了非图形界面的运行环境,它执行命令并在屏幕上回显MS-DOS风格的字符。)所以,可以近似地认为linux shell=bash而windows=cmd,都是命令行解释器,都是用户与操作系统的交互接口。但是bash要比cmd强大很多,windows也有强大的shell叫windows power shell。
早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TCSH等,每一种Shell都各有特点。当然也有我们的bash,bash这个shell是Bourne Shell的增强版本,也是基于GNU的架构下发展出来的。

十二 shell环境

恰如我们之前所讲的,shell 在 shell 会话中保存着大量信息。这些信息被称为 (shell 的) 环境。 程序获取环境中的数据(即环境变量)来了解本机的配置。虽然大多数程序用配置文件来存储程序设置, 一些程序会根据环境变量来调整他们的行为。知道了这些,我们就可以用环境变量来自定制 shell 体验。
在这一章,我们将用到以下命令:

  • printenv - 打印部分或所有的环境变量

  • set - 设置 shell 选项

  • export — 导出环境变量,让随后执行的程序知道。

  • alias - 创建命令别名

什么存储在环境变量中

  • 环境变量
  • shell变量 Shell 变量是 bash 存放的少量数据
  • 可编程数据(别名和shell函数)

检查环境变量

printenv | less

在这里插入图片描述
当使用没有带选项和参数的 set 命令时,shell 变量,环境变量,和定义的 shell 函数 都会被显示。不同于 printenv 命令,set 命令的输出很友好地按照首字母顺序排列:

set | less

别名无法通过使用 set 或 printenv 来查看。 用不带参数的 alias 来查看别名:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

如何建立shell环境?

当我们登录系统后, bash 程序启动,并且会读取一系列称为启动文件的配置脚本, 这些文件定义了默认的可供所有用户共享的 shell 环境。然后是读取更多位于我们自己家目录中 的启动文件,这些启动文件定义了用户个人的 shell 环境。确切的启动顺序依赖于要运行的 shell 会话 类型。有两种 shell 会话类型:一个是登录 shell 会话,另一个是非登录 shell 会话。

登录 shell 会话会在其中提示用户输入用户名和密码;例如,我们启动一个虚拟控制台会话。 非登录 shell 会话通常当我们在 GUI 下启动终端会话时出现。
在这里插入图片描述
在这里插入图片描述
除了读取以上启动文件之外,非登录 shell 会话也会继承它们父进程的环境设置,通常是一个登录 shell。

在普通用户看来,文件 ~/.bashrc 可能是最重要的启动文件,因为它几乎总是被读取。非登录 shell 默认 会读取它,并且大多数登录 shell 的启动文件会以能读取 ~/.bashrc 文件的方式来书写。

一个启动文件的内容

是否曾经对 shell 怎样知道在哪里找到我们在命令行中输入的命令感到迷惑?例如,当我们输入 ls 后, shell 不会查找整个计算机系统来找到 /bin/ls(ls 命令的全路径名),相反,它查找一个目录列表, 这些目录包含在 PATH 变量中。
PATH 变量经常(但不总是,依赖于发行版)在 /etc/profile 启动文件中设置,通过这些代码PATH=$PATH:$HOME/bin
所以是在原来的path后面加上:$HOME/bin
在这里插入图片描述
使用这种技巧,我们可以把文本附加到一个变量值的末尾。通过添加字符串 $HOME/bin 到 PATH 变量值 的末尾,则目录 $HOME/bin 就添加到了命令搜索目录列表中。这意味着当我们想要在自己的家目录下, 创建一个目录来存储我们自己的私人程序时,shell 已经给我们准备好了。我们所要做的事就是 把创建的目录叫做 bin。
很多发行版默认地提供了这个 PATH 设置。一些基于 Debian 的发行版,例如 Ubuntu,在登录 的时候,会检测目录 ~/bin 是否存在,若找到目录则把它动态地加到 PATH 变量中。

export

export PATH

这个 export 命令告诉 shell 让这个 shell 的子进程可以使用 PATH 变量的内容。

修改shell环境

既然我们知道了启动文件所在的位置和它们所包含的内容,我们就可以修改它们来定制自己的 shell 环境。

应该修改哪个文件?

按照通常的规则,添加目录到你的 PATH 变量或者是定义额外的环境变量,要把这些更改放置到 .bash_profile 文件中(或者其替代文件中,根据不同的发行版。例如,Ubuntu 使用 .profile 文件)。 对于其它的更改,要放到 .bashrc 文件中。除非你是系统管理员,需要为系统中的所有用户修改 默认设置,那么则限定你只能对自己家目录下的文件进行修改。当然,有可能会更改 /etc 目录中的 文件,比如说 profile 文件,而且在许多情况下,修改这些文件也是明智的,但是现在,我们要谨慎行事。
有许多基于文本的编辑器。你将会遇到一些流行的编辑器,它们是 nano、vi和 emacs。 nano 编辑器 是一个简单易用的编辑器,用于替代随 PINE 邮件套件提供的 pico 编辑器。vi 编辑器 (在大多数 Linux 系统中被 vim 替代,vim 是 “Vi IMproved”的简写)是类 Unix 操作系统的传统编辑器。 vim 是我们下一章节的讨论对象。emacs 编辑器最初由 Richard Stallman 写成。它是一个庞大、多用途的, 可做任何事情的编程环境。虽然 emacs 很容易获取,但是大多数 Linux 系统很少默认安装它。
配置文件一定要先备份
先练习一些”安全计算”。当我们编辑一个重要的配置文件时,首先创建一个这个文件的备份 总是一个不错的主意。这样能避免我们在编辑文件时弄乱文件。创建文件 .bashrc 的备份文件,cp
扩展名 “.bak”、”.sav”、 “.old”和 “.orig” 都是用来指示备份文件的流行方法。

激活修改

我们对于文件 .bashrc 的修改不会生效,直到我们关闭终端会话,再重新启动一个新的会话, 因为 .bashrc 文件只是在刚开始启动终端会话时读取。(Ctrl+Alt+T再打开一个也可以生效)然而,我们可以强迫 bash 重新读取修改过的 .bashrc 文件,使用下面的命令:source .bashrc

vi

为什么要用vi

  • vi 很多系统都预装。
  • vi 轻量级且执行快。另外,vi 是为了加快输入速度而设计的。 我们将会看到,当一名熟练的 vi 用户在编辑文件时,他或她的手从不需要移开键盘。
  • We don’t want other Linux and Unix users to think we are sissies.??
    通常,vim 在 Linux 系统中是“vi”的符号链接(或别名)。
    在这里插入图片描述
    vi 中的许多命令都可以在前面加上一个数字,比方说上面提到的”G”命令。在命令之前加上一个 数字,我们就可以指定命令执行的次数。例如,命令”5j”将光标下移5行。

关于 vi ,第二重要的事是知晓vi 是一个模式编辑器。(第一件事是如何退出 vi )vi 启动后会直接进入 命令模式。这种模式下,几乎每个按键都是一个命令,所以如果我们直接输入文本,vi 会发疯,弄得一团糟。
按下”i”键进入插入模式。
按下A键移动到当前行尾并插入模式
按下o当前行的下方打开一行并进入插入模式
按下O当前行的上方打开一行并进入插入模式
命令模式下u撤销修改

删除文本

在这里插入图片描述
这个 d 命令不仅删除文本,它还“剪切”文本。每次我们使用 d 命令,删除的部分被复制到一个 粘贴缓冲区中(看作剪切板)。过后我们执行小 p 命令把剪切板中的文本粘贴到光标位置之后, 或者是大 P 命令把文本粘贴到光标之前。

y 命令用来“拉”(复制)文本,和 d 命令剪切文本的方式差不多。这里有些把 y 命令和各种移动命令 结合起来使用的实例

剪切,复制和粘贴文本

留着以后再学。。。

自定制shell提示符

默认的提示符看起来像这样:yry@ubuntu:~$

注意它包含我们的用户名,主机名和当前工作目录,但是它又是怎样得到这些东西的呢? 结果证明非常简单。提示符是由一个环境变量定义的,叫做 PS1(是“prompt string one” 的简写)。

yry@ubuntu:~$ echo $PS1
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

\u当前用户名
\h 本地机的主机名
\w 当前工作目录
\a 铃声
[ 标志着一系列一个或多个非打印字符的开始。这被用来嵌入非打印 的控制字符,这些字符以某种方式来操作终端仿真器,比方说移动光标或者是更改文本颜色。
] 标志着非打印字符序列结束。
@ 以12小时制,AM/PM 格式来表示当前时间。
$ 这会显示一个"$“字符,除非你拥有超级用户权限。在那种情况下, 它会显示一个”#"字符。
在这里插入图片描述
"\A"不加引号的话就直接是A出现在最前面。。。

通过把它 添加到我们的.bashrc 文件,可以使这个提示符永久存在。为了达到目的,把下面这两行添加到.bashrc 文件中。

参考文献

https://www.cnblogs.com/panchanggui/p/9582481.html
https://www.cnblogs.com/yyxianren/p/10789968.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值