终端

终端是一种物理设备,与程序无关。是用户与主机交互,必然用到的设备。

终端分为四种:

物理终端:直接接入本机的显示器和键盘设备console

虚拟终端:附加在物理终端之上的以软件的方式实现的终端,centos6默认启动6个虚拟终端

图形终端:附加在物理终端之上的以软件的方式实现的终端,属于虚拟终端

模拟终端:图形界面打开的命令行窗口,基本ssh或telnet远程打开的界面

NOTE:现次强调,终端与程序无关。

既然终端与程序无关,那么为什么我们可以在终端下输入命令呢?其实我们在输入的命令的地方是一种交互式接口程序,当终端运行起来之后会自动在终端之后运行这样一种程序方便人们与主机进行交互。这样的程序有很多种,最常用的就是shell和图形化的程序。

切换虚拟终端:ctrl+alt+fn(fn=f1-f6)

查看当前的终端使用:tty命令

查看当前使用的shell:echo $SHSHL

查看当前系统自带了多少shell:cat /etc/shells

[root@zhanghe ~]# tty

/dev/pts/0

[root@zhanghe ~]# echo $SHELL

/bin/bash

[root@zhanghe ~]# cat /etc/shells

/bin/sh

/bin/bash

/sbin/nologin

/bin/dash

/bin/tcsh

/bin/csh

命令行的操作

光标快速移动

ctrl+a到命令的第一个字符

ctrl+e到命令的最后一个字符

删除光标前后内容

crtl+w直接删除光标前一个单词

ctrl+k 删除光标后所有字符

ctrl+u删除光标前所有字符

ctrl+y粘贴删除的命令

ctrl+c不执行当前命令

清屏快捷键:ctrl+l,windows下的清屏是cls

命令行的种类

内部命令就是shell自带的命令。

外部命令是某个路径下的执行程序。

外部命令的执行依赖于PATH变量,这个变量是用户一登陆系统就准备好的,用户的执行的命令都去这个里面寻找。(windows系统中也是有环境变量的)

查看PATH变量:echo $PATH

[root@zhanghe ~]# echo $PATH

3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:

查看命令是内部命令还是外部命令用:type命令,如果显示某个路径表示是这个外部命令,如果显示“cd is a shell builtin”表示这是个内部命令。

[root@zhanghe ~]# type -a ls

ls is aliased to `ls --color=auto'

ls is /bin/ls

[root@zhanghe ~]# type -a cd

cd is a shell builtin一

一级子目录

/boot:存放系统启动相关的文件

/dev:存放设备文件

/etc:存入配置文件

/home:用户的家目录

/root:管理员的家目录

/lib:库文件

/media和/mnt:挂载点目录

/opt:可选目录,第三方程序的安装目录

/proc:伪文件系统,内核的映射文件

/sys:伪文件系统,跟硬件设备相关的属性映射文件

/var:可变化的文件

/bin:可执行文件,用户的命令

/sbin:管理命令

/usr:一个单独的“小世界”。既然根下已经有了/bin,/sbin,/lib等目录,那么为什么在这个目录下面还有呢?因为根下的/bin,/sbin,/lib,都是系统启动的程序相关,而/usr下的的/bin,/sbin,/lib等等都是为了系统的能够启动的基本功能。

/usr/local:又是一个单独的“小世界“,这是第三方软件真正的安装位置,这一个小世界对系统的启动和功能都没有影响,即使没有也不会影响系统的启动和运行。

文件类型

f:普通文件

d:目录文件

l:符号链接文件

s:套接字文件

b:块设备文件

c:字符设备文件

p:管道文件

man章节

1 用户命令

2 系统调用

3 c库调用

4 设备文件及特殊字符

5 配置文件格式

6 游戏

7 杂项

8 管理命令

时间戳

任何文件都由元数据和数据组成,使用stat查看文件的时间戳

三个时间戳:

access time :访问时间,简写atime,读取文件内容

modify time:修改时间,mtime,改变文件内容(数据)

chage time:改变时间,ctime,元数据发生改变(对数据的描述)

touch的主要作用是更改时间戳

用来修改除了改变时间外的另外两个时间,改变时间也会随之改变。

[root@zhanghe tmp]# stat zhang

Access: 2017-06-28 03:59:18.000000000 +0800

Modify: 2017-06-28 03:58:50.000000000 +0800

Change: 2017-06-28 03:58:50.000000000 +0800

[root@zhanghe tmp]# touch -a zhang #只修改访问时间,改变时间不受控制

[root@zhanghe tmp]# stat zhang

Access: 2017-06-28 04:02:34.000000000 +0800

Modify: 2017-06-28 03:58:50.000000000 +0800

Change: 2017-06-28 04:02:34.000000000 +0800

[root@zhanghe tmp]# touch -m zhang #只更新修改时间,同样的改变时间不受控制

[root@zhanghe tmp]# stat zhang

Access: 2017-06-28 04:02:34.000000000 +0800

Modify: 2017-06-28 04:05:08.000000000 +0800

Change: 2017-06-28 04:05:08.000000000 +0800

[root@zhanghe tmp]# touch -m -t 202008080808 zhang

#只把修改时间更新为2020年8月8日8时8分

[root@zhanghe tmp]# stat zhang

Access: 2017-06-28 04:02:34.000000000 +0800

Modify: 2020-08-08 08:08:00.000000000 +0800

Change: 2017-06-28 04:07:47.000000000 +0800

[root@zhanghe tmp]# touch -a -t 202008080802 zhang

#只把访问时间更新为2020年8月8日8时2分

[root@zhanghe tmp]# stat zhang

Access: 2020-08-08 08:02:00.000000000 +0800

Modify: 2020-08-08 08:08:00.000000000 +0800

Change: 2017-06-28 04:11:21.000000000 +0800

hash

hash缓存的作用是:Remember or display program locations. 记住并显示程序的位置。

当我们从shell当中输入一个命令的完,shell会从PATH变量当中的路径去查找没有有相对应的二进制文件,如果没有找到就说输出命令没有找到,如果命令找了之后把这次查找中吸取经验把这个命令从哪里找到的会记到hash当中方便下使用,下次再命令时直接从目的找就可以了就不用去PATH当中挨个查找了,这样提高了工作的效率,忽然发觉,人真的应该向电脑学习。

[root@zhanghe ~]# hash #查看hash表

[root@zhanghe ~]# hash -d cat #删除hash表当中的cat记录

[root@zhanghe ~]# hash –r #清空hash表

history

—a 追加命令历史到历史文件

append history lines from this session to the history file

—c清除历史列表的删除所有条目

clear the history list by deleting all of the entries

—d 6 删除缓存历史中的第六条记录

[root@zhanghe ~]# !! #执行上一个命令

[root@zhanghe ~]# ! 6 #执行命令历史中第6个命令

[root@zhanghe ~]# !man #执行历史命令中以最近一次man开头的命令

还有一个就是当前的命令想使用上一个命令的最后一个参数,比如你mkdir zhanghe ,又想rm –rf 了,可以输入完rm –rf 之后按ESC键后再按一个英文的点。

输入回车命令意味着什么?

当我们在交互式接口中输入命令回车,意味着告诉交互式接口把我输入的命令所对应的执行程序代码找到,并由其分析后提交给内核并运行起来,运行起来的程序表现为一个或多个进程。

当我们第一次使用某个命令的时候,会从$PATH变量中查找路径,查找到之后变缓存到hash里面,以后再使用这个命令的时候就不会从$PATH变量里面再找了,直接去hash里面查找路径。

当我们第一次使用某个命令的时候,终端会去查找$PATH里面的路径,查找到了之后会缓冲到hash里面,hash可以理解成内存中的一段空间。

hash的优先级是比PATH变量的优先级要高的,如果在hash中的有记录,但是记录错误,真正使用的时候也会报错的,出现这种情况就要清空缓存,help hash,hash –r清除全部缓存。

标签:bin,hash,技巧,zhanghe,0800,命令,当中,LINUX,root

来源: https://www.cnblogs.com/yizhangheka/p/11107938.html

linux 外壳的概念,LINUX当中必须知道的概念和小技巧相关推荐

  1. mac和linux共享粘贴板,Mac上复制和粘贴的一些小技巧

    了解如何在MacBook Air,MacBook Pro,iMac或任何其他Mac型号上复制和粘贴,以及如何像Pro一样管理剪贴板的提示. 如何在Mac上复制和粘贴: Cmd + C复制 Cmd + ...

  2. linux 外壳的概念,Linux 与 Linux 发行版的一些概念

    我们常说的 Linux 是指 Linux 的内核,现在的最新版本是 Linux 2.6.35 .但是,人们经常把 Linux 发行版也叫做 Linux .那么, Linux 发行版 = {Linux ...

  3. 【Linux】四、Linux 进程概念(上篇)

    目录 前言 一.冯诺依曼体系结构 1.1 冯诺依曼体系结构是什么 1.2 冯诺依曼体系结构为什么这么设计 1.2.1 思考 1.2.2 了解一下计算机的存储分级 1.2.3 解释 1.3 往下要明确几 ...

  4. Linux - 第3节 - Linux进程概念

    目录 1.冯诺依曼体系结构 2.操作系统(Operator System) 2.1.如何理解管理 2.2.操作系统 3.进程 3.1.基本概念 3.2.进程相关操作 4.进程状态 4.1.进程状态概述 ...

  5. linux 自定义外壳,管道在自定义的linux外壳

    尝试实现我自己的Linux外壳几个基本功能,当然是时候实现管道的问题.更具体的管道工程大部分,尽管似乎放弃了最后一个论点.例如,如果我要运行命令管道在自定义的linux外壳 ps ax | grep ...

  6. linux块设备驱动(一)——块设备概念介绍

    linux块设备驱动(一)--块设备概念介绍 本文来源于: 1. http://blog.csdn.net/jianchi88/article/details/7212370 2. http://bl ...

  7. Linux中的tty、pts、pty等概念辨析

    Linux中的tty.pts.pty等概念辨析 基本概念 tty.pty.pts.ptmx tty(终端设备的统称):tty一词源于Teletypes,或teletypewriters,原来指的是电传 ...

  8. 实验楼Linux基础挑战2答案,实验楼-Linux基础-实验二 Linux的基本概念及操作

    一.实验介绍 1.1 实验内容 实验楼环境介绍 常用 Shell 命令及快捷键 Linux 使用小技巧 1.2 实验知识点 Linux 基本命令 通配符的使用 查看帮助文档 二.桌面环境 1.Linu ...

  9. linux内核基本模型,Linux设备模型(1)_基本概念

    Linux设备模型(1)_基本概念 作者:wowo 发布于:2014-2-27 17:01 分类:统一设备模型 1. 前言 在"Linux内核的整体架构"中,蜗蜗有提到,由于Lin ...

  10. Linux libusb USB开发(一)—— USB设备基础概念

    在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设 ...

最新文章

  1. mysql 修改某字段的格式为 utf8mb4
  2. 用html实现网页版的拼图游戏,jQuery实现网页拼图游戏
  3. 无限重启_三星蓝光播放器出现无限自动重启BUG,涉及不少用户及不同型号
  4. NOI.AC#2266-Bacteria【根号分治,倍增】
  5. 白盒测试 | 用例设计方法之语句覆盖
  6. Spring AOP切入点与通知XML类型
  7. 思科ASA防火墙升级为云端防火墙
  8. 冲压模板自动标注LISP_自动标注.LSP
  9. 戴尔linux恢复镜像,如何从官网下载并使用系统恢复映像
  10. java overload_java之方法重载(overload)
  11. 参数问题:nested exception is java.lang.NumberFormatException: For input string: “null“,已解决。
  12. 模模搭古城搭建学习笔记2:基础设施篇
  13. 笔记本电脑外接显示器投屏问题
  14. Oracle数据库初学者入门教程
  15. lightroom最新版本下载_Lightroom CC 2019|Lightroom CC 2019 正式版下载_太平洋下载中心...
  16. uniapp微信小程序的各种弹框提示(轻提示)
  17. 物联网服务器协议命令,物联网使用HTTP协议传输数据
  18. CANoe DEMO12.0安装包下载地址
  19. 路由器TL-WR800N固件升级
  20. c语言判断一个数是不是质数的n次方,c语言实践 判断一个数是不是素数

热门文章

  1. 城市中计算机控制系统的应用,计算机联锁控制系统在北京城铁中的应用
  2. new+date+xxx+java_SpringMVC+MyBatis - 12 spring mvc4返回的json日期为Long的解决方案
  3. Error running ‘Unnamed‘: Unable to open debugger port (127.0.0.1:xxxx)
  4. Spring Cloud服务网关(Zuul)的配置项sensitiveHeaders
  5. IDEA中Maven项目中界面右边的Maven Projects中子项目出现灰色
  6. mysql limit 5 5 正确_MySql 5.7 同时使用order by和limit时结果集不正确的问题
  7. java线性表合并_合并两个线性表
  8. beeline执行sql文件_【SparkSQL】介绍、与Hive整合、Spark的th/beeline/jdbc/thriftserve2、shell方式使用SQL...
  9. echarts横轴展示不全使用滚动条(dataZoom)的方法
  10. ORACLE11g安装过程-windows