linux笔记全(无图版)

 

1、ls 查看当前目录下的所有内容

黑色的是文件,蓝色的是文件夹,也就是目录

2、rm -f anaconda-ks. cfg 彻底删除文件(如不确定,则需要先保存备份,也就是快照)

3、ifconfig 查看网卡的配置信息(ip地址等)

4、ifconfig ens33 192.168.18. 201 /24(网络地址/子网掩码) 更改ip地址

5、systemctl restart network 重启网络服务

6、桥接模式,直接可以进行通信(同一网段,配置ip)

7、能不能通信的2个条件:在同一个物理网络内,ip地址也在同一网段内

8、仅主机模式,虚拟机和物理机不能进行通信,相当于虚拟机和物理机进行了隔离

与笔记本(真机)通信截图

9、NAT模式,自动分配网络地址和网关,以及dns,可以直接上网

可以访问互联网内的主机,但互联网内的主机不能访问本机(max特点)

10、route -n 查看网关

11、cat /etc/resolv. conf 查看dns(注意cat后面有一个空格,空格不可少)

12、验证nat模式可以直接上网

13、shell:通常指linux的字符界面,图形界面和字符界面都属于shell,但图形界面的shell常称为gui,字符界面的shell常称为cli

14、cat /etc/shells 查看文件内容(linux里面提供的所有的shell)

15、linux默认使用的shell是bash的shell

16、echo $SHELL 查看当前使用的shell

17、shell默认指的是bash,它的应用是最广泛的

18、linux是彻底的多用户多任务,它可以直接多个用户同时进行操作

19、ctrl+alt+f2-f6 对应5个shell ctrl+alt+f1 开始图形界面shell 作用: 如何开始shell(也就是如何打开命令界面)

20、虚拟终端的缩写为tty, 在字符界面下执行“tty"命令就可以显示用户目前所在的终端编号(终端名称)。

物理终端:输入/输出设备 虚拟终端:打开多个终端,各个之间互不影响

21、利用xshell 进行与虚拟机的连接(远程配置) xshell连接前提:虚拟机和真机能ping通

虚拟机ping真机不通 真机 ping 虚拟机通 原因是:真机的防火墙(出入站规则)

22、linux敲命令的操作是临时的,改文件的操作是永久的

23、设置永久IP vim /etc/sysconfig/network-scripts/ifcfg-ens33(:wq保存退出)

24、pwd 显示当前的工作目录

25、su - w1hg 更换用户

26、cd /etc 改变当前目录

27、exit 退出 由w1hg退出至root用户

28、启动Shell之后,首先可以看到类似于“[root@ localhost ~]#"形式的命令提示符。(解释含义) 命令提示符是Linux字符界面的标志,其中的“root"表示当前登录的用户账户名:“localhost" 表示本机的主机名:“~” 代表用户当前所在的位置,也就是工作目量,"~” 是一特殊符号,泛指用户的家目录,goot 用户的家目录就是/root;最后的,“#”字符表示当前登录的是管理员用户,如果登录的是普通用户,则最后的“#”字符将变为“S"。

29、shell命令格式 命令 【选项】【参数】(【】可以不写)

如:ls 查看该目录下的文件

ls /home 查看/home下的内容

ls -l 查看文件详细信息和长格式文件

ls -a 查看所有文件(包括隐藏文件[linux中的隐藏文件是.xxx的形式])

最开头的那个蓝色的.和..也都是目录,..是当前目录的父目录(到根目录【/】停止),.是当前目录(用于运行可执行的文件)[./和/root/的表示的意义相同],绿色的是可执行文件,若要运行,需要使用./text.sh

30、查看/home的所有文件的详细信息 ls -l -a /home == ls -la /home

31、shell命令格式,如果是一个字母的话,用一个横杆引导,如果是一个单词的话,用二个横杆引导

如:ls --help 查看ls的帮助信息

32、tab 自动补全 ";" 在同一行里面执行多个命令 “/” 命令特别长,第2行的命令也属于第一行 命令区别大小写 空格(max)

33、linux 关机的命令:halt(挂起) shutdown(关机,但要配合选项执行 as:shutdown -h now 立即关机)

shutdown -h now == halt 都是立即关机 showdown -h +5 5min以后关机

shutdown -r now 立即重启 shutdown -r +10 'The system will be rebooted' 在10分钟以后自动重启系统,同时通知已登录到本机中的各用户 'The system will be rebooted' 。

showdown -c 中断关机操作(在有延时的情况下) init 0 关机 init 6 重启 -r和-h的命令基本差不多!

34、BSD的概念:BSD是是Unix的衍生系统

GPL的概念:GPL是通用公共许可,是最著名的开源许可协议

GPL许可的核心是:

保证任何人有共享和修改自由软件的自由,任何人有权取得,修改和重新发布自由软件的源代码权利,但都必须同时给出具体更改的源代码。

虽然整个Linux内核是基于GNU的GPL许可,但是Linux内核并不是GNU计划的一部分。

Apache的概念:

APR: Apache Portable Runtime, Apache可移植运行库,屏蔽操作系统底层细节,开发人员关注功能。

MPM: Multi-Processes Modules, 多进程处理模块,充分利用操作系统的特性(不存在适用所有操作系统的并发模 型)。

35、linux的发行版本都有哪些阵营,各自的特点是:

Linux三大主流发行版及其衍生版本(比较著名的)目录树为:

Debian系列 --Ubuntu --Knopix

Debian的特点:* Debian* 是迄今为止,最遵循GNU规范的Linux系统。dpkgDebian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM) 最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。Debian具有优秀的网络和社区资源,强大的apt- get,许多发行版都是基于Debian的,最有影响力的发行版之一。不过Debian安装相对不易,stable分支的软件极度过时,不适于新手使用。

Slackware系列 --Suse --Opensuse

Slackware的特点: Slackware是一个历史悠久的Linux发行版。其他主流发行版强调易用性的时候,他依然固执的追求最原始的效率——所 有的配置均还是要通过配置文件来进行。Slackware稳定、安全,所以有大批的忠实用户。由于尽量采用原版的软件包而不进行任何修改,所以制造新 bug的几率比较低。Slackware的版本更新周期较长。系统非常稳定、安全,并且高度坚持UNIX的规范;不过由于所有的配置均通过编辑文件来进 行,只适用于对linux非常熟悉的用户,而且自动硬件检测能力较差,不适于新手使用。

Redhat系列 --Centos --Fedora

Redhat的特点:使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。

36、对linux文件进行操作,创建文件,复制文件,删除文件。在Linux系统中,一切皆文件。

在linux中目录也是文件

37、路径:文件存放的位置,运行一个程序ordui8文件进行操作,首先必须要知道它的路径

如果对比一下我们人类社会,文件相当于某个具体的个人,而目录则相当于省市区等行政区划,比如中国山东省/烟台市/高新区/烟台职业学院/曲广平”就很明确地指向了一个具体的个人。与此类似,Linux 中的“/etc/httpd/conf/httpd.conf"则很明确地指向了一个具体的文件。(每一个/代表一个层级)(第一个/就是起点。也就是根目录)

38、%windir% 范指window的安装目录

39、linux的目录时一个树形结构,也就是倒序的树,首先是根目录,然后是子目录(一级一级的子目录)

40、linux只有一个根目录,与硬盘分区无关(windows与硬盘分区有关)

41、linux目录格式是固定的,是不可变的,创建了linux后,就会有一些目录,验证: 命令:ls /

蓝色是目录(在创建linux的时候自动创建的),青色的是快捷方式

42、/boot:存放Linux系统启动所必需的文件,Kermel 便存放在这个目录里。出于系统安全考虑,/boot目录通常 被划分为独立的分区。 系统文件 /etc:存放Linux系统和各种程序的配置文件,Linux 中的很多操作和配置都是通过修改配置文件实现的。/etc 目录的作用类似于Windows系统中的注册表。 绝大多数的配置文件 /dev:存放Linux系统中的硬盘、光驱、鼠标等硬件设备文件。 硬盘、光驱、鼠标等硬件设备文件 /bin:存放Linux系统中最常用的基本命令,任何用户都有权限执行。 基本命令对应的可执行文件 /sbin:存放Linux系统基本的管理命令,只有管理员权限才可以执行。 只有管理员权限才能执行的文件 /usr:软件的默认安装位置,类似于Windows中的Program Files目录。 软件的默认安装位置 /home:普通用户家目录(也称为主目录)。例如用户帐号“student"对应的家目录位于“/home/student” /root:超级用户root的家目录。 root的家目录 /mnt:一般是空的,用来临时挂载存储设备。 挂载文件

/media:用于系统自动挂载可移动存储设备。 也是用于挂载文件的  /tmp:临时目录,用于存放系统或程序运行时产生的一些临时文件,可供所有用户执行写入操作。  /var:存放系统运行过程中经常变化的文件(变量),如/var/log 用于存放日志文件,/var/spoo/mail用于存放邮件等。 系统运行过程中经常变化的文件(变量)  /lib、/ib64: 存放各种链接库文件。 库文件  /proc:用于存放进程文件。 内存文件  /run:用于存放一些进程产生的临时文件,系统重启后会消失。 进程产生的临时文件  /lost+ found:存放一些当系统意外崩溃或关机时产生的文件碎片。 文件碎片

43、根目录和家目录:/就是linux的起点,也就是根目录,root就是root的家目录

查看root的root家目录or主目录,命令是:ls /root ls /home

除了管理员的目录在root中,其他所有用户的目录都在home中

44、创建用户,命令是:useradd xxxxx,检验:ls /home

创建了一个用户,那么就会给这个用户自动产生一个家目录,这个家目录都是放在home下的,家目录的名字就是用户的名字,如上图所示

root 权限非常大,所有东西都对root无用,所有权限也都对root无用

45、 linux的特征:1、一切皆文件

命令:linux里面的硬盘文件 ls /dev/sda(挂载后,才能使用硬盘分区)

查看ssh的配置文件,命令是vim /etc/ssh/sshd_config

46、查看硬盘分区,命令是 ls /dev/sda1,sda1是sda的第一个分区

如果要使用硬盘分区,那么需要先挂载才能使用,怎么挂载,需要先知道文件的名字

47、整个系统由众多的小程序组成(运行程序的根本就是运行程序的可执行文件),基本无上GB的文件

48、ls命令的程序文件在什么位置的命令:which ls

49、linux系统需尽量避免与用户交互,目的是自动化运行(运维)

需要交互的命令,as: passwd xxxxxx

但通常推荐使用的修改密码的命令是:echo '123' | passwd --stdin xxxxx

避免了与用户的交互,linux是一个服务器的系统,所以我们需要服务器自动执行,自动化运营,一个管理员可以管理上百台服务器,我们可以写一个程序,要服务器自己执行,如果需要管理员的参与,那么会十分麻烦

50、使用纯文本文件保存配置信息,与一切皆文件相对应,txt文件,适用于计算机进行各种编辑的操作

51、linux的哲学思想:1、一切皆文件 2、整个系统由众多的小程序组成 3、linux系统需尽量避免与用户交互 4、使用纯文本文件保存配置信息

52、绝对路径与相对路径

53、改变当前的工作目录的命令是 cd /mnt,用pwd进行查看文件的位置

进入二级目录:命令是 cd /home/teacher(绝对路径) 也可以是cd teacher(相对路径)

绝对路径就是从起点开始找,也就是从/开始寻找,相对路径就是直接从当前位置找

执行相对路径的前提:在同一个路径下,home的下面有teacher,student,w1hg,在home下寻找teacher,在同一路径下,所以可以执行相对路径(在当前的位置下)

进入当前目录的父目录,命令是cd ..

54、查看linux历史的命令:history

55、查看ifcfg-ens33的文件内容,命令有2种

1、绝对路径的命令是:cat / etc/ sysconfig/ network- scripts/ifcfg-ens33 

2、相对路径,先进入network- scripts目录下,在通过相对路径打开ifcfg-ens33

56、cd的快捷命令,cd - 返回上级的目录,进行目录之间的切换

返回家目录一共有3种方式,cd cd /root cd ~(波浪线)

57、查看目录下的内容,命令是ls /home

58、查看文件,命令是 ls /etc/passwd,但无法查看文件的内容,可以查看文件名

查看文件的内容,命令是ls -l /etc/passwd,显示的是文件的详细信息

包括文件的权限(- rw-r--r --),文件的所有者和所属组(1 root root),2246是文件的大小

2349 1月 4 10:12 是文件的修改时间 /etc/passwd 是文件的路径(绝对路径)

第1组,文件类别和文件权限。其中第1个字符代表文件的类别,“-" 代表普通文件,“d"代表目录,“1" 代表符号链接,也就是快捷方式,“c" 代表字符设备(鼠标),“b" 代表块设备(硬盘)。其余6个字符代表文件的权限,‘-’和‘d’是最为常用的

第2组,被硬链接的次数,文件默认为1,目录默认为2。 第3组,文件所有者。

第4组,文件所属组。

第5组,文件大小(单位为字节B)。需要注意的是,对于目录,这里只显示目录本身的大小,而不包括目录中的文件以及下级子目录的大小。 第6组,文件被创建或最近一次被修改的时间。 第7组,文件名(文件所在的位置,文件的路径)。

59、查看当前目录下的所有文件和目录的详细信息,命令是ls -l

60、查看dev目录下的所有内容,命令是ls -l /dev

61、创建一个脚本文件,命令是vim test.sh

62、增加可执行权限,命令是chmod +x test.sh

63、运行可执行文件,命令是./test.sh

64、查看home文件的属性,不是看文件的内容,是查看home本身的信息

-d选项,显示目录本身的属性,而非其内部的文件列表。

上面这条命令也可以简写成“Is -ld/dev",如果将多个选项结合在一起使用,一般习惯使用这种简写的形式。

65、例:以人性化显示的形式查看/boot目录中所有文件和子目录的详细信息。

h选项,人性化显示容量信息,以K、M、G等单位表示文件大小。

66、file命令用于查看文件类型,获取更为详尽的信息。 Linux中没有扩展名的概念,无法通过文件名后缀来判断文件的类型。 对于普通文件,总体上可以分为文本文件与二进制文件两个大类。 文本文件中存放的数据在用户读取时可以按照编码类型还原成字符形式。二进制文件中存放的数据不能还原成字符形式。 图片、视频、音频、可执行文件等都属于是二进制文件。

linux中的文件大多数是属于文本文件

67、将windows文件直接上传至linux,直接拖进xshell中,如下图所示

68、区别普通文件,命令是file xxx,可以判断文件类型

69、判断文件是属于哪一类的文件,是属于文本文件还是二进制文件

70、查看文件内容的方式:cat more less head tail,以cat为例(处理文本文件,而非处理二进制文件)

71、我们一般很少对二进制文件进行处理,而是直接进行使用二进制文件,我们一般是处理文本文件

72、创建一个新的文件,命令是 touch a ,touch命令是生成一个空的文件,还可以改变文件的时间戳

73、创建一个新的目录,命令是mkdir xxx ,mkdir命令是生成一个新的空的目录

74、mkdir也可以一次性创建多个目录,但不可以直接创建多级目录(x/y/z)

75、创建一个多级目录(x/y/z),命令是 mkdir -p x/y/z

76、rmdir 删除空目录,作用与mkdir正好相反,只有确定了有空目录才可以用rmdir删除,无法删除非空目录

77、rm可以删除目录和文件,不管是空的还是非空的都可以删除(主要用rm,不用rmdir)

使用rm的方式删除目录,命令是rm -r xxx(目录),如果不需要确认的话,使用rm -rf xxx(目录)命令

使用rm的方式删除文件,命令是rm xxx(文件),如果不需要确认的话,使用rm -f xxx(文件)命令

78、cp命令,就是copy,也就是用于复制文件or目录

cp命令的格式是cp [选项] 源文件或目录 目标文件或目录 (选项后面的2个都是参数,cp命令有2个参数)

as:复制文件的名是cp /etc/fstab /tmp/hi.txt(复制的过程中改名)

cp /etc/fstab /tmp(复制的过程中不改名)

复制不改名的文件 cp /etc/fstab /tmp(复制的过程中不改名)

cp /etc/fstab / tmp/ test 此命令的作用是将fstab复制到tmp的test目录下,不改名

cp /etc/fstab /tmp/test2,此命令的作用是将fstab复制到tmp的目录下,并将fstab文件改名为test2

使用ls /tmp命令查看是否添加成功

判断test和test2是文件还是目录

如果要复制文件不改名那么久不加/,如果是要复制文件最好加上一个/,便于理解

复制文件(如果文件已经存在,那么考虑覆盖问题)

如果要复制一个目录的话,命令是cp -r /xxx /xxx/xxx

如果在复制的时候要保留源文件的属性不变,则使用cp -rp /home/studnet /tmp/test

图中所示的命令分别是查看home目录下的student目录的详细的信息(查看文件本身)

将home目录下的student目录复制到tmp目录下的test目录

查看tmp目录下的test目录的详细的信息(查看文件本身)【结果发现,属性发生变化,如果要属性不变,则使用-p】

进入tmp目录下的test目录

直接使用相对路径查看student目录的详细的信息(查看文件本身)

强制删除tmp下的test下的student目录

将home目录下的student目录复制到tmp目录下的test目录,使用-p的方式,使其属性不变

查看student目录的详细的信息(查看文件本身)

79、mv命令,剪切

如果第二个参数中的目标是-一个目录,则mv命令会将源文件移动到该目录中:若第二个参数中的目标是一个文件,则mv命令将对源文件进行重命名。

as、1、先查看ls下有无test.txt目录

2、发现无test.txt目录,则创建一个test.txt目录,并进行验证

3、查看test目录下是否有test1.txt文件

4、发现无test1.txt文件,那么就创建一个test1.txt的文件,并进行检验

5、将test.txt目录下的test1.txt文件剪切到tmp的test目录下

80、当用mv剪切目录的时候,不需要使用-r(是和cp命令的区别之处),

将tmp目录下的test目录剪切到当前目录下(./),并进行验证

81、如果要进行改名,在linux中我们所使用的是mv命令,并进行验证

82、linux快捷命令:tab是进行补全,history查看以前所有的历史,使用!(加上以前所使用的记录的编号)

使用快捷键,查看上条命令的路径,两种方式(ESC+. or !$ ),如图所示:

83、linux文件的通配符:,?,[],可以表示别的字符 通配符""可以匹配任意数量的任意字符。(*)

可以匹配任意数量,也可以匹配任意字符

as:查看etc目录下的所有以pa开头的文件和目录其本身的属性,命令是ls -d /etc/pa*,如图所示:

这个题主要是看以pa开头的文件和目录有几个,不是要看文件和目录的内容,如果是,命令是ls /etc/pa*,如图

所以加上-d之后,我们只看目录本身,不看目录里面的内容

84、查看dev目录下的以sd开头的文件和目录的详细信息,不看目录的内容,命令是ls -ld /dev/sd* ,如图所示:

85、查看etc目录下的所有包含conf的文件和目录,不看目录的内容,命令是 ls -d /etc/conf,如图所示(* *conf)

86、通配符“?"可以在相应位置上匹配任意单个字符(只有1个,0也不行)。

可以比配任意字符,但是不可以匹配任意数量,只能是单个的

as:我要在dev目录下找一个文件,这个文件是以sd开头,使用?,也就是一共就只有3个字符的文件

命令是ls -ld /dev/sd?,并与*进行对比,如图所示: 

87、通配符“[ ]”可以匹配指定范围内的任意单个字符。

不能比配任意字符,必须要有一个范围,也不可以匹配任意数量,只能是单个的

as: ls /dev/[df]??,此命令的意思是查看dev目录下的3个字符的文件,第一个字符只能是d或f,后面是二个任意的单个字符,是由这3个字符组成的文件,执行效果如图所示:

88、ls -ld /dev/[a-d]??,此命令的意思是查看dev目录下的的3个字符的文件,第一个字符只能是a-d(abcd)四个字符中的任意的一个字符,后面是二个任意的单个字符,是由这3个字符组成的文件,执行效果如图所示:

89、ls -ld /dev/??[0-9],此命令的意思是查看dev目录下的的3个字符的文件,前二个任意的单个字符,最后一个字符只能是0-9(0123456789)10个数字中的任意的一个数字,是由这3个字符组成的文件,执行效果如图所示:

90、ls -ld /dev/[fhi]??,此命令的意思是查看dev目录下的的3个字符的文件,第一个字符只能是fhi这3个字符中的任意的一个字符,后面是二个任意的单个字符,是由这3个字符组成的文件,执行效果如图所示:

91、ls -ld /dev/[!fhi]??,此命令的意思是查看dev目录下的的3个字符的文件,第一个字符只能是处除了fhi这3个字符中的任意的一个字符,后面是二个任意的单个字符,是由这3个字符组成的文件,执行效果如图所示:

!是除了的意思的,90是=没有!的情况,可以与91进行对比

92、“*” 可以匹配的字符数量没有限制,可以是0个、1个或多个,而“?”和“[]”可以匹配的字符数量则只能是1个

93、{}扩展符,在“{}”中可以包含一个以逗号分隔的列表,并将其自动展开为多个路径或文件名。{}提高使用命令的效率

创建3个目录,方法1,写3条语句,mkdir /tmp/a,mkdir /tmp/b,mkdir /tmp/c,并进行验证,如图所示: 

方法2,直接用一条语句删除a,b,c 3个目录,命令是rm -rf /tmp/{a,b,c},并进行验证,如图所示:

如果想要直接用一条语句创建3个目录,命令是mkdir /tmp/{a,b,c},并进行验证,如图所示: 

94、在tmp目录下的a,b,c 3个目录下创建test.txt文件,命令是touch /tmp/{a,b,c}/test.txt,并进行验证,如图所示

95、{}可以使用,分割多个字符,也可以使用..,表示连续的空间

as:在tmp目录下一次性生成5个txt文件,名字分别是1.txt和2.txt,一直到5.txt,命令是touch /tmp/{1..5}.txt,并验证

也可以直接查看tmp目录下的所有以txt结尾的文件,命令是 ls /tmp/*.txt,如图所示: 

96、删除所有tmp目录下的所有的txt文件,命令是rm -f /tmp/*.txt,如图所示: 

97、as:在tmp目录下一次性生成5个txt文件,步长为2,命令是touch /tmp/{1..5..2}.txt,并验证,如图所示: 

98、在tmp目录下创建test01.txt,test02.txt一直到test10.txt,命令是touch /tmp/test-{01..10}.txt,并验证,如图所示

99、在tmp目录下使用2组{}生成6个文件,命令是touch /tmp/{a,b,c}{1,2}.txt,并验证,如图所示

100、对文件内容进行操作

cat命令------显示文本文件的内容

cat (Concatenate)命令本来用于连接多个文件的内容,但在实际使用中更多的用于查看文本文件内容。cat 是应用最为广泛的文本文件内容查看命令,使用该命令时,只雷要指定文件名作为参数即可。

as:查看redhat - release 的文件内容,命令是cat /etc/redhat - release,也是查看当前linux版本的命令

如图所示,显示的内容是发现版的版本号是7.9.2000,发行版本是centos Linux

查看passwd文件内容:cat /etc/passwd,如图所示:

查看系统版本号,命令是uname(查看当前的系统),uname -a(查看当前系统的全部信息),如图

如图所示,我们所使用的系统是Linux,是GNU/Linux系统(开源/Linux),系统内核(kernel)的版本号是3.10,最新的kernel(系统内核)的版本是4.18

cat只能查看文本文件,不能查看目录

linux的可执行文件:绿色的文件,可执行文件实际上就是二进制文件

ls /bin 查看bin目录下的文件(bin是二进制的意思,该目录下的文件大多数是可执行文件),如图

cat -n /etc/passwd ,此命令的作用是显示etc目录下的passwd文件,显示行号(对本身文件无更改),如图

用cat查看sshd_config文件的内容,显示行号,命令是cat -n /etc/ssh/sshd_config,如图

用more查看sshd_config文件的内容,显示行号,命令是more /etc/ssh/sshd_config,如图

more命令和cat命令的区别,more命令是满屏之后暂停,按空格继续,而cat是显示全部的内容

cat用空格来换屏,一屏一屏的看,而回车是显示的一行一行的,一个回车就是一行,一个空格就是一屏

more和less命令一分页显示文件内容

使用more和less命令可以进入阅读环境,采用全屏的方式分页显示文件内容,当内容满屏时便会暂停,按空格键继续显示下一画面, 或按q键跳离,所以更适于用来阅读长文件。

more和less的区别,more可以自动退出这个阅读模式,到命令行模式,只能向下翻页,而less命令只能在阅读模式中看,无法自动退出至命令行模式,需要使用q键跳离,否则一直在阅读模式中,可以上下翻页,less命令的使用,less /etc/ssh/sshd_config,使用less命令查看一下sshd_config文件的内容,结果如图所示: 

less命令的用法与more命令类似,它们之间的区别是:在less命令的阅读环境中可以前后翻页,而在more命令的阅读环境中则只能向后翻页:另外当文件内容显示到文件尾时,more 命令会自动退出阅读环境,而less命令不自动退出,当要结束浏览时,要在less命令的提示符":"后按q

101、head和tail命令

head和tail命令一查看文件开头或末尾的部分内容

head和tail命令用于显示文件的局部内容,默认情况下,head 显示前10行内容,tail 显示后10行内容。

as:查看etc目录下的passwd文件的前10行内容,命令是 head /etc/passwd,如图所示

查看etc目录下的passwd文件的后10行内容,命令是 tail /etc/passwd,如图所示

head和tail命令有2个常用选项,-n和-f

-n,指定显示的具体行数。

-f,实时显示文件增量内容。

在生产环境中,tail 命令更多地被用于查看系统日志文件,以便观察相关的网络访问、服务调试等信息。配合

“-f"选项可以用于跟踪日志文件末尾的内容变化,实时显示更新的日志内容。

as:查看etc目录下的passwd文件的前3行内容,命令是 head -3 /etc/passwd,如图所示: 

查看etc目录下的passwd文件的后5行内容,命令是 tail -5 /etc/passwd,如图所示:

只查看etc目录下的passwd文件的第一行内容,命令是 head -1 /etc/passwd,如图所示:

只查看etc目录下的passwd文件的最后一行内容,命令是 tail -1 /etc/passwd,如图所示:

如果一个文件是在不停的更新,那么使用-f命令可以不停的更新,更新最后一行,用ctrl+c退出,如图所示

在test1.txt文件中添加hello这一行命令,命令是echo 'hello'>test1.txt,如图所示

查看test.txt文件的内容,命令是cat test1.txt,如图所示

查看test.txt文件的内容,方法2,不停止更新,命令是tail -f test1.txt,如图所示

再次向test1.txt文件中添加hello这一行命令,并进行验证,命令是echo 'hello'>>test1.txt,验证:tail -f test1.txt

使用tail -f命令主要是为了查看系统的日志信息,命令:tail -f /var(变化的文件)/log(日志)/messages,如图

查看etc目录下的passwd文件的前4个字节,命令是 head -c4 /etc/passwd,如图所示:

如图所示,发现etc目录下的passwd文件的前4个字节是root

不换行的原因是因为没有换行符,如果要查看etc目录下的passwd文件的最后4个字节,命令是

head -c5/etc/passwd,不是-c4是-c5的原因,就是因为有一个换行符,如图所示:

102、wc命令--文件内容统计

we (word count)命令用于统计指定文件中的行数、单词数、字节数。

as:查看test1.txt的行数、单词数、字节数,并进行查看test1.txt的内容,进行验证

命令是wc xxxxx,如下图所示,cat查看文件内容,vim对test1.txt文件进行编辑

如果说要只看行数的话,命令是wc -l test1.txt,如图所示: 

103、用--help查看帮助信息

104、查看etc目录下的passwd文件的行数,命令是wc -l /etc/passwd,如图所示

passwd是密码,这个文件中包含的是用户的信息,这里面有多少行就有多少个用户,也就是说我系统里面有45个用户,查询linux系统中有多少个用户(也就是查询passwd文件有多少行),命令是wc -l /etc/passwd

105、echo命令---输出指定内容

echo命令通常用于输出指定的字符串或者是变量的值。

通过在变量名称前添加前导符号$,可以引用一个变量的内容。如果需要输出变量的内容,可以使用echo命令。

as: 输出xxxx的内容,echo 'xxxx',如图所示(输出指定的字符)

106、linux中的单引号和双引号还有反引号的区别

1、单引号(' ')

单引号所见即所得,直接显示单引号里的内容。即单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。举例说明如下图

2、双引号(" ")

双引号则是先把变量解析之后,再输出。

上面的例子中,使用双引号的时候,所见非所得,系统会先计算 $TEST 的值,然后再 echo 出来。

双引号括起来的字符中,"$"、反斜杠(\)和反引号()是拥有特殊含义的:

$ 代表引用变量的值;

\ 反斜杠是转义字符;

`` 反引号代表引用命令。

3、反引号(

反引号用于命令替换,即先执行反引号中的语句,再把结果加入到原命令中。

反引号(`)位于键盘Tab键的上方、1键的左方。注意不要与单引号搞混。

反引号的用法示例如下,先执行date命令,再将结果与字符串"date: "连起来,最后再echo出来。

单引号和双引号一个是强引用,一个是弱引用

107、在test1.txt文件中添加hello这一行命令,命令是echo 'hello'>test1.txt

这里面的>是重定向,将原本在屏幕上输出的内容,输出到test1.txt中,如图所示

108、输出一个变量的值,先定义一个变量a(数字类型),在通过echo $a进行输出,如图所示

109、输出一个变量的值,先定义一个变量b(字符类型),在通过echo $b进行输出,如图所示

110、输出一个算数运算的值,a是123,c是456,输出a+c的值,命令是echo $[$a+$c]

111、输出我们当前正在使用的shell(环境变量)的值,命令是echo $SHELL,如图所示: 

112、查看etc目录下的各类shell文件,命令是cat /etc/shells,如图所示: 

113、输出我们当前使用的语言(环境变量),命令是echo $LANG,如图所示: 

默认的系统语言是简体中文,utf-8编码方式(en是英文的意思,zh_CN是简体中文的意思)

通过LANG=zh_ CN.UTF-8这个命令将我们当前使用的语言(LANG)改为简体中文的形式

114、重定向>的意思是改写,重定向>>的意思是追加

echo命令经常与后面马上要讲到的输出重定向“>"或“>>”结合在一起使用,其中重定向符号">"可以将echo输出的内容覆盖保存到指定的文件中(文件中原有的内容会被覆盖掉),重定向符号">>"可以将echo输出的内容追加保存到指定的文件中(文件中原有的内容仍然保留)。

115、grep命令一文件内容查找

grep命令用于在文本文件中查找并显示包含指定字符串的所有行,通过该命令。我们可以从众多杂乱的信息中找到所需要的部分。

grep 命令的语法格式:grep [选项] 查找条件 目标文件

注意,grep命令不支持**”和“? "这些普通意义上的通配符,面是通过使用正则表达式来设置所要查找的条件。正则表达式定义了很多表示不同含义的符号,如符号“^”表示以什么字符开头,符号“$"表示以什么字符结尾,如"word^"表示以"word"开头,"word$" 表示以"word"结尾 需要说明的是,如果grep所使用的查找关键字中不包含正则表达式或是空格等特殊符号。那么关键字是否加引号都无所谓,如果关键字中出现了这些符号,那么建议为关键字加上引号。

as:一般情况下,我们不需对关键字加引号,如果有正则表达式或是空格等特殊符号则必须加引号,所以一般我们在要查找的关键字上都加上引号

如我们要查找etc目录下的passwd文件中的有root关键字的行,命令是grep ‘root’ /etc/passwd,如图所示: 

如我们要查找etc目录下的passwd文件中的以root开头的行,命令是grep ‘^root’ /etc/passwd,如图所示

如我们要查找etc目录下的passwd文件中的以root结尾的行,命令是grep ‘root$’ /etc/passwd,如图所示:

发现无以root结尾的行

如我们要查找etc目录下的passwd文件中的以bash结尾的行,命令是grep ‘bash$’ /etc/passwd,如图所示:

如我们要查找etc目录下的passwd文件中的有bash关键字的行,命令是grep ‘bash’ /etc/passwd,与上一条命令进行对比,如图所示:

116、grep命令的常用选项:

-n选项,输出符合查找条件的行,及其行号。(可以输出查找到的内容在具体文件的第几行)

-v选项,反转查找,输出与查找条件不相符的行。

-i选项,不区分大小写。

-W选项,精确匹配单词

-r选项,递归哈找

117、grep -n实例

如果我们要查etc目录下的passwd文件中的有bash关键字的行,并输出行号,命令是grep -n ‘bash’ /etc/passwd,如图

118、grep -v实例

如果我们要查etc目录下的passwd文件中的无bash关键字的行,命令是grep -v ‘bash’ /etc/passwd,如图

如果我们要查etc目录下的fstab文件中有用的行(正在生效的配置文件【配置项】),命令是grep -v ‘^#’ /etc/fstab,如图(#代表注释)

同理,如果我们要查找etc目录下ssh目录下的sshd_config文件中有用的行(正在生效的配置文件【配置项】),命令是grep -v ‘^#’ /etc/ssh/sshd_config,如图

119、grep -v 特例:输出空白行,命令是grep '^$' /etc/ssh/sshd_config,如图所示:

输出非空白行,命令是grep -v '^$' /etc/ssh/sshd_config,如图所示:

如果我们要查找etc目录下ssh目录下的sshd_config文件中有用的行(正在生效的配置文件【配置项】),空白行和注释都不要,命令是grep -vE "#|^$" /etc/ssh/sshd_config,如图所示:

120、grep -i 实例:不区分大小写,命令是grep -i 'a' test1.txt,如图所示:

121、grep -w 实例:精确查找num,不包含number这种,命令是grep -w 'num' test2.txt,如图所示:

122、grep -r:

通过-r选项可以在指定目录及其子目录的所有文件中查找指定的关键字。有时我们可能想找一些字符串,但又不知道它在哪个文件中,就可以通过这种方法来实现。

实例:在ssh目录下递归查看包含pass关键字的行,主要命令是grep -r 'pass',如图所示: 

实例2:在etc目录下查找DNS关键字的行,Ingles是grep -r 'DNS' /etc,如图所示:

123、Linux文本三剑客Awk、Sed、 Grep

124、diff命令:文件内容对比

diff命令用于比较多个文本文件之间的差异,这在系统安全防范中非常重要。比如当黑客入侵系统之后,往往会修改一些系统配置文件,从而留下一些后门。 所以作为运维人员。最好事先将一些重要文件备份,然后定期执行dif命令进行对比,从而发现文件是否被改动过。

进行文件内容的对比,对比.bashrc和.bashrc.bak文件,命令是diff .bashrc .bashrc.bak,如图所示:: 

如图所示,发现对比后,无任何内容,所以.bashrc文件和.bashrc.bak文件无任何区别

124.1 对bashrc文件进行备份,将其复制并改名为bashrc.bak,命令是cp .bashrc .bashrc.bak,如图所示:

124.2、在.bashrc.bak文件中添加一行hello,命令是echo 'hello' >>.bashrc.bak,如图所示: 

124.3、对文件.bashrc和.bashrc.bak进行文件内容的对比,命令是diff .bashrc .bashrc.bak,如图所示:

如图所示,它表示的是.bashrc文件是12行,.bashrc.bak文件是13行,a表示添加,所以就是在12行后面添加了一行,共13行,>表示在.bashrc.bak文件中,在.bashrc.bak比.bash多了一行hello

125、对.bashrc.bak文件进行vim编辑,对其进行修改,命令是vim .bashrc.bak,如图所示:

126、再次对文件.bashrc和.bashrc.bak进行文件内容的对比,命令是diff .bashrc .bashrc.bak,如图所示:

文件的第5行和第12行不同,.bashrc带#号的,.bashrc.bak是无#号的

127、对.bashrc.bak文件再次进行更改,命令是diff .bashrc .bashrc.bak,如图所示:

这里面这个d的意思是减少,也就是.bashrc.bak内容是13行,.bashrc内容是12行,前比后多一行

128、显示结果中,字母”a”、 "d"、“c” 分别表示添加、删除及修改操作。

其中,以“<”开始的行属于文件1,以“>”开始的行属于文件2。

129、.bashrc文件是在用户登录的时候自动执行,相当于windows的开机自动运行

130、可以通过diff .bashrc .bashrc.bak命令检测linux系统开机启动项是否被做了手脚

131、date命令--显示或修改日期和时间

直接执行date命令将按照系统默认的格式显和期和时间。

如图所示,date命令显示的内容是日期,星期几,时间,时区

132、date命令提供了很多格式符,可以用不同的方式来显示日期或时间,这些格式符都是以%开头,并用“+*调用。

如果我只要显示年月日,那么它的命令是date +%F,如图所示: 

如果我只要显示日期,那么它的命令是date +%d,如图所示:

如果我只要显示日期(日/月/年),那么它的命令是date +%D,如图所示:

如果我只要显示时间,那么它的命令是date +%T,如图所示:

如果我想显示日期和时间的话,那么它的命令是date +"%F %T",如图所示:

它的输出格式和命令的输出格式是一致的

以“年-月-日 时:分:秒”的格式显示日期和时间,命令是date +"%Y-%m-%d %H:%M:%S",如图所示:

133、date命令提供了很多格式符,可以用不同的方式来显示期或时间,这些格式符都是以%开头,并用“+”调用。

134、对passwd文件进行备份,并显示时间,区分不同的备份,便于区别

命令是cp /etc/passwd /tmp/passwd.bak.$(date +%F),并进行验证,命令是ls /tmp,如图所示:

135、$()命令是将()里面的命令执行带入到原命令中,实例如上所示

136、date命令也可用来修改日期和时间,设置日期和时间时的标准格式如下,即按照“月日小时分钟年份”的格式设置,其中年份可以为4位也可以为2位。

137、stat命令-查看文件元数据

Linux系统中的每个文件都包括两类数据,一类是数据本身,例如用cat、more、less 等俞令所查看到的就是这类数据;另一类称为元数据(metadata) ,元数据用于描述文件的属性,主要包括文件大小、存储位置、访问权限以及时间戳等信息。

138、元数据:包括文件的类型,存放位置,大小,时间戳(创建时间,修改时间,访问时间),权限

139、对于一个文件来说,数据包含2个部分,文件内容和文件属性(元数据)

140、用stat命令查看文件的云数据,查看anaconda-ks.cfg的文件属性,命令是stat anaconda-ks.cfg,如图所示:

141、stat命令所查看结果的最后三行称为文件的时间戳,时间戳包括三种: 最近访问时间(ccess time):查看、读取文件内容的时间。 最近更改时间(modify time) :文件内容改变的时间。 最近改动时间(change time) :文件元数据改变的时间。

142、例如,我们执行“cat /tc/passd"命令查看文件内容,那么就会更改访问时间:如果在系统中新建了某个用户账

号,改变了Iete/passwd文件的内容,那么就会更改最近更改时间;如果将文件重命名或是修改了文件的权限,则会

更改最近改动时间。另外,由于元数据包括文件大小等信息,因而通常情况下只要文件内容发生了改变,那么文件

的元数据也多半会相应发生改变。也就是说,只要文件的更改时间改变了,改动时间也会随之变化,而反之则未必。

需要注意的是,为了避免对硬盘频繁进行写入,Linuy 系统对时间戳的修改进行了优化,如果时间戳某两次变化的时间间隔非常短,那么系统将不会对时间戳进行修改。

如,如果我们要再次查看一下这个文件,那么我们的最近访问时间会发生变化,为什么不变,原因就是上面加粗的

如果我们要修改文件内容,并且查看文件内容,那么最近更改时间和最近访问时间都会发生变化,主要发生变化的是最近更改时间,命令是echo 'hello' >>anaconda-ks.cfg,cat anaconda-ks.cfg,stat anaconda-ks.cfg,如图:

为什么最近更改时间发生变化了,最近改动时间也变化了,因为文件的大小发生了变化,那么最近改动时间随之发生变化了,文件大小属于元数据,文件属性也就变化了,modify time发生了变化,change time一般也会发生变化

143、如果对文件改名后,发现文件的最近改动时间也发生变化了,那么最近更改时间没发生变化

命令如图所示,mv anaconda-ks.cfg hi.txt ,stat hi.txt,如图所示:

144、find --- 文件查找命令

在系统运维的过程中,可能经常需要在系统中查找各种文件,若能快速准确地找到所需的文件,将可有效提高工作效率。

grep是对文件内容查找,find是查找文件(文件本身)

find命令的基本使用格式:

查找;起始路径可以根据需要指定,默认为当前路径,如果指定为“/”,就表示在整个硬盘中进行查找。

查找条件:指定的查找标准,可以根据文件名、文件大小、文件类型、从属关系、权限,时间戳等进行设置,默认为找出指定路径下的所有文件。

处理动作:对符合查找条件的文件做出的操作,例如删除等操作,默认为输出至标准输出。

在使用find命令时,最重要的是如何设置查找条件,下面介绍一些常用的查找条件设置选项。 144.1、“-name”选项,按名称查找,允许使用通配符。

as:查找etc目录下的名称为passwd的文件,精确查找,命令是find /etc -name 'passwd',如图所示:

as:查找etc目录下的包含pass的文件,命令是find /etc -name 'pass',如图所示:(* *)

find命令,在查找名字的时候,通常与通配符配合使用

as:查找dev目录下的sd开头的文件,命令是find /dev -name 'sd *',也可以使用命令,ls /dev/sd *,如图所示:

ls命令和find命令的区别,ls只能查找当前目录下的,不包含子目录,而find是整体的递归查找

144.2、“-iname”选项,按名称查找,不区分大小写

as:查找etc目录下的包含pass的文件(不确定是大写还是小写),命令是find /etc -iname 'net',如图所示:(* *)

144.3、“-empty"选项,查找空文件或目录

as:查找root目录下的空文件或目录,命令是find /root -empty,如图所示:

144.4、“-type" 选项,按文件类型查找。 文件类型指的是普通文件(f)、目录(d)、符号链接文件(l) 、块设备文件(b) 、字符设备文件(c)等。

ls目录下:-普通文件、d:目录、l:软链接、b:块设备、c:字符设备

as:在/boot目录中查找所有的子目录(多层查找),命令是find /boot -type d,如图所示:

as:在/boot目录中查找所有的文件,命令是find /boot -type f,如图所示:

as:在/usr目录下的bin目录中查找所有的符号链接文件,命令是find /usr/bin -type l,如图所示:

as、在/usr目录下的bin目录中查找所有的符号链接文件的详细信息,命令是find /usr/bin -type l,如图所示:

as、查找root目录下的空的目录,命令是find /root -empty -type d,如图所示(使用的是组合命令)

find /root -empty 查找空文件或目录 find /root -type d 按文件类型查找(查找目录),这2个命令组合使用

144.5、“-size” 选项,按文件大小查找。一般使用“+”、"_" 号设置超过或小于指定的大小作为查找条件。常用的容量单位包括k(注意是小写)、M、G。

as:查找etc目录下大于1m的文件的详细信息,命令是find /etc -size +1M -ls,如图所示: 1610091279574

as:查找root目录下小于10k的文件的详细信息,命令是find /etc -size -10k -ls,如图所示:

144.6、“-not”选项,取反。(grep命令中取反的命令是-v)

as:在/boot目录中查找所有文件类型不是普通文件的文件,并显示其详细信息。

144.7、按时间戳查找 find命令还支持按照文件时间戳进行查找,根据用户需求不同,可以分别指定以“天”或是“分钟”作为查找单位。如果以“天”为单位,则相应的选项分别为: -aime (访问时间)、mtime (更改时间)、-ctime (改动时间) ;如果以“分钟”为单位,则相应的选项分别为: -amin(访问时间)、-mmin (更改时间)、-cmin (改动时间)。同-size 选项:一样,也可以使用“+”、“_”号对时间进行设置。

as:在/tmp目录中查找7天内没有被访问过的文件。(7天前访问的文件)

as:在/etc 目录中查找最近1天之内被改动过的文件。(改动的文件内容,文件属性【大小】也发生变化)

查找新的用户zhangsan,命令是useradd zhangsan,如图所示:

查看60min内,也就是1h内改变的文件,命令是find /etc -ctime -60,如图所示:

as:在/etc目录中查找最近5min之内被修改过状态信息的文件(文件属性发生变化)。

ctime以时间为单位,cmin以分钟为单位,ctime比mtime好,ctime都可以找到(属性和内容变化),mtime(属性发生变化)

144.8、“-exec” 选项,对查找到的结果进行进一步的处理。

“-exec"选项后面要跟上进一步处理所要执行的命令,在命令中可以使用“{}”表示find命令查找到的结果,而且最后必须添加“\;" 表示命令结束(注意前面有个空格)。

as:查找boot目录下的以“init"开头的文件,并将其复制到/tmp目录下,命令是find /boot -name "init*" -exec cp {} /tmp \; ,如图所示。

144.9、同时指定多个查找条件

在find命令中可以同时指定多个查找条件,各个条件乏间默认是逻辑与的关系。

as:在boot目录中查找大小超过1024KB而且文件名以“init”开头的文件,命令是find /boot -size +1024k -name "init*",如图所示。

145、find命令的处理动作:

处理动作可以对find命令找到的结果做进一步的处理。

find /usr/bin -typel-Is

这里的ls是find命令的处理动作,而非ls命令。

exec处理动作可以将find命令找到的结果当作文件去处理。

find /etc -size +1M -exec ls -Ih {} \;

“{}” 表示find命令查找到的结果

在命令的最后必须添加" \:”表示命令结束。

as:查看etc目录下大于1m的文件有多少,并统计行数,命令是find /etc -size +1M |wc -l,如图所示:

find信息找到的都是文件信息,文件名字,不是文件本身

as: exec把find找到的大于1m的文件信息变为文件本身,并复制到tmp目录下,命令是find /etc -size +1M -exec cp {} /tmp/test \;,如图所示:

先创建一个目录,mkdir tmp目录下的test目录

然后在进行复制etc目录下大于1m的文件,复制到tmp目录的test目录下

进行验证,命令是ls /tmp/test,查看详细信息,命令是ls -l/tmp/test

as:查看etc目录下大于1m的文件,以人性化的方式显示详细信息,命令是find /etc -size +1M -exec ls -lh {} \;,如图所示:

as:查看etc目录下包含pass的文件(普通文件),显示行数,命令是find /etc 'pass' -type f -exec wc -l {} \;

find /etc -name 'pass' -type f |wc -l,命令是查看etc目录下包含pass的文件(普通文件),显示文件行数(* *)

as:查看etc目录下包含pass的文件(不普通文件),对所有文件进行备份,命令是find /etc -name 'pass' -type f -exec cp {} {}.bak \;,如图所示:

as:删除所有的在etc目录下的以.bak为结尾的文件(普通文件),命令是find /etc -name '*.bak' -type f -exec rm -f {} \; ,如图所示:

as:删除所有的在tmp目录下的以.txt为结尾的文件(普通文件),命令是 find /tmp -name "*.txt" -type f -delete,如图所示:

也就是说删除文件一共有2种方式,find /etc -name '*.bak' -type f -exec rm -f {} \;

find /tmp -name "*.txt" -type f -delete

146、Linux系统中的命令总体上分为内部命令和外部命令两大类。 内部命令,指的是集成在Shell里的命令,属于Shell的一部分。只要Shell被执行,内部命令就自动载入内存,用户可以直接使用,如cd命令,pwd命令等。 外部命令,考虑到运行效率等原因,不可能把所有的命令都集成在Shell里,更多的Linux命令是独立于Shell之外的,这些就称为外部命令。如cp、ls 等都属于外部命令。(除了cd,pwd命令以外基本都是外部命令) Linux系统中的绝大多数命令都属于外部命令,而每个外部命令都对应了系统中的一个可执行的二进制程序文件(biniany file),这些二进制程序文件主要存放在下列目录里: 普通命令: /bin, /usr/bin, /usr/local/bin

147、查外部命令(ls)的程序文件,命令是which ls,如图所示:

148、bin,所有用户都可以执行的文件,常规命令,sbin只有管理员才能执行,权限比较高(青色的表示是一个链接文件,bin和sbin,lib,lib64)[bin和sbin的真实存放位置是/usr/bin和/usr/sbin]

149、mkfs ,对硬盘分区进行格式化

150、查外部命令(find)的程序文件,命令是which find,如图所示:

151、查外部命令(ifconfig)的程序文件,命令是which ifconfig,(只有管理员才能执行的命令),如图所示:

152、普通用户无法改ip,只有管理员才能改ip

153、在linux每一个执行的文件,它都必须要有一个路径,每执行一个命令,都要指定他的路径

154、查看pash变量的值,命令是echo $PASH

为什么我们输入命令的时候,不需要输出指定它的路径,因为linux给我们设定了一个环境变量(PATH)

当我们不输入命令的指定路径的时候,它会在PATH在环境变量中递归查找,然后执行命令

155、如何更改变量的值,如PATH="XXXXXX"

156、Linux系统默认将外部命令程序文件的存放路径保存在一个名为PATH的环境变量里,执行“echo $PATH”命令可以显示出PATH变量里保存的目录路径(路径之间用“;”间隔)。

157、当用户键入并执行命令时,Shell 首先检查命令是否是内部命令,若不是的话,Shell 就会从PATH变量所保存的这些路径里去寻找外部命令所对应的的程序文件,只有找到了程序文件才能正确地去执行命令。这也就意味着,如果把一个外部命令所对应的程序文件删除了,或者是存放外部命令程序文件的目录没有添加到PATH变量里,这些都会导致外部命令无法正常执行。 当然,如果用户每执行一条俞令都要去PATH变量里查找程序文件路径,这势必会影响命令执行效率,因而Linux系统会将用户在当前Shell里所执行的外部命令程序文件路径缓存下来,这样当再次执行同样的命令时就会直接从缓存里调用,而无需去PATH变量里我。

158、执行hash命令可以查看当前Shell所缓存的命令程序文件路径。

159、type命令- 判断内部和外部命令

Linux系统中的绝大多数命令都属于是外部命令。可以通过type命令来判断一个命令到底是内部命令还是外部命令,命令是type cd,如图所示: 1610107688018

160、其他辅助命令

160.1、In命令--为文件或目录建立链接(创建快捷方式)

In命令用于为文件或目录建立快捷方式(在Linux系统中称为链接文件)。

In命令的一般格式:

In [选项] 源文件 目标文件

链接文件分为硬链接、软链接两种类型,主要区别是:不能对目录创建硬链接,也不能跨越不同分区创建硬链接文件,而软链接则没有这些限制,所以平时使用的大都是软链接。 在创建软链接时需要使用“-s”选项。

as:为SSH服务配置文件“sslsshs_ config” 在“root”"目录中创建一个名为“ssh" 的软链接。

命令是ln -s /etc/ssh/sshd_config ssh,并用ls进行验证,如图所示:

因为没有指定路径,所以它的路径是在/root下,也就是当前路径下,也可以用./表示

160.2:alias命令--设置命令别名

命令别名通常是命令的缩写,对于经常使用的命令,通过设置别名可以简化操作,提高工作效率。

alias命令的一般格式:

alias [别名='标准Shell命令行"]

在定义别名的时候,我们它的两侧不能有空格,在他的右边必须要有一个“

在执行这个命令时需要注意,“=” 的两边不能有空格,在标准命令的两端要使用单引号。

单独执行alias可以列出当前系统中已经存在的别名命令,命令是alias,如图所示:

定义一个别名,别名的含义是读取etc目录下的passwd的文件内容,命令是alias cpw="cat /etc/passwd",如图

160.2.1、ls命令本身无颜色,但ls是ls --color=auto的别名,也就是如果我们直接用ls,它就是有颜色的,/usr/bin/ls

160.2.2、ls -l的别名就是ll,如图所示: 

160.3、需要注意的是,利用alias命令设定的别名命令,仅对当前Shell进程有效,其有效期限持续到用户退出登录为止,当用户下一次登录到系统时,该别名命令已经无效。如果希望别名命令在用户每次登录时都有效,就应该将alias命令写入到相应的配置文件中。这里具体又分为两种情况:如果希望别名命令对系统中所有的用户都有效,则应该修改全局配置文件“/etc/bashrc” ;如果希望别名命令仅对指定的用户有效,则应该修改相应用户家目录中的“.bashrc” 文件。另外,修改完配置文件后,所做的配置并不会立即生效,还需要用source命令重新加载相应的配置文件,如“source ~/.bashrc"等

160.4 如果要取消所设置的别名命令,可以使用unalias命令,命令是unalias cpw,如图所示:

161、history:查看历史命令: Shell进程会在其会话中保存此前用户曾经执行过的命令。在Bash中查看命令历史记录最简单的方法是用上下方向

键,而要查看所有或部分的命令历史记录则要使用history命令。

直接执行history可以列出用户登录后所有曾执行过的命令,history 命令还有以下常用用法。

161、查看历史记录,命令是history,如图所示: 

161.1、指定所要查看的历史命令范围

history 命令后面跟上数字就可以指定列出哪些范围内的历史命令

as:列出最近执行过的3条历史命令,命令是history 3 ,如图所示: 

161.2、重新执行某条历史命令

在每一个执行过的Shell命令行前均有-一个编号,代表其在历史列表中的序号。如果想重新执行其中某一条命令,可以采用“!序号”的格式。

161.3、删除指定的历史命令

-d选项可以删除指定的历史命令

161.4、删除缓存中的历史命令

-c选项可以删除当前缓存中的所有历史命令,命令是history -c,如图所示:

161.5、查看系统可以保存的历史命令条数

系统中默认可以保存多少条历史命令呢?

这个参数值保存在环境变量HISTSIZE中,通过echo命令查看变量的值,可以看到默认是1000条

如何查看存放历史记录的文件,命令是echo $HISTSIZE,如图所示:

161.6、执行"history -w”命令可以将缓存中的历史命令保存到“.bash_history"文件中

161.7、执行“hisory-r" 命令可以将“.bash_history"文件中的历史命令读取到缓存中

因而如果要清除系统中所有的历史命令,那么既得执行“history c”清除缓存中的命令,也得清除“-/.bash_history" 文件中存放的命令。

162、如何查看存放历史记录的文件,命令是echo $HISTFILE,如图所示: 

163、查看.bash_history文件内容,命令是cat .bash_history,如图所示:

history的内容存放在两个位置,文件和缓存中,缓存中的命令比文件中的少,原因是缓存中的命令不一定实时写入到文件中,所以缓存比文件的history历史记录少

164、help-查看命令帮助信息

Linux系统中有如此多的命令,如果在日常工作中遇到了一个不熟悉的Linux 命令,我们该如何了解它的作用,又

怎样才能知道它的可用选项呢?这就要用到帮助命令。

help命令可以查看内部命令的帮助信息。(外部命令不行)

as:查看cd和pwd的帮助信息,查看ls,find,grep的帮助信息

外部命令的帮助要通过,xx --help命令进行查看,如图所示:

165、man,命令-查看命令帮助手册

help命令查看的帮助信息较为简略,如果要查看更为详尽的帮助信息,可以使用man(manual)命令查看指定命令的帮助手册。

查看ls命令的帮助手册,命令是man xxx(man ls),如图所示:

166、clear命令--清屏

clear命令可以清除当前终端屏幕的内容,另外“Ctrl + l” 快捷键也可以起到相同的功能。

167、重定向和管道

重定向和管道是Linux系统进程间的一种通信方式,在系统管理中有着举足轻重的作用。

168、标准输入和输出

Linux系统中的绝大多数程序在运行时都要进行输入和输出的操作,输入操作告诉程序所要处理的数据,输出操作则将程序的处理结果显示出来。由于Linux中一切皆文件,因而Linux 系统也使用文件来描述系统的硬件设备等资源,在用户通过操作系统处理信息的过程中,包括以下几类交互设备文件:  标准输入 (Sidin):默认的设备是键盘,文件描述符为0,命令从标准输入文件中读取在执行过程中需要的输入数据。  标准输出(Stdout) :默认的设备是显示器,文件描述符为1,命令将执行后的输出结果发送到标准输出文件。  标准错误(Stderr) ;默认的设备是显示器,文件描述符为2,命令将执行时的错误信息发送到标准错误文件。

标准输入、标准输出和标准错误默认使用了键盘和显示器作为关联的设备,因此当执行命令时会从键盘接收用户的输入字符,并将命令结果显示在屏幕上,如果命令执行错误,也会将错误信息显示在屏幕上反馈给用户。这样通过最普通的终端设备(由键盘和显示器等设备组成),用户就可以执行Linux命令,并完成最基本的输入输出操作。

一个Linux程序通常都是从标准输入中得到输入数据,并将正常输出数据输出到标准输出,锵错误信息输出到标准错误。

169、重定向实例: 将原本应该输出在屏幕上的命令输出到home.txt文件中,如果没有home.txt文件,那么就创建一个新文件,如果有该文件,那么就会将home.txt的文件覆盖为ls /home(查看home目录下的内容)的内容

170、>>追加重定向 ,>覆盖重定向

171、图片实例解析:

在某些情况下,我们希望能从键盘以外的其他输入设备读取数据,或者将数据送到显示器外的其他输出设备,这种情况就称为重定向。Shell 中输入输出重定向主要依靠重定向符号来实现,重定向的目标通常是一个文件。简单用一句话来概括即“使用输入重定向能够把文件导入到命令中,而输出重定向则是能够把原本要输出到屏幕的信息写入到指定文件中。  管道则为输入和输出重定向的结合,一个程序向管道的一端发送数据,而另一个程序从该管道的另一端读取数据,即“前一个命令要输出到屏幕的数据当作是后一个命令的标准输入。” 通过管道为不同命令之间的协同工作提供了一种机制, 管道的符号是“|”。

172、标准输出重定向

相比输入重定向,输出重定向使用的要更为频繁,我们一般所说的重定向大都是指输出重定向。  输出重定向是将命令的输出结果重定向一个文件中,而不是显示在屏幕上,在很多情况下可以使用这种功能,例如某个命令的输出很多,在屏幕上不能完全显示,那么可以将其重定向到一个文件中,命令执行完毕后再用文本编辑器打开这个文件。当想保存一个命令的输出时也可以使用这种方法。  输出重定向使用“>”或“>>”操作符。分别用于覆盖、追加文件内容。  “>”重定向符后面指定的文件如果不存在,在命令执行中将建立该文件,并保存命令结果到文件中。“>” 重定向符后面指定的文件如果存在,命令执行时将清空文件的内容并保存命令结果到文件中。

如果“>”重定向的目标是一个已经存在的文件,那么就会将文件中的原有内容清空,所以在使用“>"重定向时应慎重,确保不会丢失重要数据。

”>>“重定向操作符可以将命令执行的结果重定向并追加到指定文件的末尾保存,而不覆盖文件中原有的内容。

灵活使用重定向,可以实现很多其它功能。

as:将1.xt 和2.txt这两个文本文件的内容合并到一个文件3.txt中,命令是cat 1.txt 2.txt > 3.txt,如图所示:

173、标准错误重定向

标准错误重定向就是将执行命令过程中出现的错误信息(如选项或参数错误等)重新定向保存到指定的文件中,而不是直接显示在屏幕上。由于标准错误输出的文件描述符是2,因而标准错误重定向的表示符号就是“2>”,其实之前在使用标准输入、标准输出重定向时省略了0、1 描述符。

as : 查看homeaaaa目录的内容,命令是ls /homeaaaa 2>home.txt,如图所示: 

as:使用标准错误重定向,如果我们讲正确的命令进行标准错误重定向那么他会显示在屏幕上,而非文件中。

以ls /home 2> home.txt为例,如图所示: 

174、输出一个文件,既包含错误信息也包含正确信息,命令是find / -user w1hg,如图所示:

175、将find / -user w1hg重定向到student.txt文件中,错误信息显示在屏幕上,正确信息在student.txt文件中

命令是find / -user w1hg > student.txt,验证:cat student.txt,如图所示:

176、将find / -user w1hg的错误信息重定向到student1.txt文件中,正确信息显示在屏幕上,错误信息在student1.txt文件中,命令是find / -user w1hg 2> student1.txt,验证:cat student.txt,如图所示:

177、dev是查看各种硬件文件,null是黑洞,如下:/dev/null使用实例

将find / -user w1hg的错误信息过滤掉,用dev目录下的null黑洞过滤所有的错误信息

命令是find / -user w1hg 2> /dev/null,如图所示:

178、脚本是批量处理各种命令,我们一般都需要最后的结果,不需要中间的过程,所以我们一般需要用/dev/null

179、&>,是将正确的和错误的信息全部重定向,实例: 

180、管道符"|”

通过管道符“|”,可以把多个简单的命令连接起来实现更加复杂的功能。

管道符“|“用于连接左右两个命令,将”|“左边命令的执行结果作为“|”右边命令的输入,这样“|”就像一根管道一样

连接着左右两条命令,并在管道中实现数据从左至右的传输。

如ls命令与more命令通过管道符组合使用便可以实现目录列表分页显示的功能。

命令是ll -h /etc | more,如图所示:

as:统计etc目录下的passwd文件的行数,两种方式 wc -l /etc/passwd 和cat /etc/passwd | wc -l,如图所示: 1610247961870

两种命令的对比,第一种方式会显示行数和文件名,第二中方式只会显示行数,当我们对行数进行对比的时候,一般使用第二种方式,而不是第一种方式

181、查找etc目录下名字是net开头的,以conf结尾的文件(普通文件)有哪些

命令是find /etc -name "net*.conf" -type f,如图所示:

182、找etc目录下名字是net开头的,以conf结尾的文件(普通文件)有几个,输出个数

命令是find /etc -name "net*.conf" -type f | wc -l,如图所示:

183、如果我们要查找etc目录下ssh目录下的sshd_config文件中有用的行(正在生效的配置文件【配置项】),空白行和注释都不要,命令是grep -v "^#" /etc/ssh/sshd_config | grep -v "^$",与下图所示的命令结果一致:

184、 查看etc目录下包含net的文件的详细信息,人性化显示,命令是 ll -h /etc |grep 'net' ,如图所示:

185、取出etc目录下的passwd的文件的第10行,命令是 head /etc/passwd | tail -1,如图所示: 

186、vi编辑器的使用

在Linux系统中一般都是使用配置文件来控制服务的运行,因而很多服务功能都需要通过修改配置文件来实现,在字符界面下要修改文件的内容大都要用到一个名叫vi (Visual Interface)编辑器的工具。vi是Linux系统中使用最广泛的文本编辑器,它可以在任何Shell、.字符终端或基于字符的网络连接中使用,能够高效地在文件中进行编辑、删除、替换、 移动等操作。  vi是一个基于Shell的全屏幕文本编辑器,没有菜单,全部操作都基于命令。vim (VIImproved)是vi编辑器的增强版本,在vi编辑器的基础,上扩展了很多实用的功能,但是习惯,上也将vim称作vi。实际上我们平常使用的大都是这个vim.

vi编辑器本身的命令格式很简单:

vim [文件名]

如果指定的文件不存在,那么vim命令会创建文件并进入编辑状态,如果文件存在,则进入编辑状态对其进行编辑。

as: 将etc目录下的ssh目录下的sshd_config复制到当前目录下(波浪线表示的是root家目录)

查看当前目录下的所有目录和文件,对sshd_config文件进行编辑

命令分别是cp /etc/ssh/sshd_config ./ , ls ,vim sshd_config,如图所示:

sshd_config文件内容

使用:set nu可以对上述的文件加上行号,如下图所示:

187、vi编辑器的工作模式

由于vi是一个工作在字符界面下的编辑器,因此它的大部分功能都是通过命令或快捷键来实现的,操作相对于那些

图形界面下的编辑工具要复杂一些。但当用户熟悉了vi的常用命令之后,将会发现vi的使用也是十分灵活便捷的。

在vi编辑界面中有三种不同的工作模式;命令模式、 插入模式、末行模式,不同的工作模式所起到的功能不同。

命令模式:启动vi编辑器后默认进入命令模式,该模式下主要完成光标移动、字符串查找、删除、复制、粘贴等操

作。不论用户处于何种模式,只要按下Esc键,即可进入命令模式。

插入模式(输入模式):修改文件内容

末行模式:在命令模式下,按“:”键即可进入末行模式,该模式中可以保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处于末行模式时; vi 编辑器的最后一行会出现“:”提示符。

188、命令模式的基本操作

在命令模式下可以完成光标移动、字符串查找、删除、复制、[粘贴等操作。

188.1、光标移动: 在命令模式下,可以直接使用键盘方向键完成光标移动,也可以使用Page Up或Page Down向上或向下翻页。

光标移动快捷键:

188.2、复制,粘贴,删除快捷键: 

188.3、文件内容查找

文件内容查找快捷键:

在命令模式下,按“/”键后输入指定的字符串,将从当前光标处开始向后进行查找。例如输入“sshd" ,回车后将查找文件中的“sshd" 字符串并高亮显示结果,光标自动移动到第一个查找结果处,按“n”键移动到下一个查找结果,按“N”键移动到上一个查找结果。  “?”可以自当前光标处开始向上查找,用法与“/”类似。

188.4、撤销编辑

按u键可以撤销最近一次的操作,并恢复操作结果,默认情况下最多可以撤销50次操作。按U键可以撤销对当前行所做的所有编辑。

189、插入模式的基本操作

当我们需要对文件内容进行修改的时候,一般都需要转换到插入模式。从命令模式转换到插入模式的方法主要有以下三种:

i,在光标所在处输入; a,在光标所在处后方插入; o,在光标所在处下方打开一个新行,光标处在行首。 如果要直接在光标所在行插入内容,那么可以使用“i”或“a”,如果要在新起一行插入内容,那么推荐使用“o”。

190、末行模式的基本操作: 在命令模式下按“:”可以切换到末行模式,vi编辑器的最后一行将显示":”提示符,用户可以在该提示符后输入特定的末行命令。

190.1、保存退出vi编辑器

保存文件及退出vi编辑器: 

“:w” 可以保存文件内容,如需要另存为其它文件,则需要指定新的文件名, “:w/roo/newfile”。 “q”可以退出vi编辑器,“:q!” 可以不保存强制退出。 ":wq"保存并退出,另外“x” 也可以同样实现保存并退出的功能。

191、文件打包与压缩

如果我们从网,上下载-些在Limux系统中使用的软件,往往下载到的是一些文件名后缀为“gz"、 ".bz2”、 ".xz"或是".tar.gz"、 ".tgz" 之类的压缩文件,这些文件都要先解压缩后才能安装使用。  在Linux中常用的打包压缩命令是tar,另外通过du命令可以查看目录或文件所占用的磁盘空间大小。以对压缩前后的文件大小进行对比。下面将介绍du和tar命令的使用方法。

192、du命令一查看目录或文件占用磁盘空间的大小

du (disk ysage)命令用于统计指定目录或文件所占磁盘空间的大小。

常用选项:

-h, 人性化显示容量信息,以K、M、G为单位显示统计结果(默认单位为KB)。

-s,查看目录本身的大小。s表示求和的意思,如果不加该选项,则会显示指定目录下所有子目录和文件的大小。

as:查看/etc/ssh/ssd_ config 文件的大小,命令是du /etc/ssh/sshd_config -h,如图所示。

注:linux的基本存放单位是block(块),不是扇区,block: 8个 扇区的组合,4KB。每 个扇区容量512B,0.5KB

挺高效率,使用块而不是扇区的原因,这也就是du命令查出的结果与ll -h不同

as:查看etc目录占用的磁盘空间,命令是du -hs /etc,如图所示:

as:查看/目录下的所有子目录和子文件的大小,命令是 du -hs /*,如图所示: 

as:查看各种目录(空间)的使用率,命令是du -hT,如图所示: 

193、tar命令--文件打包与压缩

Linux系统中的打包和压缩是两个分开的操作。文件打包就是将多个文件和目录合并保存为一个整体的包文件,以方便传输。压缩则可以减少打包好的包文件所占用的磁盘空间。  Linux中常用的打包命令为tar (tape archive),常用的压缩命令有三个: gzip. bzip2、 xz, 用gzip压缩的文件通常使用后缀“.gz”,用bzip2压缩的文件通常使用后缀“.bz2",用xz压缩的文件则通常使用后缀“.xz”。  这三种压缩工具都是只能针对单个文件进行压缩与解压,所以通常都是先通过tar命令将多个文件或目录打包成一个包文件,然后再调用某种压缩工具进行压缩,如后缀为".tar.gz"、“.tgz" 和“.tar.bz2”的文件就属于这种先打包再压缩的文件。  在实际使用中,一般都是通过tar命令来调用gzip、bzip2压缩或解压,而很少去单独使用这些压缩命令。

193.1、打包压缩

tar命令本身只能对目录和文件进行打包,而并不进行压缩。

用tar命令进行打包或压缩时的格式为:

tar [选项] 打包或压缩后的文件名 需要打包的源文件或目录(目录)

命令中用到的选项的含义: -c,创建“.tar”格式的包文件,该选项不会对包文件进行压缩。 -v,显示命令的执行过程。该选项非必需,可根据情况选用。 -f,指定要打包或解包的文件名称,该选项必须放到选项组合的最后一位。

as:将/etc目录打包,并改名,改名为etc.tar2,命令是tar -cf etc.tar2 /etc,如图所示:

查看etc.tar2文件所占的磁盘空间大小,命令是du -h etc.tar2,如图所示:

“-z”选项表示调用gzip来压缩包文件

“-j”选项表示调用bzip2来压缩包文件

“-J”选项表示调用xz来压缩包文件

“-x”选项素示解开“tar”" 格式的包文件。

另外,通过“-t”选项可以在不解压的情况下查看压缩文件内都包括哪些内容。

as:将/etc目录打包压缩,并改名,改名为etc.tar.gzip,命令是tar -cf etc.tar.gzip /etc,如图所示:

as:用bzip2和xz压缩包文件的2中方式,实例:

xz最慢,压缩比例谁最高(用那种方式压缩文件,文件最小):xz

as:将etc.tar2文件进行解压缩,将压缩的那一个文件解压缩成多个文件(压缩文件的数目)

命令是 tar -xf etc.tar2,并用ls命令进行验证,如图所示:

as:将etc.tar.gzip文件解压文件,并指定它的存放路径(-C),命令是tar -zxf etc.tar.gzip -C /tmp/ ,如图:

as:解压其他文件,实例:

注:我们可以指定文件的类型,也可以不指定文件的类型(直接使用-xf命令)

as:查看etc.tar.xz文件的压缩文件的内容,命令是tar -tf etc.tar.xz | more

194、zip文件的压缩与解压

zip是一种被广泛使用的文件压缩格式,在CentOS系统中也可以对zip格式的文件进行压缩或者解压。压缩需要用到zip工具,解压需要使用unzip工具。

使用zip命令对home目录进行压缩,命令是 zip -r home.txt /home/*,如图所示:

unzip home.zip 可以对home.txt文件进行解压缩文件,-d可以指定文件存放位置,默认的位置是./

195、压缩与解压的注意事项

下面谈几个在压缩或解压时需要注意的问题。  首先是关于解压后斯生成的目录的命名。  在Linux中进行打包压缩时,无论所指定的压缩文件的名称是什么,把压缩文件解压之后生成的目录,都是自动沿用当初被压缩时的目录名称。  比如下面的命令,先将/home 目录打包压缩为test.tar.gz,然后再对test.tar.gz解压,解压后并不会生成名为test的目录,而是仍然使用home作为目录名称。

实例:

196、问什么在压缩文件的时候会出现那一条提示,因为路径的问题,为了不使路径覆盖原路径,生成一个新的

197、提取二进制文件中的文本信息

在隐写类题目中所给出的附件,很可能会是一一个二进制文件, 在这个二进制文件中会隐藏有一些文本信息, 而flag则很可能就隐藏在这些文本信息中。 如何提取二进制文件中的文本信息: 用hexdump或xxd命令可以查看二进制文件的内容。(-C)

用grep命令的- a选项可以在二进制文件中搜索文本信息。

strings命令可以直接将二进制文件中的所有文本信息都过滤出来,然后再结合grep命令以flag、key、ctf等作为关键字进行过滤,这种方式最为推荐。

posted @ 2021-01-11 00:05  w1hg  阅读(322)  评论(0编辑  收藏  举报