Linux终端和 shell(bash)—— 韩立刚老师

小技巧:查看当前命令的参数,

1、 ls ----help
2、help ls
3、man ls

一、多用户操作系统:

贝尔实验室发明的Linux操作系统:为了使多个用户使用。

允许多个用户同时向该计算提交计算任务,并且他们相互之间不干扰。
怎么实现呢?

1、物理终端

接入多个显示器和键盘。(1套显示器和键盘,就叫做终端)( 物理终端 )

在这里插入图片描述

2、虚拟终端

使用一个显示器和键盘,但是 Linux 的 mingetty 会模拟出其余终端。(这些是 虚拟终端)

并且使用 Ctrl + Alt + F(n) (1——6) 从而来切换 6 个终端。
在这里插入图片描述

输入 tty ,可以看出我们当前在哪个终端。

3、模拟终端

通过网络 , 使用 ssh (Secure Shell) 的缩写远程登陆到 linux。

Ubuntu
(1)先使用 ifconfig 来查看当前的 IP 地址。(确保和我们的主机在一个网段。)
在这里插入图片描述

(2)使用 SSH 连接报错:修改配置文件
在这里插入图片描述

解决:

1、先在管理员模式下运行 apt-get install openssh-server openssh-client
2、然后我们打开配置文件进行编辑:vi /etc/ssh/ssh_config
3、如下图操作:去掉前面的注释符,使用22端口
在这里插入图片描述
4、然后我们打开配置文件进行编辑:vi /etc/ssh/sshd_config
在这里插入图片描述
5、重启 ssh 服务:service sshd restart

Windows
1、先在cmd 当中,ping 一下,试试能不能联通。
在这里插入图片描述
2、使用Secure CRT 来建立会话:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、Linux 的shell

shell:提供用户和计算机的接口的程序

GUI:
cmd:

在 windows 下提供 GUI 界面的应用程序为:(使用任务管理器,关闭这个进程,则没有GUI界面了)
在这里插入图片描述
在 Linux 下提供 GUI 界面的应用程序为

1、Gnome :C语言开发
2、KDE :C++ 开发
3、Xface :轻量级图形界面

在 Linux 下提供 cmd 界面的应用程序为

1、bsh:unix 提供的shell 功能弱
2、sh : 安全稳定
3、csh:Bill joy 研发的 Csh语法,接进于 C 语言
4、ksh:
5、bash: GNU 组织融合 ksh 和 csh 和 sh 特性的重新开发,能够操作 unix 和 linux
6、nologin :没有shell
5、dash:

怎么查看当前使用的shell 使什么程序:(默认 bash)
在这里插入图片描述
怎么查看当前 linux 支持几种 shell?
在这里插入图片描述

三、bash 的功能

1、命令行编辑

在bash里面,编辑命令。有很多快捷键可以操作

1、可以使用光标来切换
2、ctrl + a 到行首, ctrl + e 到行尾。
3、ctrl + c :退出当前步骤
4、ctrl + l :清屏

2、内部命令和外部命令(PATH)

内部命令: 是 bash 自带的命令。 比如说: cd 、pwd 、
外部命令:一般放在 /bin or /sbin,(当然也可以放在其他目录下)(系统某个路径下的可执行程序)

但是我们在使用这些命令的时候,基本没有区别。 (我们也区分不出什么是内部命令,什么是外部命令)
有两种情况:

1、PATH 环境变量(告诉操作系统去哪里找这个环境变量)
2、当前目录下面,有这个应用程序。就可以直接运行。

在这里插入图片描述
每次当我们启动操作系统的时候, PATH 就会告诉操作系统,我们的命令在哪个目录下面

echo $PATH # 打印当前path 环境变量,包含哪些目录
type ping # 查看当前命令的目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
怎么修改 PATH 的值呢?
使用export 命令,导出一个新的环境变量

root@ubuntu:/  export PATH=$PATH:/dxd
root@ubuntu:/  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/dxd

但是这样每次在终端重启的时候就会失效。
所以我们可以将他放到,系统启动就加载的配置文件当中。

  profile类:为交互式登陆用户提供配置
           /etc/profile:全局
           /etc/profile.d/*.sh:全局
           ~/.bash_profile: 个人配置,仅对当前用户有效
    功能:
         设定环境变量
         运行命令或脚本
  bashrc类:非交互式登陆用户提供配置
           /etc/bashrc:全局
           ~/.bashrc:个人配置
    功能:
        设定本地变量
        定义命令别名
补充windows 的命令在哪?

windows 的命令和 linux 一样很多命令,也是外部命令。(例如 ping 这个命令就在下面这个目录里面)
在这里插入图片描述
查看windows 的变量
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、命令补全功能

当我们使用 Table 键的时候,bash 会帮助我们自动进行补齐。
当我们连按两个 table 命令的时候,列出符合的命令

注:我们使用过的命令,被存放在 hash 表里面。
在这里插入图片描述
一些参数的用法
在这里插入图片描述

4、history 历史命令 OK

应用场景: 我们连接云端的服务器的时候,我们只要登录用户,我们使用的命令就会保存下来
当我们每次退出终端的时候,会将我们的历史命令存到,历史文件当中。 历史文件在用户重新登陆的时候被读取

在这里插入图片描述
在这里插入图片描述

1、两个用户执行的命令:是追加的关系,并不是覆盖的关系。(谁先退出,谁被保存)
2、缓存文件的大小:我们历史文件可以存多少条命令。 echo $HISTSIZE
3、找到我们的历史文件在哪里:echo $HISTFILE

在这里插入图片描述

5、命令别名

如果我们经常使用一个很长的命令。 那我们可以起一个别名,来代替这个长的命令。
注:
1、我们的别名只在当前的 shell 周期里面起作用

2、想要永远保存,或者为某个用户保存。( 修改配置文件即可 )

用户目录下面,有一个 .bashrc 文件。

用户目录:
1、使用 cd 直接跳转到当前用户目录。
2、root 用户就在 /root。
3、cyber 用户就在 /cyber 。

原来定义好的 别名。
在这里插入图片描述
3、想要修改全局的变量,所有用户都会修改。

该配置文件在: /etc/bashrc

4、举例使用:快速切换目录
在这里插入图片描述
alias 的常用参数:
在这里插入图片描述

6、命令替换

格式: $(命令)
‘命令‘ ,反引号
应用举例:
在这里插入图片描述
在这里插入图片描述

注:

1、双引号: 弱引用,里面的内容 会被替换
2、单引号: 强引用,里面的内容 不会被替换,会将里面的内容当作字符来处理

7、路径展开功能

在这里插入图片描述
在这里插入图片描述

路径多项式:

在这里插入图片描述
在这里插入图片描述

8、重定向

重定向,标准输入 和 标准输出。

原来:标准输入为 键盘, 标准输出为 屏幕。
重定向:标准输入为 文件, 标准输出为 文件。
在这里插入图片描述
展示:
在这里插入图片描述

我们在 bash 里面运行一个命令,运行一个函数。 在操作系统里面就会产生一个进程
1、操作系统会给这个进程,分配一个编号。比如说是 1788
2、然后在 / proc 当中创建一个 1788 的文件夹, / proc / 1788
3、这个进程想要操作的文件,都放到了: / proc / 1788 / fd 文件里面。
4、在 fd 文件当中,会有很多个数字,称为文件描述符。(0、1、2、3、依次类推)

在Linux 当中一切皆文件, 我们的标准输入输出设备,键盘、显示器都是一个文件

通常
0: 标准输入文件(键盘)
1:标准输出文件 (显示器)
2:标准错误输出文件 (显示器)

演示:
如何在bash 当中,当前所运行的进程ps 命令
以及如何查看,当前进程所涉及的文件?(在 /proc/3878/fd ,,目录下会显示对应的文件描述符)

在这里插入图片描述

在这里插入图片描述
示例:

1:代表文件描述符 1 ,标准输出 (这个1也可以省略
123 :代表重定向的制定文件。
在这里插入图片描述

2 : 代表标准错误输出,(不可以省略
在这里插入图片描述

有的时候,一条命令执行,有的是正确的,有的是错误的

9、管道

在这里插入图片描述
举例:

head : 显示一个文件的前几行。 head -5 ,显示前 5 行
tail : 显示一个文件的后几行。

注意事项:
1、一个管道当中的命令,只能有一个文件名
在这里插入图片描述
2、在管道中,只有 标准输出才传递给下一个命令标准错误输出 直接输出到终端

find -name "*.conf"  2>/dev/null  | grep rc

此时可以把标准错误输出重定向到空文件当中2 >dev /null

3、有些命令,不支持管道输出。
在这里插入图片描述
解决办法:xargs
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想文艺一点的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值