文章目录
一、Linux是什么?
相信大家都了解Windows,windows是面向用户的系统,图形化界面操作,点点对话框便可以完成操作,那linux是以系统精简出名的,所以不是面向用户的操作系统,有一定的操作难度。
Linux的优势:
- 一切都是一个文件。容易看(包括硬件,文本,二进制,源代码)
- 系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
- 当遇到复杂任务,通过不同功能用途的程序组合起来完成
- 避免令人困惑的用户界面就是没有复杂的图形界面。
- 不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
bash
[root@localhost ~]#
[lisi@localhost root]$
第一个位置表示用户 即lisi 和root
localhost表示主机名
~家目录
# 管理员用户
$ 普通用户
#关机命令:
1、halt #立刻关机
2、poweroff #立刻关机
3、shutdown -h now #立刻关机(root用户使用)
4、shutdown -h 10 #10分钟后自动关机
#重启:
reboot
二、shell
1.shell是什么
shell是Linux系统中后台运行的一种特殊程序,也可以理解为一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
作用:
- 在用户和内核之间充当"翻译官"
- 用户登录Linux系统时,自动加载一个shell程序
- Bash是Linux系统中默认使用的shell的程序
bash
[root@localhost ~]# echo $SHELL //查看当前shell
/bin/bash
[root@localhost ~]# cat /etc/shells //查看所有shell
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
2.shell与内、外部命令
(1)shell分为内部命令和外部命令,一般先执行内部命令,hash再执行外部命令(别名最大)
内部命令 | 外部命令 |
---|---|
集成于shell解释器程序内的一些特殊指令,也称为内建指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由shell加载后才能执行 |
命令运行的方式:
如果执行一个命令报错,只有两种情况,命令未找到或者命令打错了
一般解决办法:
1.没装该命令,安装即可
2.hash缓存有错,清理hash表
3.不在指定的路径下,需要用绝对路径,或者将命令复制到对应文件夹下。
三、其他
1.用type命令开区分外部命令
bash
[root@localhost /]# type cd
cd 是 shell 内嵌 //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名 //别名代表外部命令
ls 是 /usr/bin/ls //外部命令会有程序路径
[root@localhost /]# whereis ls //whereis 可以查找命令具体的位置所在
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
[root@localhost ~]# type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo
外部命令存放于 echo $PATH 一个一个找,找到为止,找不到就报错
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd
useradd 已被哈希 (/usr/sbin/useradd)
2.hash缓存
使用过一次外部命令就会将这个外部命令,缓存在hash。
外部命令需要取找他的路径才能执行,直接在缓存调用加快了速度。
命令的优先级:内部命令>hash缓存>外部命令
hash -d 将缓存里的命令 单独删除
hash -r 删除所有
bash
命中 命令
1 /usr/bin/dd //前面数字代表用过几次
2 /usr/sbin/useradd
1 /usr/bin/whoami
3 /usr/bin/ls
[root@localhost ~]#hash -d dd //清除dd命令缓存 -r全清
[root@localhost ~]#hash -r
[root@localhost ~]#hash
hash: 哈希表为空
#清除所有缓存
[root@localhost ~]# hash
命中 命令
2 /usr/sbin/useradd
1 /usr/bin/whoami
3 /usr/bin/ls
[root@localhost ~]# which ping //外部命令的磁盘路径 -a 所有
/usr/bin/[root@localhost ~]# which help //内部命令找不到
/usr/bin/which: no help in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost ~]# whereis echo //相关文档的帮助的命令
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man1p/echo.1p.gz
bash
//将缓存的外部命令移到其他默认的目录中,无法再次使用,需要清掉hash值之后 ,才可以继续使用
[root@localhost mnt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root:/root/bin
[root@localhost mnt]# mv /usr/bin/ls /usr/local//bin
[root@localhost mnt]# ls
-bash: /usr/bin/ls: 没有那个文件或目录
[root@localhost mnt]# hash
命中 命令
1 /usr/bin/mv
2 /usr/bin/ls
6 /usr/bin/cd
[root@localhost mnt]# hash -d ls //将缓存里的命令单独删除
[root@localhost mnt]# ls
1.5.txt f15..txt f1.txt f3.txt f5.txt
15..txt f15...txt f2.txt f4.txt
[root@localhost mnt]# hash
命中 命令
1 /usr/bin/mv
1 /usr/local/bin/ls
6 /usr/bin/cd
3.获取命令帮助的方法
(1)help
内部命令
外部命令
(2)man手册
man分九个章节默认打开第一章节(menu菜单 manual手册)
查看第五章内容,第5章一般是配置文件格式详细解释