linux基础知识
linux的优点
1. 一切都是一个文件
2. 系统中拥有小型,单一用途的程序
3. 当遇到复杂任务,通过不同功能用途的程序组合起来完成
4. 避免令人困惑的用户界面就是没有复杂的图形界面
5. 不在乎后缀名,有没有都无所谓,不是通过后缀名来定义文件的类型
基础知识
🎈 root 表示用户
🎈 localhost 主机名
🎈 ~ 家目录
家目录:存放当前用户个性化配置信息的文件夹,是当前用户对自己家目录的最高权限
- 超级管理员的家目录: /root
- 普通用户的家目录:/home/下面同名的文件夹
🎈 # 管理员用户
🎈 $ 普通用户
[root@localhost ~]# su lilili
📍表示为从管理员用户root切换到普通用户lilili
从切换用户就可以看出来符号从#变成了$号,这就代表了我们的权限不一样了
关机命令:
- halt #立刻关机
- poweroff #立刻关机
- shutdown -h now #立刻关机(root用户使用)
- shutdown -h 10 #10分钟后自动关机
重启命令:
- reboot
- init6
- shutdown -r now
linux命令精讲
shell
📌shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进行交互操作的一种接口。
📌shell的作用:把人类的高级语言翻译成二进制语言
📌shell有哪些:
- bash(centos7默认的软件)
- sh
- nologin等(最特殊)nologin任何系统不让用
📍注意点:bash放在:/bin/bash目录里,bash既是内部命令也是外部命令
shell与内、外部命令
📌shell 分为内部命令和外部命令,一般先执行内部命令,hash 再执行外部命令(别名最大)
📌别名>内部命令>hash>外部命令
内部命令 | 外部命令 |
---|---|
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
linux执行命令的过程:
1. 绝对路径下的执行程序
2. 先看别名,如果有别名,直接执行
3. 再区别是内部命令还是外部命令,内部命令直接执行
4. 外部命令首先看hash表,表中直接执行,表中有但是找不到,直接报错
5. 没有hash,回去$PATH路径下的文件夹去找,找到执行,找不到报错
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:
/usr/bin:
/root/bin
在这5个文件夹中寻找
外部命令存放于echo $PATH 中,在这个表中一个一个找,找到为止,找不到就报无命令
区分内部命令和外部命令
使用type这个命令区分
[root@localhost ~]# type 命令
命令格式
- 在 Linux 操作系统中,凡是在字符操作界面中输入能够完成特定操作和任务的字符串都 可以称为命令。
- 严格来说,命令通常只代表实现某一类功能的程序的名称。
格式:命令字 空格 [选项] 空格 [参数]
📍注意点:命令和选项还有参数之间一定要有空格(不限制数量,但是必须要有)
- 命令字 是整条命令中最关键的一部分 唯一确定
- 选项 短格式选项:使用“-”符号引导 通常 一个字母 长格式选项:使用“–”符号引导 通常完整的单词
- 参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
拓展:; 可以隔开命令,执行多个命令
编辑命令时可以使用的一些快捷键
快捷键 | 功能 |
---|---|
Tab 键 | 自动补齐(两次可以显示所有选项) |
反斜杠“\” | 强制换行或转义 |
Ctrl+a | 光标移到最前 |
Ctrl+e 或 end 键 | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的 字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+w | 从当前光标删除到开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 | 回看执行过的命令 |
命令的帮助
当我们不知道有时候不知道该怎么使用什么命令时,可以获得命令的帮助
help
内部命令使用help
[root@localhost /]# help
–help
外部命令使用–help
[root@localhost /]# ls --help
📌可以查看ls这个命令的用法
man
man是一个手册,共有九个章节,我们常用的是区间1和区间5
区间 | 分类 |
---|---|
区间1 | 用户指令 |
区间2 | 系统调用 |
区间3 | 程序库调用 |
区间4 | 设备 |
区间5 | 文件格式 shadow passwd fstab |
区间6 | 游戏 |
区间7 | 杂项 |
区间8 | 系统指令 |
区间9 | 内核内部指令 |
[root@localhost /]# man man
📌按q退出man手册5
info
[root@localhost /]# info ls
📌可以查看ls这个命令的信息
📌按q或者ctrl+c退出
目录操作
pwd(print work directory)
当你不知道目前处于什么路径时,可以用该命令查看当前路径
[root@localhost pam.d]# pwd
📌说明现在处于根目录下的etc这个文件夹下的pam.d中
pwd -P
可以查看软链接的源路径
[root@localhost dd]# pwd -P
📌用pw显示示的是当前路径,加上-P就是显示的源路径
cd(change directory)
该命令用来切换所在的文件夹(目录)
[root@localhost dd]# cd /etc
从dd文件夹切换到了etc文件夹
cd ~和单独使用cd
代表去往当前用户的家目录
[root@localhost rh]# cd ~
[root@localhost rh]# cd
输入这两个命令之后用pwd查看当前路径,我们使用的是root管理员登录,所以去往的是家目录就是root文件夹
cd ./和cd ../
-
./ 表示以当前的工作目录作为起点
-
../ 表示以当前目录的上一级目录(父目录)作为起点
[root@localhost ~]# cd ./
现在还是在当前目录下
[root@localhost ~]# cd ./
现在去往了root的上级目录根目录那边
cd –
返回上一次所在目录(只有一次有效)
[root@localhost mnt]# cd -
原本我们在opt切换到mnt,当输入cd -这个命令后就切换到了之前所在的opt下
绝对路径和相对路径
- 绝对路径:从根目录开始写路径,唯一的,不会出错,以/开始的路径
- 相对路径:不是从根目录开始写路径,不唯一会有重复的,不以/开始的路径
我们从opt下进入到该目录之下的rh用了两种方法:
- 绝对路径:第一个/表示根目录,之后的/表示分隔符,意思是这个目录的名字已经输完, /opt/rh就表示去往根目录之下的opt目录下的rh
- 相对路径:./rh表示去往当前目录(也就是opt目录)下面的rh目录
小结
命令 | 效果 |
---|---|
cd 和cd ~ | 切换到当前用户的家目录 |
cd ./ | 当前目录 |
cd ./ / | 上级目录 |
cd – | 返回上一次所在目录 |
ls(list)
列出当前文件夹下所有文件夹,基础功能不包括隐藏文件
🎈格式:ls [选项] [文件或目录… ]
📍注意点:ls命令通常都是几个选项一起使用,使用单个命令没有意义
[root@localhost ~]# ls
-a
显示所有文件包括隐藏文件,也包括.(当前文件)和..(当前文件夹的上级文件)
[root@localhost ~]# ls -a
可以看出加上-a这个选项之后看到了以.和..文件还有隐藏文件
-A
显示所有文件不包括隐藏文件,不包括.(当前文件)和..(当前文件夹的上级文件)
[root@localhost ~]# ls -A
可以看出加上-A这个选项之后看到了隐藏文件但是没有.和..文件
-l
长格式显示,显示详细信息
[root@localhost ~]# ls -l
可以看出加上-l这个选项之后可以看到每个文件的详细信息
[root@localhost ~]# ll
可以直接用ll这个指令代替ls -l指令
-h
人性化显示文件大小
和-l这个命令一起使用的效果:
[root@localhost ~]# ls -lh
可以看出加上h这个选项配合-l之后,能更加人性化的显示出了文件的大小
-d
只显示当前文件夹,而不是列出目录内的文件数据
[root@localhost ~]# ls -d
可以看出加上-d之后显示出的是当前文件,之前我们有提到过.就是当前文件夹
-l、-d、-h配合使用
表示人性化的显示该文件夹的具体信息
[root@localhost ~]# ls -ldh
-R
递归显示该目录及该目录的子目录下的所有内容
[root@localhost ~]# ls -R
可以看出加上-R之后,显示出的文件时一层一层显示的
-t
以时间排序(默认把最新的方最下面)
和ll指令一起使用的效果:
[root@localhost ~]# ll -t
可以看出加上-t之后,是按时间排序的
-r
倒叙排序
和ll -t指令一起使用的效果:
[root@localhost ~]# ll -tr
可以看出加上-r之后,排序就相反了
-S
以文件容量大小排序(默认最大的在最上面)
和ll指令一起使用的效果:
[root@localhost ~]# ll -S
可以看出加上-S之后,是按容量大小排序的
这个选项也可以和-t一起使用:
[root@localhost ~]# ll -Sr
可以看出加上-r之后,排序就相反了
-i
显示文件的inode号
[root@localhost ~]# ls -i
可以看出输入-i这个选项后,显示出了indoe号
indoe号
是文件的身份号,每生成一个文件,系统会分配给文件一个indoe号,indoe号是可以被用完的,用完之后就不可以再创建文件,需要把别的文件删除才能再创建
文件类型
文件类型有7种,第一个字符代表了该文件的类型
第一个字符 | 文件类型 |
---|---|
– | 普通文件 |
d | 文件夹 |
c | 字符文件(一个字符一个字符读取) |
p | 管道文件(单向传输,单工) |
b | 块设备(硬盘) |
s | 套接字(里面有 ip地址和端口号,传递信息) |
l | 链接文件(类似 Windows 系统中的快捷方式) |
例子:
-rw-r–r–. 1 root root 0 9月 20 16:32 aa
- -:代表文件属性:普通文件
- rw-r–r–:权限
- 1:硬链接
- root:拥有者
- root:拥有组
- 0:代表文件大小
- 9月 20 16:32:代表创建文件的时间(最后一次使用的时间)
- aa:文件名
📍拓展:关于 rw-r–r–
rw- (创建者) r–(所属组) r–(其他)
权限:可读 可写 可执行
r 可读
w 可写
x 可执行
- 没有该权限
通配符
ls不可以单独使用,需要和通配符配合使用
🎈通配符作用:匹配文件的名字,去模糊查找文件
?
代表匹配任意一个字符
[root@localhost opt]# ls ?
可以看出这个命令显示的是只有一个数的文件名,不显示超过1个字符的文件名
[root@localhost opt]# ls ??
输入两个?就代表只显示两个字符的文件,其他的就不显示了
*
匹配所有非隐藏的文件,无论字符多长多短
通常需要配合使用
[root@localhost ~]# ls *.txt
这个命令的意思是显示所有以.txt结尾的文件
[root@localhost ~]# ls .*
这个命令的意思是显示所有以.开头的文件
包括了..(上层目录)中的文件
{1..10}、{a..z}、{A..Z}
[root@localhost opt]# ls {1..10}
这个命令的意思是显示字符1-10中任意一个字符的文件
[root@localhost opt]# ls {a..z}
这个命令的意思是显示a-z中任意一个字符的文件
[root@localhost opt]# ls {A..Z}
这个命令的意思是显示A-Z中任意一个字符的文件
[456]、[a-z]、[A-Z]
[root@localhost opt]# ls [456]
取其中之一有就显示没有也无所谓
[456]取值范围:此处括号里值代表一个字符,就是4或者5或者6
要注意区分这[a-z]、[A-Z]的取值范围
[root@localhost opt]# ls [a-z]
[a-z]的取值范围是:a-z,没有Z
[root@localhost opt]# ls [A-Z]
[A-Z]的取值范围是:A-Z,没有a
[^love]
匹配列表中的所有字符以外的字符
[root@localhost opt]# ls [^love]
这个命令的意思是除了有love这四个字符的,其他都显示
小结
选项总结
选项 | 作用 |
---|---|
-a | 显示所有文件包括隐藏文件 也包括 .(当前文件) ..(当前文件夹的上级文件) |
-A | 显示所有文件或隐藏文件 不包括 .(当前文件) ..(当前文件夹的上级文件) |
-l | 长格式显示,显示详细信息 ls -l=ll |
-h | 人性化显示当前文件夹 |
-d | 只显示当前文件夹,而不是列出目录内的文件数据 |
-R | 递归显示所有文件 |
-t | 以时间排序(默认把最新的方最下面) |
-r | 倒叙排序 |
-i | inode 文件的编号(能用完,需要删除没用的) |
-S | 以文件容量大小排序(默认最大的在最上面) |
alias
将一些很长的命令 自定义成简单好记忆的命令
\转义符:代表使用原来命令的意思(如果取的别名和别的命令重复,会让临时用一次别的命令的作用)
🎈格式:alias 自定义命令=’原始命令’
[root@localhost ~]#alias san='hostnamectl set-hostname'
表示给原始命令hostnamectl set-hostname取了一个新名字san
hostnamectl set-hostname命令的意思是给主机改名字, 我们给这个命令取了别名之后,就可以直接使用别名作为这个命令使用
[root@localhost ~]# alias
可以查看有哪些别名
[root@localhost ~]# unalias
取消别名
取消了别名之后可以看出我们在输入san这个命令会显示找不到命令的
du
看当前所在文件夹的总磁盘占用量,也统计隐藏文件的大小
🎈格式:du [选项] [文件夹]
[root@localhost opt]# du /opt
显示了每一个文件的大小
-a
[root@localhost opt]# du -a /opt
每一个文件单独列出来
-b
[root@localhost opt]# du -s /opt
当前文件夹的总大小
📍注意点:-a和-s不可以同时使用
-h
[root@localhost opt]# du -h /opt
以人性化的方式显示
-d
[root@localhost ~]# du -d 3
显示到第几层文件或目录
–exclude
不计入统计
[root@localhost opt]# du --exclude=*.txt
统计时排除以txt结尾的
du和ls区别
- ls:看到的是真实大小
- du:统计的是当前文件占磁盘的大小,不足4k按4k算
mkdir
格式:mkdir [选项] 目录位置及名称
[root@localhost opt]# mkdir a b c d
在opt文件夹下及创建了a b c d 四个文件夹
-p
递归创建
[root@localhost opt]# mkdir -p a/bb/cc
在a文件夹下面建立一个bb文件夹,在bb文件夹下面建立一个cc
-v
显示建目录的过程
[root@localhost opt]# mkdir -v bbb
会告诉你已经创建了一个叫bbb目录
touch
-
当文件不存在时,直接新建该文件,并且该文件是空文件
-
当文件已存在,会刷新该文件的时间戳
[root@localhost opt]# touch abc abcd
ln(创建文件链接)
有两种方式:
- 软连接:类似于windows里快捷方式,软连接,符号连接,会指向原来的文件ln(link)
- 硬连接 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问
📍注意点:
- 加-s是软连接 符号连接
- 不加-s是硬连接
- 只能使用绝对路径
软连接
格式:ln -s 源文件路径 目标文件路径
[root@localhost mnt]# ln -s /opt/aaa /mnt/ccc
建立一个opt目录下的aaa目录软链接到mnt目录,并取名为ccc(也可以不取名,会保留原名aaa)
硬链接
格式:ln 源文件路径 目标文件路径
[root@localhost mnt]# ln /opt/11 /mnt/111
建立一个opt目录下的11目录软链接到mnt目录,并取名为111(也可以不取名,会保留原名11)
区别
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件 | ||
类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
cp(copy)
复制文件或目录
格式:cp (需要复制的文件或目录)(复制的地方,可以改名,可以不改名)
[root@localhost mnt]# cp /opt/11 /mnt/123
将opt目录下的11复制到mnt目录下并取名123(也可以不取名,会保留原名11)
-i
覆盖目标同名文件或目录时提醒用户确认
[root@localhost mnt]# cp -i /opt/11 /mnt/123
复制时有同名的文件会提醒是否覆盖
-f
覆盖目标同名文件或目录时不进行提醒,直接强制复制
[root@localhost mnt]# cp -f /opt/11 /mnt/123
第一次我们输入指令时系统提示了是否覆盖,是因为系统把cp -i设置了别名cp,默认都是需要提醒的,系统执行命令时是先执行别名命令,所以会有提示,这个时候我们用\反斜杠这个符号暂时使用一下原本的命令,就会发现覆盖没有提醒了
-p
复制时保持源文件的权限、属主及时间标记等属性不变
[root@localhost opt]# cp -p /home/lilili/kkk.txt /opt/kkk.txt
可以看到kkk这个文件在lilili这个用户的家目录下,拥有者和拥有组都是lilili,我们使用了-P之后就会保留kkk原文件的拥有者和拥有组
-a
完整保留所有的信息包括连接文件(要用绝对路径)
[root@localhost mnt]# cp -a /mnt/aaa1 ./aaa2
将连接文件复制到当前文件夹,完整保留了连接文件的属性
-r
复制目录时必须使用此选项,表示递归复制所有文件及子目录
[root@localhost mnt]# cp -r /opt/aa ./aa1
有-r才能复制成功
rm
删除文件
🎈格式:rm [选项] 要删除的文件或目录
-
-f、强制
-
-i、交互
-
-r 递归(删除目录需要)
[root@localhost opt]# rm -rf /opt/aa
删除了opt下的aa文件
mv
移动 改名
如果路径不一样就是移动, 如果路径相同就是改名(只能一个个改)
🎈格式:mv [选项] … 源文件或目录… 目标文件或目录 单个文件
[root@localhost opt]# mv /opt/22 /mnt/221
查找文件
which
用来找命令 搜索的范围由PATH决定:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 在这5个文件夹中寻找
[root@localhost opt]# which ls
找ls这个命令的路径在哪儿
locate
通过数据库找文件,速度快,找常年不动的文件
[root@localhost opt]# locate /etc/*.conf
查找etc下以.conf结尾的文件
find
命令的特点:
- 精确查找
- 实时查找 遍历(慢)
- 支持查找条件较
格式:find [选项]… [查找路径] [查找条件] [处理动作]
-
查找路径:指定具体目标路径;默认为当前目录
-
查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
-
处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
-
查找条件
关键字 说明 -name 根据目标文件的名称进行查找,允许使用“*”及“?”通配符必须加上” “ -iname 不区分名字的大小写 -size 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB(在没有+ -的情况下写的越小越好) -user 根据文件是否属于目标用户进行查找 -type 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 -a 和,可以省略 -o 或 -inum 根据文件inode号查找 -perm 按文件权限查找 -maxdepth level 将你的文件以分级的形式查找 -mindepth level 将你的文件以分级的形式查找 -mtime 时间 -empty 空目录 -nouser 无主用户,用户被删除 -
处理动作
选项 作用 -print 默认,不需要输入 -ls 长格式 -delete 删除 -ok 执行一次询问一次 -exec 直接处理,不询问
find 命令的结合使用
[root@localhost etc]# find /data/ -mtime 30 -type f -name "*.log" -exec rm -rf {} \;
找到data目录下30天左右的以.log结尾的普通文件并删除
总结
linux命令可以结合使用,单个命令也可以配合不同的选项,要善用通配符,通配符需要加上英文模式下的双引号,linux都需要英文模式下输命令,以免影响操作
今天的文章linux命令精讲分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/19660.html