linux常用基本命令



基本命令:


命令格式注意:

1.多选项,以及多参数和命令之间使用空白字符分割

2.取消和结束命令执行:ctrl+c,ctrl+d

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

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


hostname:显示和设置系统的主机名称

语法:hostname 选项 参数


选项:

-v:显示详细信息

-a:显示主机别名

-d:显示DNS域名

-f:显示FQDN名称

-i:显示主机ip

-s:显示短主机名称,在第一个点处截断

-y:显示NIS域名

wKiom1ecCtyAwzSPAAAw2DTqIBY464.png

init 3:关闭图形界面

init 5:启动图形界面(图像界面模式切换)

startx:启动图形界面(相当于在系统上运行图形界面软件)

init 0:关机

chvt#:在各界面相互切换

ps:经过多次实践,发现在图形界面普通账户使用chvt切换到命令行界面会报错,提示找不到一个文件描述符指的控制台,但是root用户可以成功切换,暂时还没找到原因,后续找到了再补上!!!


lsb_release: LSB是Linux  Standard Base的缩写,sb_release是用来显示LSB和特定版本的相关信息

此指令CentOS7上没有

free:显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

选项:

-b:以byte为单位显示内存使用情况

-k:以KB为单位.................

-m:以MB为单位

-v:显示版本信息

-t:显示内存总和列

wKioL1ecDIqwJ7qeAAA3iVJEc04044.png


df:显示磁盘分区上可使用的磁盘空间,默认先是单位为KB.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息

选项:

-a或--all:包含全部的文件系统

--block-size=<区块大小>:以指定的区块大小来显示区块数目,一般默认是1k,

wKiom1ecEEzDNL9xAAEDOa5np3I856.png

-h或--human-readable:以可读性较高的方式显示信息

-i或--inodes:显示inode的信息

wKiom1ecDZPDsyBmAAAlWS86l9k484.png

-k或--kilobytes:指定区块大小为1024字节

-l或者--local:仅显示本地端的文件系统

-t 文件系统或--type 文件系统:仅显示指定文件系统类型的磁盘信息

-T或--print-type:显示文件系统的类型

-x 文件系统或--exclude-type 文件系统:不要显示指定文件系统类型的磁盘信息

--version:显示版本信息


lscpu:查看cpu信息

wKioL1ecEXOiEdbcAACTS_fxxgs297.png

ifconfig显示Linux内核中网络接口的网络参数,通俗讲就是查看ip地址

以下可知当前ip地址为172.18.18.38

通过 ip add指令也可达到相同效果

wKiom1ecEiqynV4pAAB6jR0G3eg577.png

id:可以显示真实有效的用户ID(UID)和组ID(GID)

语法:

id 选项 用户名

选项:

-g或--group:显示用户所属群组的ID

-G或--groups:显示用户所属附加群组ID

-n或--name:显示用户,所属群组或附加群组的名称

-r或--real:显示实际ID

-u或--user:显示用户ID

wKioL1ecFKKTpNXeAACSc8HiK_s030.png

id后面不带用户名则是指当前用户



shell:

command>>shell>>二进制

shell起到了类似翻译官的作用,将command转换成计算机可识别的二进制格式,然后执行该command


PS1:定义提示符

定义如下

  1. echo $PS1

  2. PS1=HAH

  3. 提示符变更为HAH

wKiom1ecGFKQbFdXAAArbS2va5w252.png

此选修改仅对当前有效,退出重新登录,就还原为默认的提示符



date:显示和设置系统时间和日期


常用参数:


+时间日期格式:

%H 小时,24小时制

%I 小时,12小时制

%M 分钟

%S 显示秒

%s 从1970年1月1日00:00:00到现在经历的秒数
%T:显示时间,24小时(hh:mm:ss)
%a:显示星期 简称
%A:显示星期 全称
%c:日期和时间 

%F: full date; same as %Y-%m-%d

wKiom1ecHweBEzr-AABq8EXHLBM728.png


时间设置:

date -s  “2016-7-23 09:49:30“


date   072214442016.30

            月日时分年.秒

以上时间没加秒数则默认为0秒

wKiom1ecIESSUdvUAABGMlIRRK0843.png


-d 字符串:显示字符串所指的时间日期,字符串前后必须加上双引号

date -d "+10 day" +%F  十天后

date -d "-10 day" +%F十天前

date -d "10 day ago"+%F 十天前

date  -d "+1 year"  +%F 一年后

date -d  "+1  month" +%F 一月后


各种显示时间设定,可以随意组合,总要一款适合你的

wKiom1ecIgzQ5rV2AABlSK-R8N0631.png


clock和hwclock:显示和设置硬件时间如期


hwclock -w 将硬件时间更改为系统时间

hwclock -s 将系统时间更改为硬件时间


wKioL1ecI3uzfP_dAABSkKYPnDM583.png


screen命令:通俗讲screen是一个可以在多进程之间多路复用一个物理终端的窗口管理器或者代理


常用参数:

screen -S help: 新建一个叫help的会话

screen -ls :理出当前所有的会话

screen -x help:加入到名叫help的会话中

以上需三个指令配合使用

为方便自己理解记忆,用文字描述下

假如A有困难需要B帮忙,B可以通过远程登录到A的终端上,使用screen命令实现屏幕共享,及操作同步

,步骤如下:

首先A和B都连接同一终端,A执行命令screen -S help,可建立一个名叫“help”的共享屏幕会话,B通过执行screen -ls查看到help ,然后B执行命令 screen -x help,就可以连接到A建立的“help”的共享屏幕会话,实现屏幕共享,操作共享

如下:

第一步:

wKiom1ecOGijTVXKAADUQGxxwAI561.png

第二步:

wKioL1ecOJfD7rSgAACUVLjLwto422.png


第三步:

wKioL1ecOQDSw9foAAB0VYHkqNM396.png


断开共享会话:ctrl+a+d(按键盘,不是输入字符)

重新连接断开的会话:screen -x help 或者screen -x 会话编号(进程编号?)

exit:退出会话

ctrl+a+s:锁定会话,锁定后,进行任何输入屏幕上都不会有反应,但是虽然屏幕上看不到反应,其实输入的指令内容都会被screen中的进程收到,

ctrl+a+q:配合上一个指令使用,解锁会话,上面锁住时输入的命令内容都会重新出现

ctrl+a+x:锁定会话,不同的是锁定后,会话被screen所属用户的密码保护,需要输入密码才能继续访问这个会话


会话分离与恢复:

可以不中断screen中窗口中的程序而暂时断开screen会话,随后重新连接该会话,重新控制该窗口中运行的程序

例如:

执行screen命令。创建了一个会话,并在里面执行yes命令,此时会话屏幕持续输出y

在screen键入ctrl+a+d,暂时退出会话,

等一段时间后screen -x pts-2 重新连接该会话,发现yes依然在执行,屏幕还是在持续输出y

如下:

第一步:创建test会话

wKiom1ecOrHw4tO0AAAVQmZN9HQ507.png


第二步:执行一个持续性的命令

wKiom1ecOrGRwwbdAAAPm8SZXmk644.png

wKioL1ecOrHSmrMoAAAVkjiwCFg112.png


第三步:ctrl+a+d退出当前会话,可稍等一段时间,在重新进入test,

wKioL1ecOrGj3ynrAAAhWIYfavo041.png


结果是之前执行的yes还在继续执行

wKioL1ecOrHSmrMoAAAVkjiwCFg112.png


安装screen: yum install screen

或者在镜像中找到安装包直接安装



hash:可查看使用过的外部命令,缓存在内存中

hash -d yes : 清除缓存中的yes命令

hash -r :清除缓存中所有的命令

wKiom1ecO9_xNVYJAAAMESKXTgw209.png



一般命令分为两种:内部命令和外部命令

type:查看命令是内部命令还是外部命令


type  cd   type  ls

wKioL1ecPFLw2E9iAAAMgCji63I393.png

builtin:表示内部



系统执行外部命令的机制:

一般情况下,命令输入后,系统会在如下路径依次查找,会优先执行第一个匹配到的指令

/usr/lcoal/sbin

/usr/lcoal/bin

/sbin

/bin

/usr/bin

/usr/bin

/root/bin


查看外部命令路径:

echo $PATH



系统执行命令顺序(优先级):

内部命令 > 外部命令缓存 > 外部命令路径

外部命令执行后才会有外部命令缓存,而要执行外部命令缓存的前提是外部命令依然存在

通俗讲:假如yes命令在/bin中,执行此命令后,会产生缓存,如果再想执行yes命令,系统会优先使用缓存中的yes,但是如果删掉/bin的yes命令,再执行yes命令,虽然缓存中已记录了yes,但是命令是不会执行成功的,因为缓存中路径/bin下已经没有yes,我的理解是缓存只是yes快捷方式,/bin下的yes才是实际内容,所以/bin下的yes没了,缓存中的yes也不能执行了


另外:外部命令查找是从左到右的,会优先选择第一个匹配到的指令,但是有的指令不止存在在一个路径中,有多个路径可以匹配,如果不想执行第一个,则可以使用相对路径的,如下:

/bin/yes,   /sbin/yes

#: /sbin/yes

如上命令会直接匹配/sbin/yes   ,而不是/bin/yes


ps:假如yes在/test/yes,当前目录也在/tse下,直接运行yes(前提外部命令默认路径无yes指令),也是无法执行成功的,因为系统执行外部命令是默认去外部命令路径下查找的,在/test下直接运行yes,系统会直接查找默认的外部命令路径,不会查找/test的,想要这样执行:

/test/yes,或者.yes


暂时禁用命令:enable -n cd

启用命令:enable  cd

wKiom1ecPVSgmNRJAAAcfJI93jA730.png

以上可知:enable -n 只能暂时禁用内部命令,无法禁用外部命令




which:查找并显示给定命令的绝对路径


[root@localhost ~]# which pwd

/usr/bin/pwd

备注:which是根据使用者所配置的PATH变量内的目录去搜寻可运行档的!所以,不同的PATH配置内容所找到的命令是不一样的


alias:可查看命令,也可用来定义别名的,

alias cls=clear  将cls定义为clear的别名

unalias cls   删除别名cls

wKioL1ecPkLQqKERAAAQq9_sgZU030.png

wKiom1ecPkOjO7kpAAAWREkhbfY366.png


命令优先级: 别名 > 内部命令 > 外部命令缓存 > 外部命令路径


ehco命令用法

echo命令在shell中显示shell变量的值,或者直接输出指定的字符串

语法: echo 选项 参数 


回显:

[root@localhost ~]# echo hahha

hahha


选项:

-n:输出文字不换行

-e:启用转义符

例:

\n:换行

[root@localhost ~]# echo  "000000\n00"

000000\n00

[root@localhost ~]# echo -e "000000\n00"

000000

00


“\字母”表示光标

有-e选项时,字符串出现以下字符,则有特别含义,不会当作一般字符输出

\a:发出警报

\b:删除前一个字符 >>光标前进一格

\c:最后不加上换行符>>不换行,且光标后不显示

[root@localhost ~]# echo -e "shabi\chah "

shabi[root@localhost ~]# 

\f:换行但光标仍然停留在原来的位置

shabi[root@localhost ~]# echo -e "shabi\fhah "

shabi

     hah

\n:换行且光标移至行首

[root@localhost ~]# echo -e "shabi\nhah "

shabi

hah 

\r:光标移至行首,但不换行>>后面会覆盖前面的

[root@localhost ~]# echo -e "shabi\rhah"

hahbi

[root@localhost ~]# echo -e "shabi\rpingxiong"

pingxiong

\t:插入tab

\v:与\f效果相同

wKioL1ecQE_gZv5cAAAX4a_iz0w530.png

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

\xHH:插入HH(十六进制)所代表的ASCII字符

wKiom1eUYiLAH0fZAAHpuskv8rM235.jpg-wh_50

echo输出颜色文本:


例如:echo -e "\033[47;32;5mpingxiongshishabi\033[0m"


说明:

以上-e是命令echo的选项,启用转义符,"\033"引导非常规字符序列(即"\033["表示终端转义字符开始,"\033"即退出键<ESC>的ASCII码)。"m"意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符,以上命令中47;32;5;0是实现控制文本颜色控制的,其他的可理解为固定格式


以下可选:

0            重新设置属性到缺省设置

1          设置粗体
2            设置一半亮度(模拟彩色显示器的颜色)

4            设置下划线(模拟彩色显示器的颜色)
5            设置闪烁
7            设置反向图象
22           设置一般密度
 24           关闭下划线
25           关闭闪烁
27           关闭反向图象
30           设置黑色文字
31           设置红色
 32           设置绿色

 33           设置×××
34           设置蓝色
35           设置紫色
36           设置青色
37           设置白色(灰色)

40           设置黑色背景
41           设置红色背景
42           设置绿色背景
43           设置×××背景
 44           设置蓝色背景
45           设置紫色背景
 46           设置青色背景
47           设置白色(灰色)背景

wKioL1ecQ3LxYl_0AAA3dWyrYp0246.png




小练习:闪烁的三角星

指令:

echo -e "\033[37;31;5m  *  \n * *\n* * *\033[0m"

echo -e "\033[37;31;5m   *   \n  ***  \n ***** \n ***** \n*******\033[0m"

echo -e "\033[37;31;5m   *   \n  ***  \n ***** \n*******\033[0m"

wKiom1ecQeLiMDopAAAuG0xwQlU452.png

以上闪烁功能是实现了的


备注:闪烁功能在虚拟机上没执行成功,图像界面和命令行界面都没成功

       ,远程登陆的Xshell上成功,原因查找中



echo "":表示弱引用

echo '':表示强引用

echo ``:表示命令引用

wKiom1eUZsCBqnbLAAAtyo2q4cw155.jpg-wh_50

我理解为如下:

第一个''是直接将''中的强行当做字符引用输出

第二个``:引用的是''中的命令的执行结果

第三个“”:分别引用了echo和$USER,执行了结构

此处还未理解透彻,后续在补全


info:

常用快捷键

?:显示info的常用快捷键

n:打开与本Node关联的下一个Node

p:打开与本Node关联的前一个Node

u:打开与本Node关联的上一个Node

i:回到上一次访问的Node

m或g 选择一个菜单项(Node 的名字) 输入指定菜单的名字后按回车,打开指定菜单项关联的 Node 

空格键 下一页(PageDown 也可以,下一页从当前页的最后两行开始算起) 下一个 Node (若当前页在 Node 文档的末尾)

 Del 键 上一页(PageUp 也可以,上一页从当前页的开始两行开始算起) 上一个 Node (若当前页 Node 文档的开始)

 b 或 t 或 Home 文档的开始(b 是 begining 的意思)

 e 或 End 文档的末尾(b 是 ending 的意思)

 Ctrl-l 刷新当前页,若当前文档显示情况有问题时

 Ctrl-g 取消所键入的指令


命令补全:

        shell程序在接收到用户执行命令的请求时,分析完成时,最左侧的字符串会被当作命令;

      命令查找机制:

              查找内部命令;

                   根据PATH环境变量中设定的目录,自左而右逐个搜索目录下的

                   给定的打头字符串如果能唯一标识某命令程序文件,则直接补全

                   不能唯一标识某命令程序文件,则再击tab键一次,会给出列表;


路径补全:

         根据给定的起始路径下,以对应路径下的打头字串来逐一匹配起始路径下的每个文件

         否则,再一次tab,给出列表。


bash的快捷键:

ctrl+l:清屏,相当于clear命令

ctrl+c:取消命令的执行

ctrl+a:光标移动到命令行的最前面

ctrl+e:光标移动到命令行的最后面

ctrl+u:删除行首到光标

ctrl+k:删除行尾到光标