前言
认识Shell
Shell是Linux系统中运行的一种特殊程序,在用户与内核之间充当“翻译官”的角色,为用户终端与内核之间提供交互平台,在用户登录LInux系统的时候会自动加载一个Shell程序,其中默认使用的Bash文件位于/bin/bash中。
用户与内核进行交互过程如下:
1、计算机接收用户所输入的的命令
2、shell会将所接收到的命令转换成计算机所能识别的二进制语言
3、再将命令传递给系统内核执行
一、Linux命令的分类
内部命令 | 外部命令 |
---|---|
内部命令是集成与Shell解释器内部的指令(built-in) | 属于Shell解释器之外的指令 |
没有单独的对应系统文件 | 每个外部命令对应了系统的一个文件 |
自动载入内存,可以直接使用 | 必须要知道其对应文件的位置,需要SHell加载后才能执行 |
执行速度快,不用调用进程 | 调用进程速度慢,长时间不使用会释放(减速) |
二、Linux基础命令
1、查看内部命令
代码如下(示例):
type #查询内部外部指令
enable-n + 指令 #禁用内部指令
enable + 指令 #开启指令
help #帮助
#其中内部命令与外部命令是有区别的
ls --help #外部命令查询帮助
help cd #内部命令查询帮助
echo #shell内嵌/也可以是外部指令(给出具体命令所在)
hash #可以直接调取缓存中的指令
which + 指令 #查询指令所在路径与别名
2、命令行格式
通用命令行格式如下:
命令字 [选项] [参数]
命令字:唯一确定一条指令,是整条命令中最关键的部分
选项:长格式:使用“- -”符号引导;短格式:使用“-”符号引导
参数:用来处理对象;可以是文件名、目录(路径)名或者用户名等内容;个数可以是0到多个
3、Linux命令行的辅助操作
Tab键:自动补齐
反斜杠“\”:强制换行(不影响该命令的操作)
Ctrl+U:请控制行首
Ctrl+K:清空至行尾
Ctrl+L:清屏
Ctrl+C:取消本次命令编辑
Ctrl+A:至行首
Ctrl+E:至行尾
4、获得命令帮助的方法
4.1内部命令help
查看Shell内部命令的帮助信息
4.2命令的“–help”选项
适用于大多数的 Linux的外部命令
4.3使用man命令阅读手册
可以使用方向键滚动文本;使用Page Up和Page Down键翻页;按Q或q键退出阅读环境;按“\”键查找内容
man cd | col -b > cdhelp.txt #查询帮助文档
#-b:过滤掉所有字符
5、目录与文件基本操作pwd
pwd #显示用户当前所在工作目录位置
6、切换工作目录cd
绝对路径:以根目录开始——/home/kgc
相对路径:通过cd——>进入/home——>进入/boot(逐级进入目标文件)
cd #进入当前所在目录根目录下的系统目录
cd~ #切换到家目录
cd+目录 #进入目标目录
cd- #进入上一次的执行目录
cd .. #返回上一层目录
cd ../../#返回上两层目录
7、列表显示目录内容ls
ls [选项] [文件或目录...]
ls #显示目录中的内容,包括子目录和文件的相关属性
#常用选项如下:
ls -l(ll--别名)#显示以列表的形式
ls -d #查看目录本身信息或者旗下内容
ls -h #查看大小(友好显示)
ls -i #显示iNode值
ls -a #遍历所有文件及目录
ls -A #区别于-a不列出上一级目录和当前目录
ls -lt #显示文件时间的排序
#ls命令还可以组合查看相应目录,如:
ls -lh /etc/sysconfig/
#结合通配符
##“?”匹配文件名中的一个位置字符
ls -lh cd?1
##“*”匹配文件名中的任意多个未知符
ls -lt /home/a*.txt
8、别名设置alias
可以通过别名机制简化常用的、比较长的命令设置成便于记忆和操作的指令
alias net='vi /etc/sysconfig/network-scripts/ifcfg-ens33'
#将vi /etc/sysconfig/network-scripts/ifcfg-ens33简化成net
unalias #删除你所设置的简称命令
每次重启你的虚拟机都会重置我们原先设置的简化命令,我们可以通过 /etc/bashrc 或者 ~/.bashrc文件去进行对alias命令的永久保存,最后执行下 source /etc/bashrc 或source~/.bashrc命令 alias设置的短命令就又可以使用了
9、统计目录寄文件空间占用情况du
统计指定目录(或文件)所占用磁盘空间的大小
-a或-all #显示目录中个别文件的大小。
-h或--human-readable #以K,M,G为单位,提高信息的可读性。
-k或--kilobytes #以1024 bytes为单位。 (默认就是kb)
-m或--megabytes #以1MB为单位。
-s或--summarize #仅显示总计
du -sh * #友好显示全部文件大小
统计出/var/log目录所占用的空间
du -sh /var/log
10、创建新目录mkdir
创建新的目录
mkdir [选项] 目录位置及名称
mkdir -p #-p 确保目录名称存在,不存在的就建一个
mkdir {1..10} #创建多个账号1~10
11、创建空文件touch
创建文件的时间标记,经常用于创建多个新的空文件
touch + 文件 #创建文件
touch aa bb #创建两个空文件aa和bb
touch {a,b,c,d,e,f}.txt #创建多个txt文件
12、创建链接文件ln
12.1软连接
#ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化,同步在连接的文档中创建添加内容,原文件中也会有增加的内容
ln -s 源文件 目标文件
ln -s /root/123.txt /opt/123.txt #在/opt中做一个123.txt的软连接
12.2硬链接
#它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间(一般磁盘空间不够的时候使用软连接,导入数据到挂载点)
#没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化
ln young.txt text.txt #创建一个young.txt的硬链接文件text.txt
#如果你用ls察看一个目录时,发现有的文件后面有一个->的符号,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。硬链接——等于复制文件,不会显示连接通道
12.3软连接与硬连接的区别
硬链接不能跨分区建立连接 无法对文件夹创建
删除硬件连接可以继续访问硬链接
软连接可以跨设备 可以支持文件夹
软连接删除源文件不能访问
13、复制文件或目录cp
将需要复制的文件或目录(源)重建一份,并保存,格式为:cp [选项]…源文件或目录…目标文件或目录…
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-a 保留权限(递归复制)
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
#取消默认的覆盖(alias中的cp -i),然后再cp复制
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
cp a.txt{,.bak} #复制多个文件
14、删除文件或目录rm
删除指定文件或目录
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
如果需要删除文件夹需要进行递归删除
例如:
rm -rf ./* #删除当前目录下所有
#./:当前目录
#/:根目录
15、移动文件或目录mv
将指定的文件或目录转移位置,如果目标位置与源文件位置相同,则相当于执行重命名操作,如果目标目录有同名的文件或目录,不加任何参数会直接覆盖
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。无论多少次,生效的文件以最近的两次文件为准
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 y直接覆盖原有文件,n取消移动
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
16、查找命令/文件存放目录which
搜索的范围由环境变量PATH决定
echo $PATH
which + 命令|程序名
或which -a 命令|程序名
例如:
which ls #查询ls指令
17、查找文件或目录find
采用递归的方式,根据目标的名称、类型、大小等不同属性进行精细查找
find [查找范围] [查找条件表达式]
-name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
#使用find命令实现多个查找条件:
-a :表示同时满足前后两个条件
-o :表示前后条件只满足其一
例如:
find /etc/ -user root -a size +1M #满足root且要求大于1M
find /etc/ -user root -o size +1M #满足root或者大于1M