实施运维基础linux指令,运维基础知识总结(常用命令篇)

什么是shell

Shell 是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

shell也被称为LINUX的命令解释器(command interpreter)

shell是一种高级程序设计语言

3b4a344085fa5ba51af2699fb55d94a0.png

bash shell

GNU Bourne-Again Shell(bash)是GNU计划中重要的工具软件之一,目前也是 Linux标准的shell,与sh兼容

CentOS默认使用

显示当前使用的shell

echo ${SHELL}

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

cat /etc/shells

执行命令

输入命令后回车

提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来

在shell中可执行的命令有两类

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

help 内部命令列表

enable cmd 启用内部命令

enable –n cmd 禁用内部命令

enable –n 查看所有禁用的内部命令

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

查看路径:which -a |–skip-alias ; whereis

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

type COMMAND

Linux命令有内部命令(内建命令)和外部命令之分,内部命令和外部命令功能基本相同,但也有些细微差别。

内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。

外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin…等等。可通过“echo

$PATH”命令查看外部命令的存储路径,比如:ls、vi等。

用type命令可以分辨内部命令与外部命令

[root@localhost account]# type cd

cd is a shell builtin

pwd命令用于显示当前工作目录,是Linux系统下最常用的命令之一。在不太能确定当前位置时,可以使用pwd命令来判断目录在文件系统内的确切位置。而涉及pwd指令,就不得不提及三个环境变量:PATH、OLDPWD、PWD。

PATH:执行文件路径的变量;"echo PATH"(PATH前面加PATH"(PATH前面加PATH"(PATH前面加表示后面接的是变量)

OLDPWD:表示前一次的工作目录;

PWD:表示当前的工作目录。

问题缘由:当输入“man pwd”时可以查看pwd的帮助文档,而输入“pwd --help”就提示有错误bash: pwd: --: invalid option;若输入“ /bin/pwd --help”就能正常显示pwd的帮助文档。

从网上查找原因并经过整合可知,这主要是由于内部命令和外部命令的区别,pwd是内部命令,而/bin/pwd就是外部命令。在显示当前目录时,/bin/pwd能显示当前工作目录的完整文件路径,能更准确些。在多人共享同一台Linux机器时,经常会发现当前目录被别人删除后,pwd命令仍然会显示那个目录。

后续试验:切换至root权限下,将/bin目录下的执行文件ls移动到非正规目录中去,mv /bin/ls /root(#mv为移动,可将文件在不同的目录间进行移动操作),然后不管在哪个目录底下输入任何与ls相关的指令,都不能顺利执行ls了(因为/root这个目录并不在PATH指定的目录中,外部命令ls是没法通过PATH路径找到执行文件ls),除非用/root/ls

才行。

如果想要让root在任何目录下均可执行/root底下的ls,那么可以将/root加入到PATH当中,该命令PATH="$PATH":/root即可。若有两个ls指令在不同的目录中,例如/usr/local/bin/ls

和/bin/ls ,那么当我下达 ls命令时,是根据PATH里面哪个目录先被查询到,则那个目录下的指令就先被执行。

而即使采用相同的方法移动/bin目录下的执行文件pwd,仍可以输入pwd命令执行,因为这时仍是调用内部命令pwd指令。

故shell命令解释器在执行命令时,是应先执行内部指令,若要执行的指令不是内部指令,则应是调用的外部指令。

执行外部命令

Hash缓存表(哈希表)

系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。

利用hash缓存表可大大提高命令的调用速率

hash常见用法

hash 显示hash缓存

hash –r 清除缓存

命令别名

Linux alias命令用于设置指令的别名。

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。若要每次登入是即自动设好别名,可在.profile或.cshrc中设定指令的别名。

语法

alias[别名]=[指令名称]

参数说明:若不加任何参数,则列出目前所有的别名设置。

实例

给命令设置别名

alias lx=ls

lx

anaconda-ks.cfg Desktop install.log install.log.syslog qte

linux命令格式

~]#COMMAND [选项] [参数]

例如:

~]#ls 不带任何选项和参数

~]#ls -lh /etc 列出/etc下所有文件和目录,同时要求以格式和以友好可读的方式显示

1.ifconfig命令

列如:

~]#ifconfig 显示所有网卡信息(简略)

~]#ifconfig -a 显示所有网卡信息

~]#ifconfig eth0 显示指定网卡

2.echo命令

格式:echo string

列如:

~]#echo '$SHELL'

~]#echo "$SHELL"

重要知识点:

‘str’ 强引用,变量引用不执行替换

"str"弱引用,变量引用会被替换

变量引用的正规格式:

${变量名}

重要选项

-n 显示后不进行换行操作

-e 让转义符生效

转义符:

\n 换行符

\t 横向制表符

\b 退格操作

\033 需变色文本\033[0m 需变色文本将在屏幕显示红色

3.tty命令 显示终端

列如:

[root@localhost ~]#tty

4.startx 启动图像界面

列如:

[root@localhost~]#startx & &表示从后台启动

5.export 设置当前shell的变量

列如:

[root@localhost ~]#export $ORACLE_SID=oracl

6.pwd 显示当前工作目录 printing working directory

列如:

~]#pwd

7.history 历史命令

列如:

~]#history 查看历史命令

~]#history -c 清除历史命令

7.shutdown 关机重启命令

格式:

shutdown [OPTION] [TIME] [WALL…]

选项:

-r 重启 等同reboot

-h 关机

-P 关机

-c 取消前面的shutdown操作

TIME:

now:马上关机

hh:mm 几点几分

+m 几分钟以后

+0:相当于now

WALL:向其他用户发出通知

列如:

[root@localhost~]#shutdown -r +2 “warning...."

2分钟以后关机,并向其他用户发出”warning“的警告

8.reboot 关机命令

9.hwclock 硬件时钟

注意:clock命令是hwclock的软链接

选项:

-s 以硬件时钟为准,修改系统时钟

-w 以系统时钟为准,修改硬件时钟

知识点:

linux有2套时钟,系统启动时从硬件读取日期和时间信息,读取完毕后,就自行向后进时,不再与硬件关联同步。

列如:

~]#clock -w

10.date 查看并设置日期时间

显示查看日期时间:

date [OPTION]… [+FORMAT] 显示日期时间

]#date 显示时间

格式显示时间

%F:

~]#date +%F 显示2015-12-08

~]#date +%H 显示18

~]#date +%T 显示分钟和秒18:51:21

不可以

~]#date +%F +%T

但可以

~]#date +%F -%T

~]#date -%c 显示2015年12月08日 星期二 18时51分21秒

~]#date +%Y 显示年2015

~]#date +%m 显示月12

~]#date +%d 显示日08

~]#date +%M 显示分51

~]#date +%S 显示日21秒

显示按自己的格式

~]#date +%Y-%m-%d-%H-%M-%S

注意%s 表示时间戳,表示从1971年1月1日0点0分0秒到此刻的秒数。1971年1月1日是unix的元年。

设置日期时间:

~]#date [MMDDhhmm[[CC]YY[.ss]] 设置日期时间

~]#date 101408082013.08 改成2013年10月10日8点8分8秒

tab键

命令补全

内部命令:

外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻

以给定命令名命名的文件,第一次找到的命令即为要执行的命令

用户给定的字符串只有一条惟一对应的命令,直接补全

否则,再次Tab会给出列表

路径补全

把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符

串开头的文件名

如果惟一:则直接补全

否则:再次Tab给出列表

whatis

显示命令的简短描述

使用数据库

刚安装后不可立即使用

makewhatis | mandb制作数据库

使用示例:

whatis cal 或 man –f cal

help选项

显示用法总结和参数列表

使用的大多数,但并非所有的

示例:

date --help

Usage: date [OPTION]… [+FORMAT] or: date [-u|–utc|–

universal] [MMDDhhmm[[CC]YY][.ss]]

[] 表示可选项

CAPS或 <> 表示变化的数据

… 表示一个列表

x |y| z 的意思是“ x 或 y 或 z “

-abc的 意思是-a -b –c

{ } 表示分组

man命令

提供命令帮助的文件

手册页存放在/usr/share/man

几乎每个命令都有man的“页面”

man页面分组为不同的“章节”

统称为Linux手册

man命令的配置文件:/etc/man.config | man_db.conf

MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置

到指定位置下搜索 COMMAND 命令的手册页并显示

man - M /PATH/TO/SOMEWHERE COMMAND

中文man需安装包man-pages-zh-CN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值