初识Linux

文章目录


一、Linux是什么?

相信大家都了解Windows,windows是面向用户的系统,图形化界面操作,点点对话框便可以完成操作,那linux是以系统精简出名的,所以不是面向用户的操作系统,有一定的操作难度。

Linux的优势:

  1. 一切都是一个文件。容易看(包括硬件,文本,二进制,源代码)
  2. 系统中拥有小型,单一用途的程序。(一个程序只负责做好自己的本职工作)
  3. 当遇到复杂任务,通过不同功能用途的程序组合起来完成
  4. 避免令人困惑的用户界面就是没有复杂的图形界面。
  5. 不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型。
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章一般是配置文件格式详细解释

相关推荐
北京智和信通4 分钟前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控
fasewer9 分钟前
第五章 linux实战-挖矿 二
linux·运维·服务器
楚灵魈35 分钟前
[Linux]从零开始的网站搭建教程
linux·运维·服务器
小小不董37 分钟前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba
这可就有点麻烦了1 小时前
强化学习笔记之【TD3算法】
linux·笔记·算法·机器学习
DY009J1 小时前
深度探索Kali Linux的精髓与实践应用
linux·运维·服务器
程序员-珍2 小时前
虚拟机ip突然看不了了
linux·网络·网络协议·tcp/ip·centos
什么鬼昵称2 小时前
Pikachu- Over Permission-垂直越权
运维·服务器
码农小白2 小时前
linux驱动:(22)中断节点和中断函数
linux·运维·服务器
4647的码农历程2 小时前
Linux网络编程 -- 网络基础
linux·运维·网络