马哥博客作业第一周

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-21 18:21:57

第一章

1、什么是计算机

所谓的计算机就是一种计算器,而计算器其实是:接受用户输入指令与数据,经由中央处理器的数学与逻辑单元运算处理后,以产生或存储成有用的信息。因此,只要有输入设备(不管是键盘还是触摸屏)以及输出设备(屏幕或直接打印出来),让你可以输入数据使该机器产生信息的,那就是一台计算机了。

1.1 冯·诺依曼体系结构

1946年美籍匈牙利数学家冯·诺依曼于提出存储程序原理,把程序本身当作数据来对待,程序和该程序
处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:
1. 数字计算机的数制采用二进制,bit 位, byte 字节 1 byte =8 bit
2. 计算机应该按照程序顺序执行
3. 计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成
 
1.2二进制
 
 
2、 操作系统
2 .1操作系统功能
OS: Operating System 操作系统,通用目的的软件程序
主要功能:
  硬件驱动,进程管理,内存管理,网络管理,安全管理文件管理
 
2.2操作系统分类:  
OS分类:
  服务器OS:CentOS,Ubuntu,Windows Server,AIX
  桌面OS:Windows 10,Mac OS,Fedora
  移动设备OS:Andriod,IOS,AliOS,HarmonyOS
 
2.3接口 :
ABI
Application Binary Interface,应用程序二进制接口,ABI描述了应用程序与OS之间的底层接口,允许编
译好的目标代码在使用兼容ABI的系统中无需改动就能运行
API
Application Programming Interface,应用程序开发接口,API定义了源代码和库之间的接口,因此同
样的源代码可以在支持这个API的任何系统中编译
POSIX: Portable Operating System Interface 可移植的操作系统接口
 
2.4服务器三大操作系统
Windows:
  Linux:GNU/Linux
  Unix:1969年 Ken Thompson
  System: Bell Lab
  AIX (IBM)
  Solaris (SUN)
  HP-UX (HP)
  BSD: (BSRG)Berkeley System Distribution
  NetBSD
  OpenBSD
  FreeBSD
 
2.5 UNIX历史
兼容分时系统 Multics
为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,所以在1964年, 由贝
尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE美国通用电气公司)共同发起了Multics(多路信息计
算系统)的计划, Multics计划的目的是让大型主机可以同时支持300个以上的终端机连线使用。不过,
到了1969年前后,由于计划进度缓慢,资金也短缺,所以该计划虽然继续在研究,但最终贝尔实验室还
是选择了退出
1966年从加州大学伯克利分校毕业的Ken Thompson加入了贝尔实验室。参与了Multics系统的研发。
他基于Multics开发了“star travel”游戏。不幸的是,1969年由于贝尔实验室退出Multics项目,这同时意
味着Ken将没有机器可以再玩这个游戏了。面对此情此景,Ken作为一个创造者的本性立即体现了出
来,于是他决定自己写一个操作系统来满足他玩游戏的需要,Ken找到了一台废弃已久的老式PDP-7,
并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利
用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个
内核,一个文件系统,一个编辑器和一个编译程序的完成
 
1969 Unix 雏形 UNICS
Ken Thompson 汇编语言 B语言
1973 正式命名为 Unix
Dennis Ritchie C语言
1977 BSD
Berkeley Software Distribution 伯克利大学
1979 System V架构 版权声明
HP-UNIX IBM AIX “不对学生提供源码” 收回版权
1984年 Minix操作系统
Andrew S. Tanenbaum 荷兰阿姆斯特丹自由大学计算机科学系
 
2.6 GNU
GNU:GNU is Not Unix
1984年由Richard Stallman发起并创建
目标是编写大量兼容于Unix系统的自由软件
官方网站:http://www.gnu.org
GPL:GNU General Public License
 
 
2.7 Linux
1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新闻组上发布消息,正式向外宣布他自行
编写的完全自由免费的内核诞生(Freeminix-like kernel sources for 386-AT) — FREAX,含义是怪诞
的、怪物、异想天开类Unix的内核,在GPL下发布
官网:www.kernel.org
 
Linux操作系统:
完整的类UNIX操作系统
Linux内核+ GNU工具=Linux/GNU
如:CentOS,Ubuntu,Android
 
Linux 发行版:
slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
debian: ubuntu,deepin(深度),mint
redhat:RHEL: RedHat Enterprise Linux, 每18个月发行一个新版本
      CentOS: Community Enterprise Operating System 兼容RHEL的格式
      Fedora:每6个月发行一个新版本
...........
 
2.8Linux哲学思想
  一切都是一个文件(包括硬件)
  小型,单一用途的程序
  链接程序,共同完成复杂的任务
  避免令人困惑的用户界面
  配置数据存储在文本中
 
 
 第二章
 

1 Linux 基础

 

1.1 终端 terminal

设备终端:键盘、鼠标、显示器

1.1.1 终端类型

  • 控制台终端: /dev/console

  • 串行终端:/dev/ttyS#

  • 虚拟终端:tty:teletypewriters, /dev/tty#,tty 可有n个,Ctrl+Alt+F#

  • 图形终端:startx, xwindows

    CentOS 6: Ctrl + Alt + F7

    CentOS 7: 在哪个终端启动,即位于哪个虚拟终端

  • 伪终端:pty:pseudo-tty , /dev/pts/# 如:SSH远程连接

1.1.2 查看当前的终端设备

tty 命令可以查看当前所在终端

tty

范例:

[root@centos8 ~]#tty ​/dev/pts/0

init# (3为命令行模式,5为图形模式,6重启,0关机)

free -h 查看内存资源

runlevel 查看当前运行级别

范例:

[root@Centos8 ~]# runlevelN 5[root@Centos8 ~]# free -h              total        used        free      shared  buff/cache   availableMem:          1.9Gi       718Mi       771Mi        10Mi       475Mi       1.1GiSwap:         4.0Gi          0B       4.0Gi[root@Centos8 ~]# init3bash: init3: command not found...Similar command is: 'init'[root@Centos8 ~]# init 3[root@Centos8 ~]# runlevel5 3[root@Centos8 ~]# free -h              total        used        free      shared  buff/cache   availableMem:          1.9Gi       308Mi       1.2Gi       9.0Mi       474Mi       1.5GiSwap:         4.0Gi          0B       4.0Gi​​

 

gedit 文本编辑工具在图形界面下才可以使用(相当于windows的记事本)

nano 为简单的文本编辑工具(ctrl+X :退出;Y:是否保存;回车为保存成功)

范例:

[root@Centos8 ~]# nano /etc/motd            #登录后提示文件​Connecting to 10.0.0.201:22......Connection established.To escape to local shell, press 'Ctrl+Alt+]'.​welcome to mashimaro.org!!!Activate the web console with: systemctl enable --now cockpit.socket​Last login: Thu Mar 19 09:50:19 2020 from 10.0.0.1[root@Centos8 ~]# nano /etc/issue            #登录前提示文件​​

 

1.2 交互式接口

 

1.2.1bash shell

显示当前使用的shell

echo  ${SHELL}

显示当前系统使用的所有shell

cat /etc/shells

范例:

[root@Centos8 ~]# cat[root@Centos8 ~]# echo $SHELL/bin/bash[root@Centos8 ~]# cat /etc/shells/bin/sh/bin/bash/usr/bin/sh/usr/bin/bash

 

 

1.3 设置主机名

hostname NAME  注意:主机名不能用下划线hostmamectl set-hostname NAME  (直接写入文件/etc/hostname)

范例:

[root@Centos8 ~]# hostname sz-lg-doker-node1-0-201.mashimaro.org[root@Centos8 ~]# hostnamesz-lg-doker-node1-0-201.mashimaro.org[root@Centos8 ~]# hostnamectl  set-hostname Centos8.bruceliu.org[root@Centos8 ~]# cat /etc/hostnameCentos8.bruceliu.org​

 

1.4 命令提示符

显示提示符格式

[root@Centos8 ~]# echo $PS1[\u@\h \W]\$PS1="\[\e[1;32m\][\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"
[13:00:29 root@Centos8 ~]#echo 'PS1="\[\e[1;32m\][\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"'>/etc/profile.d/env.sh[13:01:01 root@Centos8 ~]#cat /etc/profile.d/env.shPS1="\[\e[1;32m\][\[\e[1;32m\]\t \[\e[1;33m\]\u\[\e[36m\]@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$"[13:01:09 root@Centos8 ~]#source /etc/profile.d/env.sh或者. /etc/profile.d/env.sh#可以不重启生效

ubuntu 的PS1文件放在.bashrc中

 

更改PS1的常用参数

参数代表的意思
\d 日期,格式为"周 月 日",例如:"Mon Aug 1"
\H 完整的主机名
\h 仅取主机的第一个名字
\t 24小时制的时间,如:HH:MM:SS
\A 24小时制的时间:HH:MM
\T 12小时制的时间
\u 当前用户的用户名
\v BASH的版本信息
\w 当前工作目录的完整路径
\W 当前工作目录的basename
$ 提示符,如果是root时,提示符为:#,普通用户则为:$
\033[m 声明了转义序列的开始
\033[0m 声明转义序列结束,回到默认颜色

PS1中设置字符颜色有两种方式,效果相同

  • \e[F;Bm

  • \ [\e[F;Bm]

  • \033[F;Bm

不同的数字代表不同的意义,支持的颜色列表

其中"F"为字体颜色,编号为30-37,"B"为背景颜色,编号为40-47

FB代表的颜色
30 40 黑 色
31 41 红 色
32 42 绿 色
33 43 黄 色
34 44 蓝 色
35 45 紫 色
36 46 青 蓝 色
37 47 白 色

几种特殊'颜色'

  
0 OFF
1 高亮显示
4 underline
5 闪烁
7 反显
8 消隐(不可见)

 

1.5 执行命令

1.5.1 shell 中可执行的两类命令

  • 内部命令:由shell自带的,而且通过某命令形式提供

  • 外部命令:在文件系统路径下有对应的可执行程序文件

区别指定的命令是内部或外部命令

type COMMAND

范例: 查看是否存在对应内部和外部命令

[root@centos8 ~]#type -a echoecho is a shell builtinecho is /usr/bin/echo[14:19:25 root@Centos8 ~]#enable -n echo #禁用echo命令[14:22:30 root@Centos8 ~]#enable echo    #启用echo命令

内部命令会从 /bin/bash(在shell中)找,然后执行;

helpenable可以显示内部指令

外部命令会一次从$PATH中找是否有次命令。

[root@Centos8 ~]#echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 

查看外部命令路径:

which                #查看外部命令whereis              #查看外部命令和帮助文档

Hash 缓存表

hash -r              #清除所有缓存(外部命令)hssh -d  COMMAND     #清除某个命令缓存(外部命令)

 

1.5.2 命令别名

对于经常执行的较长的命令,可以将其定义成较短的别名,以方便执行

显示当前shell进程所有可用的命令别名

alias

定义别名

alias NAME='VALUE'

范例:

[14:46:15 root@Centos8 ~]#alias cdnet="cd /etc/sysconfig/network-scripts"[14:46:39 root@Centos8 ~]#cdnet[14:46:43 root@Centos8 network-scripts]#[14:47:49 root@Centos8 network-scripts]#unalias cdnet  #取消别名[14:47:49 root@Centos8 network-scripts]#unalias -a  #取消所有别名

如果想永久有效,要定义在配置文件中

  • 仅对当前用户:~/.bashrc

  • 对所有用户有效:/etc/bashrc

如果别名同原命令同名,如果要执行原命令,可使用

\ALIASNAME'ALIASNAME'

范例:

[14:56:11 root@Centos8 ~]#lsanaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  Pictures  Public  Templates  Videos[14:56:17 root@Centos8 ~]#\lsanaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  Pictures  Public  Templates  Videos[14:56:21 root@Centos8 ~]#'ls'anaconda-ks.cfg  Desktop  Documents  Downloads  initial-setup-ks.cfg  Music  Pictures  Public  Templates  Videos​

 

1.5.3 命令格式

COMMAND [OPTIONS...] [ARGUMENTS...]

注意:

多个选项以及多参数和命令之间使用空白字符分隔

取消和结束命令执行:Ctrl+c (终止命令,强行退出),Ctrl+d (正常退出,相当于logout)

多个命令可以用 ";" 符号分开

一个命令可以用\分成多行

 

1.6 常见命令

1.6.1 查看硬件信息

1.6.1.1 查看 cpu

lscpu命令可以查看cpu信息 ​cat /proc/cpuinfo也可看查看到

1.6.1.2 查看内存大小

[15:14:14 root@Centos8 ~]#free -h              total        used        free      shared  buff/cache   availableMem:          1.9Gi       795Mi       676Mi        10Mi       492Mi       1.0GiSwap:         4.0Gi          0B       4.0Gi[15:15:55 root@Centos8 ~]#cat /proc/meminfo​

1.6.1.3 查看硬盘和分区情况

[15:16:15 root@Centos8 ~]#lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda      8:0    0  200G  0 disk ├─sda1   8:1    0    1G  0 part /boot├─sda2   8:2    0  100G  0 part /├─sda3   8:3    0   50G  0 part /data├─sda4   8:4    0    1K  0 part └─sda5   8:5    0    4G  0 part [SWAP]sr0     11:0    1    7G  0 rom  [15:17:24 root@Centos8 ~]#cat /proc/partitionsmajor minor  #blocks  name​   8        0  209715200 sda   8        1    1048576 sda1   8        2  104857600 sda2   8        3   52428800 sda3   8        4          1 sda4   8        5    4194304 sda5  11        0    7377920 sr0​

1.6.2 查看系统版本信息

1.6.2.1 查看内核版本

[15:18:06 root@Centos8 ~]#uname -r4.18.0-147.el8.x86_64[13:35:57 root@Centos7 ~]#uname -r3.10.0-1062.el7.x86_64[13:33:21 root@Centos6 ~]#uname -r2.6.32-754.el6.x86_64[14:10:33 liu@ubuntu1804 root]$uname -r4.15.0-76-generic

1.6.2.2 查看操作系统发行版本

#CentOS8 查看发行版本[15:32:29 root@Centos8 ~]#cat /etc/redhat-releaseCentOS Linux release 8.1.1911 (Core) [15:35:18 root@Centos8 ~]#lsb_release -aLSB Version:    :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription:    CentOS Linux release 8.1.1911 (Core) Release:    8.1.1911Codename:   Core​#Ubuntu 查看发行版本[15:26:53 liu@ubuntu1804 root]$cat /etc/os-releaseNAME="Ubuntu"VERSION="18.04.4 LTS (Bionic Beaver)"ID=ubuntuID_LIKE=debianPRETTY_NAME="Ubuntu 18.04.4 LTS"VERSION_ID="18.04"HOME_URL="https://www.ubuntu.com/"SUPPORT_URL="https://help.ubuntu.com/"BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"VERSION_CODENAME=bionicUBUNTU_CODENAME=bionic[15:37:36 liu@ubuntu1804 root]$cat /etc/issueUbuntu 18.04.4 LTS \n \l[15:38:09 liu@ubuntu1804 root]$lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription:    Ubuntu 18.04.4 LTSRelease:    18.04Codename:   bionic​

1.6.3 日期和时间

  • date 显示和设置系统时间

[15:35:22 root@Centos8 ~]#date +%s1584605072[16:04:59 root@Centos8 ~]#date -d @1584605072Thu Mar 19 16:04:32 CST 2020# 时间校准# 以硬件时钟为准,校正系统时钟[16:05:17 root@Centos8 ~]#date 062018302020.50Sat Jun 20 18:30:50 CST 2020[18:30:50 root@Centos8 ~]#dateSat Jun 20 18:30:58 CST 2020[18:30:58 root@Centos8 ~]#clock2020-03-19 16:14:07.816461+08:00[18:31:28 root@Centos8 ~]#clock -s  # -s, --hctosys 以硬件时钟为准,校正系统时钟[16:14:55 root@Centos8 ~]#dateThu Mar 19 16:14:58 CST 2020# 以系统时钟为准,校正硬件时钟[16:14:58 root@Centos8 ~]#date 062018302020.50Sat Jun 20 18:30:50 CST 2020[18:30:50 root@Centos8 ~]#clock2020-03-19 16:22:50.445754+08:00[18:31:21 root@Centos8 ~]#clock -w  #-w, --systohc 以系统时钟为准,校正硬件时钟[18:31:44 root@Centos8 ~]#clock2020-06-20 18:31:52.009526+08:00​​

 

时区:

[16:31:00 root@Centos8 ~]#timedatectl list-timezonesAfrica/AbidjanAfrica/AccraAfrica/Addis_Ababa....#更改时区:[09:47:14 root@Centos8 zoneinfo]#ll /etc/localtimelrwxrwxrwx. 1 root root 35 Mar 19 09:42 /etc/localtime -> ../usr/share/zoneinfo/Europe/Tirane[09:48:13 root@Centos8 zoneinfo]#timedatectl set-timezone Asia/Shanghai​​

 

显示日历:

#显示某年cal -y#显示某月[16:52:34 root@Centos8 ~]#cal 9 1752   September 1752   Su Mo Tu We Th Fr Sa       1  2 14 15 1617 18 19 20 21 22 2324 25 26 27 28 29 30#显示某日所在的月份[16:54:00 root@Centos8 ~]#cal 6 4 2020     April 2020     Su Mo Tu We Th Fr Sa          1  2  3  4 5  6  7  8  9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30  

 

1.6.4 关机和重启

关机:

  • halt

  • poweroff

重启:

reboot

-f: 强制,不调用shutdown

-p: 切断电源

关机或重启:shutdown

shutdown [OPTION]... [TIME] [MESSAGE]

-r: reboot

-h: halt

-c:cancel

TIME:无指定,默认相当于+1(CentOS7)

now: 立刻,相当于+0

+#: 相对时间表示法,几分钟之后;例如 +3

hh:mm: 绝对时间表示,指明具体时间

范例:

[16:57:25 root@Centos8 ~]#shutdown Shutdown scheduled for Thu 2020-03-19 17:13:47 CST, use 'shutdown -c' to cancel.[17:12:47 root@Centos8 ~]#shutdown -c[17:12:55 root@Centos8 ~]#shutdown +10Shutdown scheduled for Thu 2020-03-19 17:23:05 CST, use 'shutdown -c' to cancel.[17:13:05 root@Centos8 ~]#shutdown -c[17:13:15 root@Centos8 ~]#shutdown 02:30Shutdown scheduled for Fri 2020-03-20 02:30:00 CST, use 'shutdown -c' to cancel.[17:13:33 root@Centos8 ~]#shutdown -c​

1.6.5 用户登录信息查看命令

  • whoami: 显示当前登录有效用户

  • who: 系统当前所有的登录会话

  • w: 系统当前所有的登录会话及所做的操作

[17:13:40 root@Centos8 ~]#whoamiroot[17:16:04 root@Centos8 ~]#whoroot     pts/0        2020-03-19 13:03 (10.0.0.1)[17:16:07 root@Centos8 ~]#whoroot     pts/0        2020-03-19 13:03 (10.0.0.1)root     tty2         2020-03-19 17:16 (tty2)[17:17:17 root@Centos8 ~]#w 17:18:19 up  4:15,  2 users,  load average: 1.39, 0.81, 0.31USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHATroot     pts/0    10.0.0.1         13:03    0.00s  0.63s  0.10s wroot     tty2     tty2             17:16    4:15m 23.50s  0.06s /usr/libexec/gsd-disk-utilit​

1.6.6 输出信息 echo

 

echo [-neE][字符串]

选项:

  • -E (默认)不支持 \ 解释功能

  • -n 不自动换行

  • -e 启用 \ 字符的解释功能

显示变量

echo "$VAR_NAME” #变量会替换,弱引用echo '$VAR_NAME’ #变量不会替换,强引用​[18:19:17 root@Centos8 ~]#name="liu"[18:19:55 root@Centos8 ~]#echo "Who are you? $name"Who are you? liu[18:20:04 root@Centos8 ~]#echo 'Who are you? $name'Who are you? $name​

启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出

\a 发出警告声

\b 退格键

\c 最后不加上换行符号

\e escape,相当于\033

\n 换行且光标移至行首

\r 回车,即光标移至行首,但不换行

\t 插入tab

\ 插入\字符

\0nnn 插入nnn(八进制)所代表的ASCII字符

\xHH插入HH(十六进制)所代表的ASCII数字(man 7 ascii)

 

1.7 字符集和编码

范例:查看 ascii 表

[17:50:29 root@Centos8 ~]#man ascii​

1.8 命令行扩展和被括起来的集合

1.8.1 命令行扩展: $ ()

把一个命令的输出传给另一个命令的参数

$(CMD) 或 `CMD`

范例:

[20:00:18 root@Centos8 ~]#echo "This system'name is $(hostname) "This system'name is Centos8.mashimaro.org [20:01:27 root@Centos8 ~]#echo "i am `whoami`"i am root[20:02:36 root@Centos8 data]#touch $(date +%F).log[20:03:10 root@Centos8 data]#touch `date +%F`.txt[20:03:41 root@Centos8 data]#touch `hostname`-`date +%F`.log[20:05:10 root@Centos8 data]#lltotal 0-rw-r--r--. 1 root root 0 Mar 19 20:02 2020-03-19.log-rw-r--r--. 1 root root 0 Mar 19 20:03 2020-03-19.txt-rw-r--r--. 1 root root 0 Mar 19 20:05 Centos8.mashimaro.org-2020-03-19.log​

范例:比较 “ ” ,‘ ’, ``三者区别

[21:02:19 root@Centos8 ~]#echo "echo $HOSTNAME"echo Centos8.mashimaro.org[21:02:42 root@Centos8 ~]#echo 'echo $HOSTNAME'echo $HOSTNAME[21:03:07 root@Centos8 ~]#echo `echo $HOSTNAME`Centos8.mashimaro.org​# "" 只能识别变量,弱引用;# '' 不识别变量和命令,强引用;# `` 可以识别变量和命令。​

 

1.8.2 括号扩展: { }

echo file{1,3,5} 结果为:file1 file3 file5rm -f file{1,3,5}echo {1..10}echo {a..z}echo {000..20..2}
[20:18:18 root@Centos8 data]#echo {1..10}1 2 3 4 5 6 7 8 9 10[20:19:15 root@Centos8 data]#echo {000..20..2}000 002 004 006 008 010 012 014 016 018 020[20:19:34 root@Centos8 data]#echo {A..z}A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [  ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z​

1.10 命令行历史

当用户正常退出时,会将内存的命令历史存放对应历史文件中,默认是 ~/.bash_history

history

history [-c] [-d offset] [n]history -anrw [filename]history -ps arg [arg...]

-s: 展开历史参数成一行,附加在历史列表后(加入历史但不执行)

命令历史相关环境变量

  • HISTSIZE:命令历史记录的条数

  • HISTTIMEFORMAT="%F %T `whoami` " 显示时间和用户

  • HISTCONTROL:控制命令历史的记录方式

    ignoredups 是默认值,可忽略重复的命令,连续且相同为“重复”

    ignorespace 忽略所有以空白开头的命令

    ignoreboth 相当于ignoredups, ignorespace的组合

    erasedups 删除重复命令

持久保存变量

  • 以上变量可以 export 变量名="值" 形式存放在 /etc/profifile 或 ~/.bash_profifile

[21:33:35 root@Centos8 ~]#nano .bash_profile​# .bash_profile​# Get the aliases and functionsif [ -f ~/.bashrc ]; then        . ~/.bashrcfi​# User specific environment and startup programs​PATH=$PATH:$HOME/bin​export PATHexport HISTCONTROL=ignorebothexport HISTTIMEFORMAT="%F %T "​

1.11 调用命令行历史

#重复前一个命令方法重复前一个命令使用上方向键,并回车执行按 !! 并回车执行​!n 执行history命令输出对应序号n的命令!-n 执行history历史中倒数第n个命令ctrl-r来在命令历史中搜索命令(reverse-i-search)`’:​#要重新调用前一个命令中最后一个参数!$ 表示Esc, . 点击Esc键后松开,然后点击 . 键Alt+ . 按住Alt键的同时点击 . 键​command !^ 利用上一个命令的第一个参数做command的参数command !$ 利用上一个命令的最后一个参数做command的参数command !* 利用上一个命令的全部参数做command的参数

1.12 bash 的快捷键

Ctrl + l 清屏,相当于clear命令Ctrl + o 执行当前命令,并重新显示本命令Ctrl + s 阻止屏幕输出,锁定Ctrl + q 允许屏幕输出,解锁Ctrl + u 从光标处删除至命令行首Ctrl + k 从光标处删除至命令行尾Ctrl + a 光标移到命令行首,相当于HomeCtrl + e 光标移到命令行尾,相当于EndAlt + r 删除当前整行

 

 

 

2 获得帮助

获取帮助的能力决定了技术的能力!

多层次的帮助

  • whatis

  • command --help

  • man and info

  • /usr/share/doc/

  • Red Hat documentation 、Ubuntu documentation

  • 软件项目网站

 

2.1 whatis

whatis 使用数据库来显示命令的简短描述

刚安装后不可立即使用,需要制作数据库

#CentOS 7 版本以后mandb#CentOS 6 版本之前makewhatis

whatis 和man -f 效果一样

2.2 查看命令的帮助

内部命令:

help COMMAND

man bash

外部命令:

COMMAND --help 或 COMMAND -h(有的不支持-h,如:shutdown)

[root@centos8 ~]#date --helpUsage: date [OPTION]... [+FORMAT]or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]Display the current time in the given FORMAT, or set the system date.[root@centos8 ~]#cal -hUsage:cal [options] [[[day] month] year]cal [options] <timestamp|monthname>[root@centos8 ~]#openssl --helpInvalid command '--help'; type "help" for a list.

 

2.4 man 命令

man 提供命令帮助的文件,手册页存放在/usr/share/man

man 页面分组为不同的“章节”,统称为Linux手册,man 1 man

  • 1:用户命令

  • 2:系统调用

  • 3:C库调用

  • 4:设备文件及特殊文件

  • 5:配置文件格式

  • 6:游戏

  • 7:杂项

  • 8:管理类的命令

  • 9:Linux 内核API

信息搜索:

/KEYWORD

以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写

n:下一个

N:上一个

?KEYWORD

以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写

n:跟搜索命令同方向,下一个

N:跟搜索命令反方向,上一个

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!