目录
---------------------------------------------------------------------------------------------------------------------------------
1、shell
1.1什么是shell
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
设备看不懂人类的语言,所以需要一个翻译官在翻译才可以保障信息的通畅。
每打开一个交互页面,必加载一个shell程序
1.2、shell in linux
bash是linux里面默认的shell程序
[root@localhost ~]# echo $SHELL
显示当前shell
[root@localhost ~]# cat /etc/shells
显示当前系统所有使用的shell
[root@localhost mnt]# sh
切换shell环境
[root@localhost mnt]# pstree
查看使用过的shell环境
1.3、shell中的内部与外部命令
shell 分为内部命令 和外部命令,一般先执行内部命令,hash 再执行外部命令
1.3.1、外部命令
Linux系统中能够完成特定功能的脚本文件或二进制程序,属于Shell解释器程序之外的命令,每个外部命令对应了系统中的一个文件,必须知道其对应的文件位置,由Shell加载后才能执行
1.3.2、内部命令
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令,属于Shell的一部分、没有单独对应的系统文件、自动载入内存,可以直接使用
1.3.3、help
内部命令:在命令后输入 ‘help’
外部命令:在命令后输入 ‘--help’
---------------------------------------------------------------------------------------------------------------------------------
2、命令
在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令
严格来说,命令通常只代表实现某一类功能的程序的名称
命令字 | 是整条命令中最关键的一部分 唯一确定 |
选项 | 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“--”符号引导 通常完整的单词 |
参数 | 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个 |
---------------------------------------------------------------------------------------------------------------------------------
3、目录操作
3.1、命令
3.1.1、pwd
[root@localhost ~]# pwd
/root //显示当前路径
[root@localhost bin]# pwd -P
/usr/bin #-P 显示真实路径
3.1.2、cd
命令 | 效果 |
---|---|
cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
[root@localhost opt]# cd ./ky18/
[root@localhost ky18]# #切换到当前目录下的 ky18 文件夹
[root@localhost ky18]# cd ../../
[root@localhost /]# #切换到上两层的目录
3.1.3、ls
ls [选项] [文件或目录… ]
-l | 已长格式显示文件和目录列表(ll=ls-1) |
-a | 显示全部包括隐藏文件 |
-A | 显示全部文件或隐藏文件,但不包括 . 和 . . |
-d | 仅列出目录本身,而不是列出目录内的文件数据 |
-h | 友好显示文件大小 |
-R | 递归显示该目录及该目录的子目录下的所有内容 |
-t | 已时间顺序显示 |
-r | 倒序显示 |
--color | 显示颜色 |
-S | 以文件容量大小排序 |
3.1.4、通配符
去匹配文件名(包括文件夹)
类似 ls /opt/?[0-9]*
即opt目录下第二个字符为数字的文件
符号 | 效果 |
---|---|
? | 匹配一个字符 f?.txt |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | 匹配列表中的所有字符以外的字符 |
3.1.5、alias
临时修改
alias 命令别名=’命令‘
unalias 别名命令 删除别名
\加别名命令 (显示原始命令)
[root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33'
即输入myvim 等同于'vim /etc/sysconfig/network-scripts/ifcfg-ens33'
[root@localhost dev]# alias cd='ls'
当输入[root@localhost dev]#cd /opt 时执行的命令是ls /opt,因为别名优先级高于内部和外部命令
当输入[root@localhost dev]#\cd /opt 时执行的命令是cd /opt,因为 \ 加别名命令,即为显示原始命令
永久修改
在/etc/.profile会影响全部用户
/root/.bashrc只影响当前用户
3.1.6、du
查看当前所在文件夹占用了磁盘的多少单元块。默认1单元块为4K, 不满4K 按4k算。
du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n (-d 1) | 最大显示到第n层 |
4.2、创建
4.2.1 创建目录mkdir
mkdir -p 递归创建 没有文件夹 会自动递归创建
mkdir [选项] 目录位置及名称
[root@localhost data]# mkdir a b c d
创建多个文件夹
[root@localhost data]# ls
a b c d
[root@localhost data]# mkdir -p aaa/bbb/cccc
递归创建文件夹[root@localhost data]# ls
a aaa b c d
4.2.2、创建文件touch
-
touch 新文件…(可为空) 文件名 不存在就是新建空文件
-
touch 不会破坏已有文件 刷新时间
[root@localhost data]# touch 1 2 3
创建新文件
[root@localhost data]# ls
1 2 3
4.3、软硬连接
硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问
软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
ln -s 绝对路径的源文件 软连接位置
ls 绝对路径源文件 硬连接位置
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
总用量 8
lrwxrwxrwx. 1 root root 6 8月 26 22:17 f1111.txt -> f1.txt
-rw-r--r--. 3 root root 66 8月 26 21:45 f111.txt
-rw-r--r--. 1 root root 2573 8月 26 11:55 passwd
4.4、复制
cp(copy)备份
-
cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为
-
cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
[root@localhost ~]# cp /opt/111 /mnt/
将/opt/111文件复制到/mnt目录下
[root@localhost ~]# cp -r /opt /mnt
将/opt目录复制到/mnt目录下
4.5、删除文件rm
rm [选项] 要删除的文件或目录
-
-f 强制
-
-i 交互
-
-r 递归(删除目录需要)
4.6、查找 find
find [查找路径] [OPTION]... [查找条件] [处理动作]
find的特点
- 精确查找
- 实时查找
- 支持查找条件多
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 find /etc -maxdepth 2 -mindepth 2 |
-type 文件类型可以是下列形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
find 的高级用法
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
4. 7、which
which 命令|程序名
which 后面直接更程序的名称