linux基础知识命令整理
- 基础知识整理
- 1.什么是linux?
- 2.Linux系统的学习的方法
- 3.熟悉linux系统的目录和作用
- 4.绝对路径和相对路径
- 5.文件的创建查看复制删除
- 6.vim 编辑器
- 7.Linux中常用的命令
- 8.tar打包
- 9.linux的计划任务
- 10.认识/etc/passwd和/etc/shadow
- 11.创建用户
- 12.修改主机名
- 13.第一个小练习
- 14.alias 别名
- 15.ls命令
- 16.linux内核
- 17.shell解释器
- 18.安装命令
- 19.Linux防火墙
- 20.一个操作系统里有哪些内容?
- 21.第二个小作业
- 22.链接文件
- 23.cat
- 24.分页显示
- 25.第三个小作业
- 26.head命令
- 27.tail命令
- 28.重定向
- 29.echo命令
- 30.cp命令
- 31.file命令
- 32.mv命令
- 33.rm命令
- 34.du命令
- 35.查找类命令
- 36.通配符
- 37.chmod
- 38.用户和组
- 39.第四个小作业
- 40.w命令
- 41.禁用selinux
- 42.给你100台服务
- 43.diff命令
- 44.mkpasswd—》生成满足密码复杂性的密码
- 45.小作业
基础知识整理
1.什么是linux?
Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
说的简单点,它就是一个操作系统
Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,
Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。
它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE
Linux的特点:
Linux中一切都是文件.Linux中不根据文件的后缀区分文件的类型
2.Linux系统的学习的方法
- 做一个属于自己的笔记.
- 学习方法:实验多敲几遍.
3.熟悉linux系统的目录和作用
Linux系统的目录结构:
/根分区 所有的文件和目录的起始点,只有超级管理员root用户拥有写的权限
/etc 配置文件,包含所有应用程序 的配置文件和特定的脚本文件
/etc/passwd 存放着系统上所有用户的账户信息,包括用户名、UID、密码哈希值、用户组、家目录、默认shell等等
/etc/init.d/ 存放的都是脚本文件
/boot 存放的是Linux系统启动时候需要加载的文件,grub kernel
/var 包含的是经常可变的文件 ,/var/log 系统的日志文件
/root 存放的是管理员所有的数据,root用户的家目录
/tmp 存放的是不重要的数据,临时文件的存放位置,不存放重要的信息
/usr 是unix software source 的缩写,应用程序的源代码,
/usr/src 源代码目录
/bin 存放的是命令,二进制可执行程序
/sbin 存放的是管理员使用的命令,用来进行系统的维护,
/mnt 系统中默认的光驱挂载点
/dev 存放的是设备文件, mount/dev/sr0 /mnt/ 挂载光驱 mount /dev/cdrom /mnt/ 挂载光驱
/home 存放的是普通用户的所有数据
/proc 存放的是系统信息的文件 cat/proc/meminfo |grep "Mem" 查看内存信息 cat /proc/cpuinfo 查看cpu信息
/lib 存放的是系统的库文件 xx.a是静态库 xx.so 是动态库
静态库在编译时会被加载到二进制文件中 动态库在运行时会被加载到进程的内存空间中
Linux的库文件类似于windows中的.dll文件,这些库文件就是为了让程序能够正常编译运行
本地管理员会把目录安装在/usr/local 目录下并连接在/sur/local/bin 下的主执行程序
系统的所有设置都存放在/etc目录下
/ 根目录
/etc 存放各种各样的程序的配置文件–》配置文件是给程序传递参数–》配方
/usr 存放安装的各种应用程序 相当于c:\program files -->unix system resource unix
/bin 存放二进制文件,绝大多数常用的linux命令都是使用c语言编写 binary
/sbin 存放需要较高权限的用户去执行的命令,root用户具有非常高的权限,一般都是root用户去执行的命令 --》御用
super user binary
/bin /sbin 都是快捷方式(链接文件)
/bin —>/usr/bin
/sbin -->/usr/sbin
4.绝对路径和相对路径
路径:
找到需用的文件需要知道这个文件的位置,表示文件位置的方式就是路径
==绝对路径:==在Linux中绝对路径是从/根开始的
==相对路径:==以.或者… 开始的 一个点表示当前目录 两个点表示上级目录
pwd 查看当前的路径
eg
: cd /etc/sysconfig/network-scripts/ 绝对路径
5.文件的创建查看复制删除
touch
新建一个空文件
1.创建一个目录
mkdir 新建一个空目录
2.嵌套创建目录文件
mkdir -p a/c/d
3.查看文件的内容
cat 文件名
more 文件名 不能后退,只能向前查看
less 文件名 可以前后翻页
4.查看一个文件的前几行
head -5 /etc/passwd
5.查看一个文件的后几行
tail -5 /etc/passwd
6.复制文件
cp 源文件 目标位置
复制一个目录
cp -r 源文件 目标位置
7.删除文件
rm -r 递归删除文件
rm -f 强制删除文件
6.vim 编辑器
yy 复制当前光标所在行
3yy 往下复制3行,包括当前行p粘贴
u 撤销上一步的操作
dd 删除当前光标所在行
4dd 从光标开始往下删除4行Shift + $ 移动到行尾
Shift + ^ 移动到行头a 在光标后插入
i 在光标前插入
o 在当前光标的下一行插入ESC 退出编辑模式
:末行模式
:set nu
:set number 显示行号
:set nonu
:set noumber 不显示行号
7.Linux中常用的命令
pwd:显示当前工作目录的绝对路径
打印/home 的工作路径 pwd /home
pwd -P 参数,可以获取到真实的物理路径。
ls 列出目录的内容
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来
-l :长数据串列出,包含文件的属性与权限
mkdir 创建一个新的目录
-p:创建多层目录,递归的创建目录
mkdir
: 创建目录 (touch a.txt :创建文件)
mkdir dir
: 创建名称叫做dir目录, 创建单个目录
mkdir dir1 dir2
: 创建多个目录,dir1, dir2
mkdir dir{3..10}
: 创建dir3 dir4…dir10
rmdir 删除一个空的目录
touch
创建空文件
语法:touch filename
touch myfile1//创建单个文件,文件名为myfile1
touch myfile2 myfile3//同时创建两个文件
touch myfile{1…10}//创建多个文件
d ~或者cd :回到当前用户自己的家目录)
cd - :回到上一次所在目录
cd … :回到当前目录的上一级目录)
cp 复制文件或目录
cp -r 递归的复制整个文件夹
rm 移除文件或目录
rmdir deleteEmptyFolder :删除空目录)
rm -rf deleteFile :递归删除目录中所有内容)
mv 移动文件与目录或重命名
cat 查看文件内容
tac查看文件内容,从最后一行开始显示
more 查看文件内容,一页一页的显示文件内容
less 查看文件内容
/字串 :向下搜寻『字串』的功能;n:向下查找;N:向上查找;
?字串 :向上搜寻『字串』的功能;n:向上查找;N:向下查找;
head
查看文件内容
head -n 10 文件 (功能描述:查看文件头10行内容,10可以是任意行数)
tail 查看文件内容
-------------------------
重定向命令
> 覆盖写入重定向
>> 追加写入重定向
-------------------------
echo 打印字符串到屏幕上
ln软链接
history 查看所敲命令历史
date显示当前时间
(1)date :显示当前时间)
(2)date +%Y :显示当前年份)
(3)date +%m :显示当前月份)
(4)date +%d :显示当前是哪一天)
(5)date +%Y%m%d date +%Y/%m/%d … :显示当前年月日各种格式 )
(6)date “+%Y-%m-%d %H:%M:%S” :显示年月日时分秒)
用指定的格式显示时间
date “+%Y-%m-%d %H:%M:%S”
2017-06-19 20:54:58
date -s 字符串时间 设置系统的时间
(1)date -d ‘1 days ago’ (功能描述:显示前一天日期)
(2)date -d yesterday +%Y%m%d (同上)
(3)date -d next-day +%Y%m%d (功能描述:显示明天日期)
(4)date -d ‘next monday’ (功能描述:显示下周一时间)
-------------------------
cal查看日历
-------------------------
cat
功能1: 查询文件内容,查询全部文件内容(如果文件过大, 会卡死)
cat filename// 查看文件名filename的文件内容
功能2: 可以创建文件, 并且写入内容
cat > myfile10
功能3:合并文件,合并内容
cat myfile1 myfile2 > myfile10//将myfile1 和 myfile2 中的内容合并到myfile10中, myfile10中内容被覆盖
more
: 查看文件, 可以分页查看
+n 从第几行开始
-n 定义屏幕显示多少行
more myfile//分页查看myfile文件
more +3 myfile//从第三行开始查看myfile文件
more -2 myfile//每页显示两行
more +/pattern myfile//从myfile中搜索pattern, 结果显示在第三行
less
: 查看文件, 分页上下翻滚页
head
: 查看文件, 分页显示, 每页只显示10条
head myfile// 默认每页只显示10条
head -n 5 myfile//查看myfile1,每页显示5条记录
head -c 12 myfile//查看myfile,只显示前面12字节符
tail
:查看文件, 实时监控文件
tail -f myfile// 实时监控myfile文件的变化
which
:查找命令
which 命令
which mv//将mv命令的别名和mv所在的位置都给查询出来
whereis
: 查找命令
whereis mv: 查找命令的所在位置, 帮助文档,命令源码
locate: 查找文件
locate myfile//搜索出来myfile所在目录, 需要先刷新db, 使用命令: updatedb
新创建的文件搜索不到,新创建的文件被放在Linux的文件数据库, 需要属性文件数据库才能够找到
find
: 查找文件
find -name myfile//根据文件名, 在当前的目录进行查询
find -name “myfile”//和上面一个没有区别
find /etc/ /root/ -name “[A-Z]” //查询目录etc和root下以A-Z开头的所有文件
find /etc/ /root/ -name “[A-Z]” -exec ls -l {} ;// 把查询结果交给ls命令继续执行, 显示前面查询结果详细信息.
-exec:执行,执行后面的命令,执行ls -l命令
{}: 标识查询结果在一行显示
; :命令要使用很好结束,斜杠是用来转义的.
| (管道命令)
把前面的查询结果交给后面的命令进行执行
ls -al | more -5 //查询所有,把查询的结果交给more命令去执行
grep (过滤命令)
经常和管道命令一起使用
ps -ef | grep svn//查询所有进程, 过滤查询svn
ln
: 连接命令,创建快捷方式
ln -s myfile link//给myfile创建一个快捷方式link
top
:显示当前系统中消耗资源的进程情况
top //每隔5秒显示徐偶有进程的资源占用情况
top -d 2//每隔2秒刷新
ps
: 查看进程(常用)
ps -ef//查看所有进程
ps -ef | grep redis //查看redis进程是否存在
kil
l: 杀死进程(常用)
kill -9 PID
df
: 显示磁盘使用情况
df -h//查看当前磁盘使用情况, 包括占用量单位
shutdown: 关机
shutdown 系统关机
shutdown -r 关机后立即重启
shutdown -h 关机后不重新启动
halt: 关机后关闭电源
reboot: 重新启动
-------------------------
-------------------------
cp
:copy复制
复制文件:
cp a.txt b.txt: 复制a.txt 且复制后的文件名为b.txt
cp a.txt dir: 将a.txt拷贝到dir文件夹下
cp .txt dir
cp …/.txt …/dir2:将上一级目录下的所有txt文件拷贝到上一级目录的dir2文件夹下
cp …/file* . //拷贝到上一级目录下的所有file文件到当前目录
复制目录:
cp -r dir1 dir2: 将dir1 目录复制到dir2目录中
cp -r dir/* dir1/ : 将dir中的所有文件和目录复制到dir1目录中
mv
:目录移动(剪切)
移动文件:
mv file1 file2 //如果file2不存在,将file1重命名为file2
mv file2 file1//将file2命名为file1, 如果file1中有内容, 则覆盖
mv dir/* dir1//将dir 中所有目录及文件移动到dir1目录中
移动目录:
mv dir dir1//将dir目录移动到dir1目录中
mv dir2 dir3 dir1//将dir2和dir3移动到dir1中
rm:remove 删除
删除文件:
rm a.txt //删除a.txt
rm a.txt b.txt //同时删除a.txt b.txt
rm*txt//删除所有扩展名为txt的文件
rm -rf dir1/* //强制删除dir1下所有文件和目录
删除目录:
rm -rf dir1// 删除dir1 下的所有文件和目录, f是强制删除, 不需要提示
-------------------------
8.tar打包
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
压缩:tar -zcvf XXX.tar.gz XXX
解压:tar -zxvf XXX.tar.gz -C 解压目的地
[root@server lianxi] tar -zcvf 课外作业.docx.tar.gz 课外作业.docx //压缩文件
课外作业.docx
[root@server lianxi] ls
课外作业.docx 课外作业.docx.tar.gz 上机作业.doc
[root@server lianxi] tar -zxvf 课外作业.docx.tar.gz -C /test //解压到指定文件夹
[root@server lianxi] ls /test
192.168.209.145 192.168.209.146 backup.sh create_file.sh which.sh 课外作业.docx
文件打包
tar
文件压缩的好处:
方便文件在网上的传输,节约存储空间.文件打包:方便移动
tar 文件打包
tar -cf 打包文件
tar -tvf 列出所有文件
tar -xf 解包文件tar -cvf xxx.tar /boot/ 将boot目录打包、
c create 创建
f filename 文件名称
v 显示执行过程的详细信息file 文件名 查看一个文件的类型
file a.txt一次打包两个目录
tar -cvf xx.tar /boot/ /etc/test/查看包中的内容
tar -tvf xxx.tar将包解压到指定的目录中
tar -xvf xxx.tar -C /tmp/查看一个目录的大小
du -sh /boot/
查看一个文件的大小
ll -h xxx.tartar 中的参数
-z gzip 工具压缩 压缩后缀是.gz解压缩包
tar -zxvf xxx.tar.gz -C /tmp/bzip2 压缩工具,后缀是.tar.bz2
压缩:tar cjvf xxx.tar.bz2
-j 表示使用的是bzip2压缩工具
解压:tar xjvf xxx.tar.bz2 -C /tmp/bzip2压缩的文件比 gzip压缩的文件小
zip 压缩工具:zip -r xxx.zip /etc/passwd
解压缩zip unzip xxx.zip -d /tmp/gzip 压缩工具:压缩后原文件会消失
gzip 1.txt 压缩后的文件是 1.txt.gz
gzip 解压缩:
gzip -d 1.txt.gz
9.linux的计划任务
crond系统定时任务
crontab
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务
第一个“*” 一小时当中的第几分钟 0-59
第二个“*” 一天当中的第几小时 0-23
第三个“*” 一个月当中的第几天 1-31
第四个“*” 一年当中的第几月 1-12
第五个“*” 一周当中的星期几 0-7(0和7都代表星期日)
* 代表任何时间。比如第一个“”就代表一小时中每分钟都执行一次的意思。
, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“/10 * * * * 命令”,代表每隔10分钟就执行一遍命令
10.认识/etc/passwd和/etc/shadow
这两个文件保存着用户的用户和密码等信息。打开/etc/passwd文件,可以看到下面内容。/etc/passwd由’:’分割成7个字段,每个字段的具体含义是:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。用户名字符可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。
2)存放的就是该账号的口令,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,在这里只用一个’x’代替。
3)这个数字代表用户标识号,也叫做uid。系统识别用户身份就是通过这个数字来的,0就是root,也就是说你可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。通常uid的取值范围是065535,0是超级用户(root)的标识号,1499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。
4)表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似。
5)注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger的功能时就会显示这些信息的(稍后做介绍)。
6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的,比如你建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修改/etc/passwd文件中test1那行中的该字段为/data即可。
7)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有很多种sh, csh, ksh, tcsh, bash等,而Redhat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。
/etc/shadow 文件是存储 Linux 系统用户的密码哈希值的文件。该文件的每一行表示一个用户的密码哈希值。
下面是 /etc/shadow 文件中每个字段的解释:
-
用户名:表示密码哈希值所属的用户账号。
-
密码哈希值:表示用户密码的哈希值,通常是 MD5 或 SHA-256 算法的哈希值。
-
最后修改时间:表示密码最后一次修改的时间,以自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数计算。
-
密码有效期:表示密码的有效期,以天为单位。如果为 0,则表示密码永不过期。
-
密码过期前提醒天数:表示密码过期前提前几天提醒用户修改密码。
-
密码过期后可更改天数:表示密码过期后几天内用户仍然可以修改密码。
-
密码过期后失效天数:表示密码过期后几天内账号仍然可以登录,但密码必须被修改。
-
账号失效时间:表示账号失效的时间,以自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数计算。如果为 0,则表示账号永不失效。
-
账号锁定时间:表示账号被锁定的时间,以自 1970 年 1 月 1 日 00:00:00 UTC 起的秒数计算。如果为 0,则表示账号没有被锁定。
-
账号被锁定的原因:表示账号被锁定的原因,通常是由于密码输入错误次数过多导致账号被锁定。
nginx:!!:19499:::::: 这是啥意思
这是一个密码文件中的一行记录,其中包含了一个用户名 “nginx” 和一个加密后的密码。其中 “!!” 表示该用户没有设置密码,而 “19499” 是该用户的 UID(用户标识号码),后面的几个 “:” 表示该用户没有设置其他信息(如组ID、用户信息等)。
11.创建用户
创建用户:
useradd XXX —>XXX是用户名
修改密码:
echo “new_password” | passwd XXX --stdin
其中,new_password是新密码,XXX是要修改密码的用户名。
批量新建新用户,并且赋予密码
#!/bin/bash
# 定义新用户的用户名前缀和密码
prefix="user"
password="123456"
# 循环新建用户
for i in {1..10}
do
username="$prefix$i"
useradd $username
echo $password | passwd --stdin $username
echo "User $username created and password set."
done
在执行脚本时,请确保已经以 root 用户身份登录,并且将脚本保存为可执行文件。执行脚本后,将会创建 10 个新用户,用户名分别为 user1 到 user10,密码均为 123456。如果需要创建更多用户,可以修改 prefix 和循环次数。
12.修改主机名
执行命令hostnamectl set-hostname <new_hostname>,将<new_hostname>替换为你想要设置的新主机名。
13.第一个小练习
1.修改主机名为Halou-Gh
[root@server#~]$ hostnamectl set-hostname Halou-Gh
[root@server#~]$ su
[root@halou-gh#~]$
[root@halou-gh#~]$ echo "PS1='[\h\W]\$ '" >> ~/.bashrc //修改前缀
[root@halou-gh#~]$ source ~/.bashrc //刷新一下
[halou-gh~]$
2.新建用户gaofei 设置密码123456
[halou-gh~]$ useradd gaofei
[halou-gh~]$ echo "123456"|passwd gaofei --stdin
更改用户 gaofei 的密码 。
passwd:所有的身份验证令牌已经成功更新。
3.切换用户到gaofei,登录linux系统
[halou-gh~]$ su - gaofei
4.查看当前所在的文件夹的路径
[gaofei@halou-gh ~]$ pwd
/home/gaofei
5.输出PS1变量的值
[gaofei@halou-gh ~]$ echo $PS1
[\u@\h \W]\$
[gaofei@halou-gh ~]$
6.定义一个变量bigcity 赋值为beijing
[halou-gh~]$ bigcity=beijing
7.新建文件夹调用bigcity的值
[halou-gh~]$ mkdir /$bigcity
[halou-gh~]$ cd /beijing/
[halou-ghbeijing]$
8.修改PS1变量的值 为'[\u@\h#\W]\$'
[root@server ~] echo $PS1
[\u@\h \W]\$
[u@h#W]PS1=[root@server#~] echo "PS1='[\u@\h#\W]\$ '" >> ~/.bashrc //修改PS1变量的值,追加到 ./bashrc文件中
[u@h#W]PS1=[root@server#~] source ~/.bashrc //刷新一下
9.退出gaofei用户
[gaofei@halou-gh ~]$ exit
登出
[halou-gh~]$
1.使用绝对路径新建文件夹/changsha
[halou-gh~]$ mkdir /changsha
2.进入/changsha,然后新建 furong yuhua kaifu 3个文件夹
[halou-gh~]$ cd /changsha/
[halou-ghchangsha]$ mkdir furong yuhua kaifu
[halou-ghchangsha]$ ls
furong kaifu yuhua
3.使用绝对路径进入furong文件夹,然后使用相对路径进入kaifu文件夹
[halou-ghchangsha]$ cd /changsha/furong/
[halou-ghfurong]$ cd ../kaifu/
4.在kaifu文件夹下面新建aa/bb/cc/dd这样结构的文件夹
提示使用mkdir -p
[halou_gh-kaifu]$ mkdir -p aa/bb/cc/dd
5.进入yuhua文件夹,使用vim编辑器新建gaotie.txt文件,文件里的内容如下:
changsha 高铁南站
湖南农业大学
linux vim
6.退出保存gaotie.txt
7.查看gaotie.txt文件里的内容
[halou_gh-kaifu]$ cd ../yuhua/
[halou_gh-yuhua]$ vim gaotie.txt
[halou_gh-yuhua]$ cat gaotie.txt
#!/bin/bash
changsha 高铁南站
湖南农业大学
linux vim
[halou_gh-yuhua]$
14.alias 别名
在Linux系统中,alias可以用来给命令设置别名,方便我们在命令行中快速输入一些常用的命令。以下是一些在CentOS 7中使用alias命令设置别名的例子:
- 给ls命令设置别名,使其在执行时默认带上-l选项来显示详细信息:
plaintextCopy code
alias ls='ls -l'
- 给cd命令设置别名,使其在执行时默认带上-l选项来显示目录内容,并且使用颜色来区分不同的文件类型:
plaintextCopy code
alias cd='ls --color=auto -l'
- 给grep命令设置别名,使其在执行时默认带上-i选项来忽略大小写:
plaintextCopy code
alias grep='grep -i'
- 给rm命令设置别名,使其在执行时默认带上-f选项来强制删除文件,避免每次都提示确认:
plaintextCopy code
alias rm='rm -f'
- 给vim命令设置别名,使其在执行时默认带上-syntax选项来高亮显示代码:
plaintextCopy code
alias vim='vim -syntax'
可以在用户的.bashrc文件中添加这些alias命令,这样每次打开终端时就会自动加载这些别名设置。执行以下命令可以编辑用户的.bashrc文件:
plaintextCopy code
vim ~/.bashrc
在文件的末尾添加上述别名设置,然后保存并退出编辑器,执行以下命令使修改生效:
plaintextCopy code
source ~/.bashrc
现在你就可以在命令行中使用这些别名来代替常用的命令了。
~代表用户根目录
怎么永久定义别名mm是mkdir -p的别名,具体步骤,并且告诉我怎么取消,这个永久定义
- 打开终端,输入以下命令:
echo "alias mm='mkdir -p'" >> ~/.bashrc
这将在用户的主目录下的.bashrc文件中添加一个别名,使得mm成为mkdir -p的别名。
- 输入以下命令使别名立即生效:
source ~/.bashrc
- 现在,您可以在终端中使用mm命令来创建目录并自动创建必要的父目录。例如:
mm /path/to/new/directory
这将创建一个名为“directory”的目录,并自动创建名为“new”和“to”的父目录。
取消别名的方法是在.bashrc文件中删除mm的定义,或者在终端中输入以下命令:
unalias mm
或者直接去 ~/.bashrc 中去删
这将取消mm的定义。
永久定义别名需要将别名定义添加到用户的.bashrc文件中。这样,别名将在每次打开终端时自动加载。
15.ls命令
ls
-l long-format 详细信息
-a all
-A all ,不显示.和…
-h
-h, --human-readable 选项也有依赖关系
with -l, print sizes in human readable format (e.g., 1K 234M 2G)
-d选项表示只显示目录本身,不显示目录内的文件。
16.linux内核
linux内核 kernel: linux系统内部最核心的软件–》
https://www.kernel.org/
内核是开源免费的,大家都可以去使用,研究。使用c语音编写的
一台电脑里有哪些硬件?
cpu
键盘/鼠标/显示器
内存
磁盘
网卡,显卡,声卡
服务器:
cpu,内存,磁盘,网卡
内核的作用: 对硬件进行管理的
1.对cpu进行调度管理
2.对内存进行分配管理
3.对磁盘里的文件系统进行管理
4.对进程进行管理
5.对其他的硬件进行管理
uname -r
17.shell解释器
bash 是shell解释器,实现人和机器交互
解释器: 是一个程序软件,用于对某些代码或者命令进行解释,帮我们的人去解释。
人 —》命令—》解释器 ----》linux 内核–》电脑硬件去执行(机器)
shell 是解释器的大类名称
平时输入的linux命令 都称呼为shell命令
bash 是shell解释器大类里最优秀的解释器
手机: 通信工具
品牌: 小米,华为 ,OPPO,vivo ,apple,一加,菠萝等
shell编程: linux命令的使用,里面会有if,for ,while等
18.安装命令
RPM
rpm -qa (功能描述:查询所安装的所有rpm软件包)
rpm -qa | grep rpm软件包 查询指定的软件包
rpm -e RPM软件包 卸载一个软件包安装一个软件包
rpm -ivh RPM包全名
-i=install,安装
-v=verbose,显示详细信息
-h=hash,进度条
–nodeps,不检测依赖进度
简单来说
rpm -ql bash
rpm -qf /usr/sbin/useradd
rpm 是linux里的软件管理的命令–》redhat和centos、oracle linux等
yum 是linux里的软件管理的命令
yum 比rpm高级, yum底层也是使用rpm命令去进行软件管理的
yum
yum install tree -y //正常安装
yum provides nc
可以查询没有安装的nc命令是通过那个软件安装过来的,
在你的机器里没有安装的
gcc
—>linux里的编译器
1.先用vim写一个 .c 文件
- 输入: gcc source.c -o output
这个命令将source.c文件编译成可执行文件output。如果编译成功,会生成一个名为output的可执行文件。
- 然后直接 ./那个可执行文件
[halou_gh-lianxi]$ vim good.c
[halou_gh-lianxi]$ cat good.c
#include<stdio.h>
int main()
{
printf("hello world, good code\n");
printf("欢迎学习linux\n");
return 0;
}
[halou_gh-lianxi]$ gcc good.c -o good
[halou_gh-lianxi]$ ls
good good.c 课外作业.docx 课外作业.docx.tar.gz 上机作业.doc
[halou_gh-lianxi]$ ./good
hello world, good code
欢迎学习linux
19.Linux防火墙
查看防火墙状态 service iptables status
临时关闭防火墙 service iptables stop
关闭防火墙开机启动 chkconfig iptables off
开启防火墙开机启动 chkconfig iptables on
查看防火墙开机启动状态 chkconfig iptables --list
-------------------------
Linux系统有7个运行级别(runlevel)
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS)
运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
-------------------------
sync (功能描述:将数据由内存同步到硬盘中)
-------------------------
shutdown [选项] 时间
shutdown -h 关机 halt : 关闭系统
shutdown -r 重启 reboot:就是重启
设置系统在10分钟后关机,并将此次关机提示显示在屏幕上
shutdown -h 10 ‘This server will shutdown after 10 mins’
20.一个操作系统里有哪些内容?
最里边是硬件
然后是内核—-》管理硬件的
shell:shell解释器,最大的解释器是bash
系统调用:system call
库函数
应用
21.第二个小作业
1.查看linux内核的版本
[halou_gh-lianxi]$ uname -r
3.10.0-1160.el7.x86_64
[halou_gh-lianxi]$
2.查看linux系统的版本
[halou_gh-lianxi]$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
3.查询passwd命令存放的路径
[halou_gh-lianxi]$ which passwd
/usr/bin/passwd
[halou_gh-lianxi]$
4.查看PATH变量
[halou_gh-lianxi]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[halou_gh-lianxi]$
5.查看本机里的所有的环境变量
直接输入:printenv
或者输入:env
6.查询passwd命令是通过那个软件安装过来的
[halou_gh-lianxi]$ rpm -qf `which passwd`
passwd-0.79-6.el7.x86_64
7.查询iproute软件安装到哪里去了
[halou_gh-lianxi]$ rpm -ql iproute
8.使用ls命令查看/etc目录下所有的文件夹,包括隐藏文件,但是不显示.和..,能显示文件夹或者文件的详细信息,文件大小以k,M,G格式显示
[halou_gh-lianxi]$ ls -lAh /etc
9.查看/var目录文件夹本身的详细信息,不显示这个文件夹里面的内容
[halou_gh-lianxi]$ ls -ld /var
drwxr-xr-x. 19 root root 267 3月 7 17:59 /var
[halou_gh-lianxi]$
10.临时定义别名mm是mkdir -p的别名
[halou_gh-lianxi]$ alias mm="mkdir -p"
11.使用mm 新建目录/zhongguo/hunan
[halou_gh-lianxi]$ mm /zhongguo/hunan
12.永久定义别名mm是mkdir -p的别名,并且验证是否永久有效
[halou_gh-lianxi]$ echo "alias mm='mkdir -p'" >> ~/.bashrc
[halou_gh-lianxi]$ source ~/.bashrc
新开一个窗口
[halou_gh-lianxi]$ mm /lianxi/gh
[halou_gh-lianxi]$ ll /lianxi
总用量 220
drwxr-xr-x. 2 root root 6 6月 23 18:17 gh
-rwxr-xr-x. 1 root root 8360 6月 23 17:37 good
-rw-r--r--. 1 root root 111 6月 23 17:17 good.c
-rw-r--r--. 1 root root 16057 6月 23 11:20 课外作业.docx
-rw-r--r--. 1 root root 13302 6月 23 11:22 课外作业.docx.tar.gz
-rw-r--r--. 1 root root 176128 6月 23 11:20 上机作业.doc
[halou_gh-lianxi]$
13.临时定义sc是ip add的别名
[halou_gh-gh]# alias sc='ip add'
14.使用sc查看ip地址
[halou_gh-gh]# sc
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:95:9d:be brd ff:ff:ff:ff:ff:ff
inet 192.168.209.144/24 brd 192.168.209.255 scope global noprefixroute dynamic ens33
valid_lft 1776sec preferred_lft 1776sec
inet6 fe80::75c4:2562:faf9:eca4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
15.取消sc别名
[halou_gh-gh]# unalias sc
[halou_gh-gh]# sc
bash: sc: 未找到命令
16.在/zhongguo/hunan目录下,使用vim编辑器编写一个good.c的文件,内容如下
#include<stdio.h>
int main()
{
printf("hello,world,good code\n");
printf("欢迎学习linux\n");
return 0;
}
将good.c编译成good二进制程序,然后执行
[halou_gh-lianxi]$ vim good.c
[halou_gh-lianxi]$ cat good.c
#include<stdio.h>
int main()
{
printf("hello world, good code\n");
printf("欢迎学习linux\n");
return 0;
}
[halou_gh-lianxi]$ gcc good.c -o good
[halou_gh-lianxi]$ ls
good good.c 课外作业.docx 课外作业.docx.tar.gz 上机作业.doc
[halou_gh-lianxi]$ ./good
hello world, good code
欢迎学习linux
22.链接文件
ln 创建链接文件 link 可以给文件和目录创建
命令格式
ln [选项] 源文件 目标文件
- 命令参数
- -s:创建符号链接
- -f:强制创建链接,即覆盖已有的同名文件
- -i:交互式创建链接,即在创建链接前提示用户是否覆盖已有的同名文件
链接文件不能删除源文件,不然会导致链接文件失效。
链接文件有什么好处?
可以快捷的操作—》方便操作,方便查找
[halou_gh-lianxi]# mkdir beijing
[halou_gh-lianxi]# ls
beijing gh good good.c 课外作业.docx 课外作业.docx.tar.gz 上机作业.doc
[halou_gh-lianxi]# ln -s beijing jing
[halou_gh-lianxi]# ls
beijing gh good good.c jing 课外作业.docx 课外作业.docx.tar.gz 上机作业.doc
'修改jing里边的内容,beijing也会发生改变'
23.cat
cat 读取文件里的内容,全部显示出来
-n nubmer
-n, --number
number all output lines
cat -n passwd
cat passwd -n
nl 作用就是输出文件里的内容,并且进行编号
nl = cat -n
[root@scmaster sc2]# cat -n passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nolog
[root@scmaster sc2]# nl passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
24.分页显示
文件里的内容比较多,我们可以慢慢看,一页一页的查看
more
回车 entry 就是一行一行往下看–》下一行
空格 一页一页往下看–》下一页
q 退出
b 上一页 back
more显示完所有的内容,自动退出
[root@scmaster sc2]# more /etc/ssh/sshd_config
root@scmaster sc2]# ps aux 查看linux系统里的进程的信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 125780 4228 ? Ss 02:15 0:07 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 02:15 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 02:15 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 02:15 0:32 [ksoftirqd/0]
[root@scmaster sc2]# ps -aux|more
| 管道符号: 作用是将前面一个命令的输出送给后面一个命令作为输入 --》中间人,借花献佛
本质上实现了2个进程之间的通信
管道(pipe)是进程和进程之间通信的一种方式
less
回车 entry 就是一行一行往下看--》下一行
空格 一页一页往下看--》下一页
q 退出
b 上一页 back
less显示完所有的内容,不自动退出,按q退出
cp复制 copy
[root@scmaster /]# cd /sc2
[root@scmaster sc2]# cp /etc/passwd .
原文件 当前目录
25.第三个小作业
1.新建文件夹/sc3
[halou_gh-~]# mkdir /sc3
2.进入/sc3 新建文件夹hunan hubei
[halou_gh-~]# cd /sc3/
[halou_gh-sc3]# mkdir hunan hubei
3.创建链接文件xiang指向hunan e指向hubei
[halou_gh-sc3]# ln -s hunan xiang
[halou_gh-sc3]# ln -s hubei e
4.进入xiang链接文件夹,显示真正的路径
[halou_gh-sc3]# cd xiang
[halou_gh-xiang]# pwd -P
/sc3/hunan
5.新建用户gao ,进入gao用户的家目录
[halou_gh-xiang]# useradd gao
[halou_gh-xiang]# cd ~gao
[halou_gh-gao]# pwd
/home/gao
6.返回到上一级目录,然后进入/boot,再返回到上一次所在的目录,最后返回到自己的家目录
[halou_gh-gao]# cd ..
[halou_gh-home]# cd /boot
[halou_gh-boot]# cd -
/home
[halou_gh-home]#
7.在hunan目录下,新建sanchuang.txt的文件,创建sc.txt指向sanchuang.txt的链接文件
[halou_gh-hunan]# touch sanchuang.txt
[halou_gh-hunan]# ls
sanchuang.txt
[halou_gh-hunan]# ln -s sanchuang.txt sc.txt
[halou_gh-hunan]# ls
sanchuang.txt sc.txt
8.编辑sc.txt文件,添加下面的内容
linux changsha teacher feng
nongda
退出并且保存
[halou_gh-hunan]# vim sc.txt
[halou_gh-hunan]# cat sc.txt
linux changsha teacher feng
nongda
[halou_gh-hunan]#
9.删除sanchuang.txt文件,观察sc.txt是否可以访问
[halou_gh-hunan]# rm -rf sanchuang.txt
[halou_gh-hunan]# cat sc.txt
cat: sc.txt: 没有那个文件或目录
10.使用cat命令查看sc.txt是否可以访问?
"不可以"
11.复制/etc/hosts文件到当前目录下
[halou_gh-hunan]# cp /etc/hosts .
[halou_gh-hunan]# ls
hosts sc.txt
12.输入当前目录下的hosts文件的内容,并且显示行号
[halou_gh-hunan]# cat -n hosts
1 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
2 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[halou_gh-hunan]#
13.使用less查看/etc/ssh/sshd_config文件
[halou_gh-hunan]# less /etc/ssh/sshd_config
14.使用ip add查看ip地址,并且分页显示
[halou_gh-hunan]# ip add|more
26.head命令
作用:从文件开头查看文件内容,默认前10行
参数:-n 显示前n行内容;-c nK 按容量字节大小显示nKB内容。
示例:
[root@centos7 home]# head /etc/passwd #默认查看前10行
[root@centos7 home]# head -5 /etc/passwd #查看前5行
[root@centos7 home]# head -c 1K /etc/passwd #查看前1k大小的内容
提示:该命令常与排序sort命令一起使用,用于筛选最高最小排序值。
27.tail命令
作用:查看文件尾部内容
参数:-n 显示末尾n行;-f 动态输出文件内容;-c nK 显示文件最后nKB内容。
示例:
[root@centos7 home]# tail /var/log/messages #查看文件最后10行
[root@centos7 home]# tail -200 /var/log/messages #查看文件最后200行内容
[root@centos7 home]# tail -f /var/log/messages #动态输出查看文件内容
[root@centos7 home]# tail -100f /var/log/messages #查看从最后100行持续输出的内容
[root@centos7 home]# tail -c 1K /var/log/messages #查看文件末尾1KB大小的内容
'tail -2 看最后两行'
'tail +2 从第二行开始显示到末尾'
提示:使用-f 动态输出后,可使用Ctrl+c组合键退出查看。
28.重定向
重定向: 将本来应该在屏幕上的输出,重新定义输出的方向,输出到文件里,改变了内容的输出方向
作用: 可以将我们需要保存的内容,写到一个文件里追加输出重定向: 作用将内容输出追加到文件的末尾,不覆盖原来文件的内容,如果文件不存在会自动新建
将内容输出到文件里,但是会覆盖原来文件里的内容,如果文件不存在会自动新建
29.echo命令
作用:输出指定内容
示例:
[root@centos7 home]# echo $LANG #输出查看系统参数LANG值
[root@centos7 home]# echo “I love linux” #直接输出字符串
[root@centos7 home]# echo “这是教程” > 1.txt #将文本输出到文件,无文件会默认创建新文件
[root@centos7 home]# echo “这是新教程” >> 1.txt #追加写入文本到文件末尾
[root@centos7 home]# echo “” > /var/log/nginx.log #清空nginx日志文件
提示:echo使用 > 时,具有覆盖文件内容的功能,务必确认文件可否清空或覆盖。
30.cp命令
作用:复制文件目录
参数:-r 递归复制目录;-a 复制内容保持与源文件目录完全一致,包含链接及属性。
示例:
[root@centos7 home]# cp /home/oppo.txt /tmp #复制文件到tmp目录
[root@centos7 home]# cp /home/oppo.txt /tmp/vivo.txt #复制文件到tmp目录,并修改文件名
[root@centos7 home]# cp -r /home/test /tmp/ #将test目录复制到tmp目录下
[root@centos7 home]# cp -a /home/super/linux /tmp/ #将linux目录完整复制到tmp目录下
提示:cp命令常用于备份文件,复制过程中注意命令的反馈提示。
31.file命令
作用:使用file命令可以方便地查看文件的类型
使用方法:
在终端中输入file命令,后跟要检测类型的文件名,例如:
file test.txt
输出结果:
test.txt: ASCII text
表示该文件是ASCII文本文件。
32.mv命令
作用:移动、重命名文件目录
示例:
[root@centos7 home]# mv mayi.txt /tmp/ #移动文件到tmp目录
[root@centos7 home]# mv o.txt /tmp/u.txt #移动文件到tmp目录,并改名
[root@centos7 home]# mv super /tmp/ #移动目录到tmp下
提示:移动文件目录时,必须确认文件是否被运行中的应用使用。
33.rm命令
作用:删除文件目录
参数:-r 删除目录;-f 强制删除,无提示信息。
示例:
[root@centos7 home]# rm 1.conf #删除文件
[root@centos7 home]# rm -f oppo.txt #直接删除文件,无提示
[root@centos7 home]# rm -r /home/huiwei #删除目录
[root@centos7 home]# rm -rf /home/test #直接删除目录,无提示
[root@centos7 home]# rm -rf /home/test/* #保留test目录并删除该目录下所有内容
提示:使用删除命令时,在未确认删除目标详情时,不要使用-f参数,该参数需谨慎使用。
34.du命令
Linux中的du命令用于显示文件或目录的磁盘使用情况。
-h
: 以人类可读的形式展现。
-s
: 以总大小的方式显示目录或文件的大小。
- 显示当前目录下所有文件和目录的磁盘使用情况:
du
- 显示指定目录的磁盘使用情况:
du /path/to/directory
- 显示指定目录的磁盘使用情况,并以人类可读的格式显示:
du -h /path/to/directory
- 显示指定目录的磁盘使用情况,并以MB为单位显示:
du -m /path/to/directory
- 显示指定目录下所有文件和目录的磁盘使用情况,并按照磁盘空间大小排序:
du -sh * | sort -h
- 显示指定目录下所有文件和目录的磁盘使用情况,并只显示前n个最大的文件或目录:
du -sh * | sort -hr | head -n n
其中,n为需要显示的最大文件或目录的数量。
35.查找类命令
which
作用:which命令用于在环境变量$PATH指定的路径中搜索某个系统命令的位置,并且返回第一个搜索结果。
用法:which [选项] [命令名]
示例:
- 查找命令ls的路径:which ls
输出:/bin/ls - 查找命令vim的路径:which vim
输出:/usr/bin/vim - 查找命令python的路径:which python
输出:/usr/bin/python - 查找命令java的路径:which java
输出:/usr/bin/java
whereis
作用:whereis命令用于查找二进制文件、源代码文件和man手册页文件的位置。
参数:
- -b:只查找二进制文件。
- -m:只查找man手册页文件。
- -s:只查找源代码文件。
用法:whereis [选项] 文件名
示例:
- 查找ls命令的位置:whereis ls
- 只查找ls命令的二进制文件:whereis -b ls
- 只查找ls命令的man手册页文件:whereis -m ls
- 只查找ls命令的源代码文件:whereis -s ls
find
作用:查找文件目录
参数:``-name 按名称查找;
-user 按用户查找;
-group 按组查找;
-empty 查找空目录空文件;
-perm 按权限查找;
-mtime 按修改时间查找;
-size 按容量大小查找;
-exec 对找到的内容执行命令;
-type` 按类型查找,f-文件 d-目录 b c-设备 l-链接;-o 或者条件;-a 并且条件。
示例:
[root@centos7 ~]# find -name test.txt #查找名称为test.py的文件
[root@centos7 ~]# find -iname tesT.txt #查找test.py文件,不区分大小写
[root@centos7 ~]# find / -user game #查找用户名为game的文件或目录
[root@centos7 ~]# find ./ -group game #查找组名为game的文件或目录
[root@centos7 ~]# find ./ empty #查找空的目录或文件
[root@centos7 ~]# find ./ -perm 644 #查找当前目录下权限为644的文件
[root@centos7 ~]# find /home -mtime -3 #查找home下所有3天内修改过的文件或目录
[root@centos7 ~]# find /home -mtime +5 #查找home下所有5天前被修改过的文件或目录
[root@centos7 ~]# find /home -mtime 6 #查找6天前当天修改的文件或目录
[root@centos7 ~]# find /data -size +20M #查找data目录下大于20M的文件或目录
[root@centos7 ~]# find /home -size +2M -exec ls -l {} ; #列出home下大于2M的文件或目录
[root@centos7 ~]# find /home -size +3M -a -type f -exec rm -rf {} ; #删除home下大于3M的文件
[root@centos7 ~]# find /home -type f -name “*.log” #查找日志文件
[root@centos7 ~]# find /home -amin n #最后n分钟
[root@centos7 ~]# find /home -atime n #最后n天
[root@centos7 ~]# find /home -cmin n #最后n分钟改变状态
[root@centos7 ~]# find /home -ctime n #最后n天改变状态
[root@centos7 ~]# find -name *.txt |xargs -i cp {} /tmp/ #把TXT文件复制到/tmp/目录下
[root@centos7 ~]# find -name *.txt -exec cp ‘{}’ /tmp/ ; #把TXT文件复制到/tmp/目录下
提示:find命令功能强大应用广泛,常用于查找并执行后续命令,注意exec和xargs的用法。
locate
作用:locate命令用于快速查找文件系统中指定名称的文件。
参数:
- -i:忽略大小写。
- -l:限制输出结果的数量。
- -r:使用正则表达式进行匹配。
- -c:只显示匹配结果的数量。
- -S:限制搜索结果的大小。
用法:
locate [选项] 文件名
示例:
- 查找文件名包含"test"的文件:
locate test
- 查找文件名以"test"开头的文件:
locate ^test
- 查找文件名以"test"结尾的文件:
locate test$
- 查找文件名包含"test"且忽略大小写:
locate -i test
- 查找文件名包含"test",并限制输出结果数量为10:
locate -l 10 test
36.通配符
在 Linux 中,* 和 ? 是通配符,用于匹配文件名或路径名中的字符。
- 通配符匹配任意数量的任意字符,包括零个字符。例如,如果你想找到所有以 .txt 结尾的文件,可以使用以下命令:
$ ls *.txt
这将列出当前目录中所有以 .txt 结尾的文件。
? 通配符匹配任意单个字符。例如,如果你想找到所有以 a 开头、以 .txt 结尾的文件,可以使用以下命令:
$ ls a*.txt
这将列出当前目录中所有以 a 开头、以 .txt 结尾的文件。
另外,通配符可以与其他命令一起使用,例如:
$ rm *.txt
这将删除当前目录中所有以 .txt 结尾的文件。
37.chmod
这些命令必须具有可执行权限
[root@nfs-server zhouxin]# **chmod -x fengdeyong **
[root@nfs-server zhouxin]# **chmod +x fengdeyong **
权限管理
==================权限管理
-rwxrw-r–
- :类型
rwx:所属用户权限
rw-:所属组权限
r–:其他用户权限
最高位:文件类型
-: 普通文件
d: 目录
l: 快捷方式文件
高三位:u 所属用户权限(rwx)
中间三位:g 用户所属组权限(rw-)
第三位:o 其他用户权限(r–)
设置权限第一种方式举例:
---------- file1: file1 无权限 (使用chmod 0 file1 就取消所有权限)
设置权限: (x:执行权限 r:读权限 w:写权限)
chmod u+x file1----> —x------ file1
chmod u+r file1----> -r-x------ file1
chmod g+w file1----> -r-x-w---- file1
chmod g+rx file1—> -r-xrwx— file1
chmod o+rwx file1–> -r-xrwxrwx file1
chomod o=x file1—> -r-xrwx–x file1
设置权限第二种方式举例:
用421来代表rwx, 对应关系如下:
421 421 421
rwx rwx rwx
chmod后面每一位数字匹配三位: 3=2(w)+1(x) 5=4®+1(x)
chmod 421 file1-----> -r—w—x file1 (4代表用户的读权限,2代表组的写权限,1代表其他用户的执行权限)
chmod 354 file1-----> -rwxrwxw-x file1
38.用户和组
先记住:
一般格式二用的较多
因为数字简单
chown命令——>必须是root才能执行
格式: chown 属主:属组 文件
39.第四个小作业
'执行命令 mkdir 创建一个 /test 文件夹 背后发生哪些?讲的越细越好
1.进程
2.内存
3.磁盘里的文件系统
4.shell解析
参考:
执行命令
mkdir /test
时,一个新的进程被创建并分配内存空间。Shell 解释器解析命令行输入,并将其传递给操作系统。操作系统检查文件系统并在磁盘上创建新的目录项,同时进行磁盘写入操作以保证文件系统的一致性和持久性。最后,操作系统将执行结果返回给进程,进程继续执行后续指令或等待用户的下一个输入。
我认为是:执行命令mkdir /test
时,shell解释器会解释这条命令,mkdir是命令,/test是参数。然后shell解释器会去磁盘里边查找mkdir命令,磁盘告诉内核mkdir命令的位置,加载ip命令的二进制可执行程序到内存。接着内核分配内存空间并且启动mkdir命令的进程。接着执行mkdir命令,返回结果给shell解释器,Shell解释器返回结果给用户。
1.新建文件夹/perm
[halou_gh-~]# mkdir -p /perm
2.进入/perm,复制/etc/hosts文件到当前目录下
[halou_gh-~]# cd /perm/
[halou_gh-perm]# cp /etc/hosts .
3.修改hosts文件的权限为,属主有读写执行,属组有读执行,其他人没有任何权限
[halou_gh-perm]# chmod 750 hosts
[halou_gh-perm]# ll hosts
-rwxr-x---. 1 root root 158 7月 3 10:40 hosts
4.新建cali目录,修改权限为任何人都有读写执行的权限
[halou_gh-perm]# mkdir -p cali
[halou_gh-perm]# chmod 777 cali/
[halou_gh-perm]# ll -d cali/
drwxrwxrwx. 2 root root 6 7月 3 10:44 cali/
5.修改cali的权限为只有属主有读写执行,其他任何人都没有读写执行的权限
[halou_gh-perm]# chmod 700 cali/
[halou_gh-perm]# ll -d cali/
drwx------. 2 root root 6 7月 3 10:44 cali/
6.修改cali的权限为所有的人都没有读写执行的权限
[halou_gh-perm]# chmod 000 cali/
[halou_gh-perm]# ll -d cali/
d---------. 2 root root 6 7月 3 10:44 cali/
7.查看/etc/passwd和/etc/shadow文件的权限,然后复制/etc/passwd和/etc/shadow文件到/perm目录下,思考复制文件后的文件是否和原文件的权限一样?
[halou_gh-perm]# ll -d /etc/passwd
-rw-r--r--. 1 root root 988 6月 23 19:04 /etc/passwd
[halou_gh-perm]# ll -d /etc/shadow
----------. 1 root root 757 6月 23 19:04 /etc/shadow
[halou_gh-perm]# cp /etc/passwd .
[halou_gh-perm]# cp /etc/shadow .
[halou_gh-perm]# ll -d passwd
-rw-r--r--. 1 root root 988 7月 3 10:47 passwd
[halou_gh-perm]# ll -d shadow
----------. 1 root root 757 7月 3 10:47 shadow
'一样的'
8.查看/tmp目录的权限
[halou_gh-perm]# ll -d /tmp
drwxrwxrwt. 16 root root 4096 7月 3 10:04 /tmp
9.查看/root目录的权限,查看/根目录的权限
[halou_gh-perm]# ll -d /root
dr-xr-x---. 5 root root 191 7月 3 10:13 /root
[halou_gh-perm]# ll -d /
dr-xr-xr-x. 27 root root 4096 7月 3 10:40 /
10.查看/home/目录下所有目录的权限
[halou_gh-perm]# ll /home/
总用量 0
drwx------. 2 gao gao 62 6月 23 19:04 gao
drwx------. 2 gaofei gaofei 83 6月 23 16:17 gaofei
[halou_gh-~]# mkdir -p /tmp/aa/bb
[halou_gh-~]# cd /tmp/aa/bb
[halou_gh-bb]# ls
[halou_gh-bb]# ll -a
总用量 0
drwxr-xr-x. 2 root root 6 7月 3 11:08 .
drwxr-xr-x. 3 root root 16 7月 3 11:08 ..
'然后创建剩下几个文件'
[halou_gh-bb]# ls
' *_* <haha> haha xixi '
' 要注意用户和组要新建:
新建用户是 useradd
新建组是 groupadd '
[halou_gh-bb]# chmod 775 .
[halou_gh-bb]# chown haha:root .
[halou_gh-bb]# chmod 757 ..
[halou_gh-bb]# chmod 700 *_*
[halou_gh-bb]# chown root:hello *_*
[halou_gh-bb]# chmod 555 "<haha>"
[halou_gh-bb]# chown xixi:xixi "<haha>"
[halou_gh-bb]# chmod 530 "haha xixi"
[halou_gh-bb]# chown xixi:haha "haha xixi"
[halou_gh-bb]# chmod 225 ".hello"
[halou_gh-bb]# chown root:hello ".hello"
[halou_gh-bb]# ll -a
总用量 0
drwxrwxr-x. 6 haha root 62 7月 3 11:09 .
drwxr-xrwx. 3 root root 16 7月 3 11:08 ..
drwx------. 2 root hello 6 7月 3 11:09 *_*
dr-xr-xr-x. 2 xixi xixi 6 7月 3 11:09 <haha>
dr-x-wx---. 2 xixi haha 6 7月 3 11:09 haha xixi
d-w--w-r-x. 2 root hello 6 7月 3 11:09 .hello
[halou_gh-bb]#
40.w命令
看哪些用户远程登陆,时间,当前有哪个用户
[halou_gh-bb]# w
11:26:03 up 1:21, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 10:05 1:12m 0.19s 0.19s -bash
root pts/0 192.168.209.1 10:13 3.00s 0.08s 0.00s w
[halou_gh-bb]#
41.禁用selinux
永久修改selinux策略为disabled —>禁用selinux权限
编辑 vim /etc/sysconfig/selinux
把里边改成----->SELINUX=disabled
临时调整selinux安全策略
[root@halou-gf nongda]# setenforce 0 临时关闭
[root@halou-gf nongda]# getenforce
Permissive
[root@halou-gf nongda]# setenforce 1 临时启用
[root@halou-gf nongda]# getenforce
Enforcing
设置为1就是Enforcing
设置了 vim /etc/sysconfig/selinux 之后
输入:reboot 重启一下
42.给你100台服务
作为一个运维你觉得服务器将如何进行划分和管理以及需要监控哪些指标,以及哪些方面可以做到自动化运维,并如何选用或者开发相关的运维平台或者工具。
(1)如何实现资源监控,业务日志监控,程序监控以及文件同步备份的工作?
答:zabbix
prometheus
监控哪些指标:cpu的使用率 ,内存的使用率,磁盘的读写速度,还有网络的传输速度,业务的主程序
文件的同步与备份:rsync这个软件很好用---------->remote sync
自动化运维: ansible软件—>自动去做
(2)如何选取平台进行管理,以及如何实现集权分治的权限分级精细管理,并对操作记录安全审计?
关于sudo的问题:如何实现集权分治的权限分级精细管理,并对操作记录安全审计?
多建几个组 有专门
答:先对不同的命令进行分类,然后新建不同的组,给组授权,将用户加入到不同的组,继承组的权限
从/var/log/secure日志文件里获取执行的命令,进行安全审计(审计:监督的作用,审核)
记录安全审计---->记录到 var/log/secure var/log是个日志
43.diff命令
diff /etc/passwd /etc/passwd- 比较两个文件是否一毛一样
比较文本文件的差异
用法:
phpCopy code
diff [选项] <文件1> <文件2>
选项:
-q
或--brief
:仅显示文件是否不同,不显示具体差异内容。-r
或--recursive
:递归比较目录及其子目录中的文件。-u
或--unified
:以上下文格式显示差异,默认显示两个文件的3行上下文。-c
或--context
:以上下文格式显示差异,默认显示两个文件的3行上下文。-i
或--ignore-case
:忽略大小写进行比较。-w
或--ignore-all-space
:忽略所有空白字符进行比较。--ignore-blank-lines
:忽略空行进行比较。--ignore-matching-lines=<模式>
:忽略与给定模式匹配的行进行比较。--side-by-side
:以并列的方式显示两个文件的差异。--left-column
:在并列显示模式下,仅在左侧文件的列中显示差异。
示例:
-
比较两个文本文件的差异并显示具体内容:
Copy code diff file1.txt file2.txt
-
比较两个目录及其子目录中的文件差异:
Copy code diff -r dir1 dir2
-
使用上下文格式显示差异:
Copy code diff -u file1.txt file2.txt
-
忽略大小写进行比较:
cssCopy code diff -i file1.txt file2.txt
-
忽略空白字符进行比较:
Copy code diff -w file1.txt file2.txt
-
以并列的方式显示差异:
csharpCopy code diff --side-by-side file1.txt file2.txt
这些只是 diff
命令的一些常见用法示例,该命令还有更多选项和用法,你可以通过 man diff
命令查看完整的 diff
命令的手册页面来获取更多详细信息。
44.mkpasswd—》生成满足密码复杂性的密码
mkpasswd命令用于生成随机密码
语法格式为:mkpasswd [参数] 用户名。常用参数有:
- -l 指定长度
- -d 指定数字个数
- -c 指定小写字符个数
- -C 指定大写字符个数
- -s 指定特殊字符个数
- -v 详细输出
- -p prog 程序设置密码,默认是passwd
45.小作业
'编写批量删除用户的脚本,使用位置变量传递参数,判断用户存在,然后再去删除'
#!/bin/bash
name=$1
num=$2
if id "$name$num" > /dev/null 2>&1; then
userdel "$name$num"
echo "已删除$name$num用户"
else
echo "该用户不存在"
fi
'写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面五个随机字符'
#!/bin/bash
name=$1
password=$(mkpasswd -l 5)
for i in {1..20}
do
useradd "$name$i"
echo "$name$password"|passwd "$1$i" --stdin
done
1.如何知道一个用户是否在linux系统里存在?
'按w'
2.如何禁用一个用户登录linux系统?
执行命令"passwd -l username",其中"username"是您想禁止登录的用户账户名。这个命令会将该用户账户的密码锁定,使其无法登录。
3.如何知道一个用户属于哪些组?
执行命令"groups username",其中"username"是您想查询的用户账户名。这个命令会列出该用户所属的所有组。
4.如何知道哪些用户现在已经登录在linux里? 哪些用户曾经登录过linux系统?
'输入命令 who'
5.如何给用户重新设置密码?linux的root密码忘记了,怎么办?
echo "密码"|passwd 用户 --stdin
6.如何将已经登录在系统里的用户踢出系统? 并且防止它再次登录系统?
执行命令"pkill -9 username",其中"username"是您想踢出的用户的用户名。这个命令会强制终止该用户的进程,使其无法再次登录系统 。
-c
或--context
:以上下文格式显示差异,默认显示两个文件的3行上下文。-i
或--ignore-case
:忽略大小写进行比较。-w
或--ignore-all-space
:忽略所有空白字符进行比较。--ignore-blank-lines
:忽略空行进行比较。--ignore-matching-lines=<模式>
:忽略与给定模式匹配的行进行比较。--side-by-side
:以并列的方式显示两个文件的差异。--left-column
:在并列显示模式下,仅在左侧文件的列中显示差异。
示例:
-
比较两个文本文件的差异并显示具体内容:
Copy code diff file1.txt file2.txt
-
比较两个目录及其子目录中的文件差异:
Copy code diff -r dir1 dir2
-
使用上下文格式显示差异:
Copy code diff -u file1.txt file2.txt
-
忽略大小写进行比较:
cssCopy code diff -i file1.txt file2.txt
-
忽略空白字符进行比较:
Copy code diff -w file1.txt file2.txt
-
以并列的方式显示差异:
csharpCopy code diff --side-by-side file1.txt file2.txt
这些只是 diff
命令的一些常见用法示例,该命令还有更多选项和用法,你可以通过 man diff
命令查看完整的 diff
命令的手册页面来获取更多详细信息。