linux的指令终章与权限之用户权限(3)

1.prep

用处:过滤关键字,即只留下含有关键字的代码行。

用法:grep 关键字 普通文件(这里写*就代表在当前目录的所有普通文件找)

复制代码
ubuntu@fengyouyinli:~/lesson4$ cat test.c
#include<stdio.h>
int main()
{
int a =10;
int b = 20;
printf("%d",a + b);
return 0;
}
ubuntu@fengyouyinli:~/lesson4$ grep a test.c
int main()
int a =10;
printf("%d",a + b);
//这里只打印了有a的代码行

-n 报出关键字所在的行数

复制代码
ubuntu@fengyouyinli:~/lesson4$ grep -n a test.c
2:int main()
4:int a =10;
6:printf("%d",a + b);

-v 除去含关键字的行,即只保留无关键字的行

复制代码
ubuntu@fengyouyinli:~/lesson4$ grep -v a test.c
#include<stdio.h>
{
int b = 20;
return 0;
}

-i 关键字有字符时,大小字符都匹配

复制代码
ubuntu@fengyouyinli:~/lesson4$ cat test.c
#include<stdio.h>
int main()
{
int a =10;
int b = 20;
printf("%d",a + b);
int A = 10;
int B = 20;
printf("%d",A + B);
return 0;
}
ubuntu@fengyouyinli:~/lesson4$ grep -i a test.c
int main()
int a =10;
printf("%d",a + b);
int A = 10;
printf("%d",A + B);

2.打包和压缩

打包:文件合并,用于防止文件丢失。

压缩:减少文件体积,用于节省存储空间。

在网络传输时可以有效减少网络传输所用的时间。

后续对打包和压缩暂时不做区分。

压缩的两种文件:zip和tar

zip

写法:zip -r 压缩包名字.zip 被压缩的文件的路径(如果不是普通文件或空目录就要加-r递归压缩,不然只会压缩最表一层的文件)(这里是默认压缩到当前目录下)

复制代码
ubuntu@fengyouyinli:~$ ls
fg  gh  hh.txt  lesson  lesson2  lesson3  lesson4  test.txt  text
ubuntu@fengyouyinli:~$ zip -r lesson4.zip lesson4
  adding: lesson4/ (stored 0%)
  adding: lesson4/test.c (deflated 29%)
  adding: lesson4/galagme/ (stored 0%)
  adding: lesson4/galagme/galgame/ (stored 0%)
  adding: lesson4/test/ (stored 0%)
ubuntu@fengyouyinli:~$ ls
fg  gh  hh.txt  lesson  lesson2  lesson3  lesson4  lesson4.zip  test.txt  text

unzip 解压压缩包

写法: unzip 被解压文件路径 -d/解压到指定路径中

复制代码
ubuntu@fengyouyinli:~$ unzip lesson4.zip -d/home/ubuntu/lesson3
Archive:  lesson4.zip
   creating: /home/ubuntu/lesson3/lesson4/
  inflating: /home/ubuntu/lesson3/lesson4/test.c  
   creating: /home/ubuntu/lesson3/lesson4/galagme/
   creating: /home/ubuntu/lesson3/lesson4/galagme/galgame/
   creating: /home/ubuntu/lesson3/lesson4/test/
ubuntu@fengyouyinli:~$ ls
fg  gh  hh.txt  lesson  lesson2  lesson3  lesson4  lesson4.zip  test.txt  text
ubuntu@fengyouyinli:~$ cd lesson3
ubuntu@fengyouyinli:~/lesson3$ ls
gal  galagme  heoo.txt  lesson2  lesson4  love  test  test.cpp

将linux中的压缩包传到windows中

sz + 压缩包路径 ,xshell会帮我们弹窗。

将windows中的文件传到linux中

rz xshell帮我们弹窗,选择文件上传,会上传到我们的当前所在目录中。(xshell也支持直接将文件拖进去)(不作演示了,上传个2MB的文件差点炸了)

tar压缩

tar + 选项 + 被压缩的文件名.tgz + 要被压缩的文件路径

核心选项:

c 创建打包文件

z 对打包文件进行压缩

f 命名

x 解包文件

v 显示解包过程

压缩:

复制代码
ubuntu@fengyouyinli:~/lesson4$ ls
galagme  test  test.c  z
ubuntu@fengyouyinli:~/lesson4$ tar cfz galgame.tgz /home/ubuntu/lesson4/galagme
tar: Removing leading `/' from member names
ubuntu@fengyouyinli:~/lesson4$ ls
galagme  galgame.tgz  test  test.c  z

tar + xzf + 压缩包 就是解包。

tar是默认递归的。

总结:

tar + czf + xxx.tgz + 被压缩路径 + -C + 指定路径

tar + xzf + xxx.tgz + -C + 指定路径

这样就能压缩/解压到指定路径下

linux和linux之间互传

scp 用于远程拷贝

scp + 要被传输的压缩包路径 + 对方机器名@公网或私网IP:对方的指定路径

例:scp lesson4.tgz whb@8.135.23.134:/home/whb/galgame

然后输入对方的密码即可。

bc linux自带的简单计算器

复制代码
ubuntu@fengyouyinli:~$ echo ""1+2+3+4+5|bc
15

3.linux环境下的体系结构和系统内核版本

体系结构:cpu的构架(即一台电脑的处理器)

uname -a(展现当前的linux体系架构的具体信息)

复制代码
ubuntu@fengyouyinli:~$ uname -a
Linux fengyouyinli 6.8.0-71-generic #71-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 22 16:52:38 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux

unmae -r(只看内核版本与体系版本)

复制代码
ubuntu@fengyouyinli:~$ uname -r
6.8.0-71-generic

linux能支持多种现实设备的原因是内部有很多兼容性代码实现了不同平台的版本的需求,在识别设备的芯片属性后就会采用条件编译的方式保留所需的对应源代码,因此可以说芯片是一台设备最重要的组成部分。

体系结构(芯片结构)

1.主流的体系结构有x86_32或x86_64(别名x64)

2.新老内核的中企业优先用老内核

4.快捷键

1.ctrl + c(中止写指令或中止代码运行)

2.上下键(查看历史命令)

3.快速按两次tab(自动进行命令搜索和命令补全)

复制代码
ubuntu@fengyouyinli:~$ wh
//按两下tab后的显示
whatis             whereis            which              which.debianutils  while              whiptail           who                whoami             
ubuntu@fengyouyinli:~$ whi
which              which.debianutils  while              whiptail           
ubuntu@fengyouyinli:~$ while //当匹配结果只有一个时,linux会自动帮我们补全

4.ctrl + r(搜索历史命令)

复制代码
(reverse-i-search)`': which
//这就是ctrl+r后最近与which匹配的使用过的历史指令,按enter就可以直接使用

5.ctrl + d(退出当前用户)

从ctrl+r看linux会自动记录我们的历史指令,使用history即可看见我们之前使用过的指令(解压的指令也会在里面)

云服务器除了维护或不用了,都是永不关机的(使用shutdown就可以关机了)

5.shell命令行及其运行原理

每次输入命令前的代码叫命令行,我们自己写的叫命令。

复制代码
ubuntu     @fengyouyinli   :~              $ 
//用户名    主机名          当前所在目录     提示符#时超级用户,$是普通用户

6.shell和bash

操作系统内核外部其实是有一层外壳程序,这个外壳程序打印命令行+提示符,用户输入的指令本质是一个字符串,经过外壳程序处理后再将数据给操作系统内核。操作系统内核将处理完的数据先给外壳程序,该外壳程序再将数据以字符串的形式打印出来。

这个外壳程序叫命令解释器(也叫shell)

shell存在的意义

1.方便用户操作(只用写字符串,不用写代码)

2.保护内核(拒接用户的非法请求)

外壳程序在系统中以进程的方式呈现,在有新指令到来时,会以创建新进程的方式运行。

在每次登录时系统都会给我们创建一个bash进程。

shell和bash的区别

shell是进程的总和,bash是shell中的一种。

安卓就是包裹在linux操作系统外面的那一层shell。

7.权限

linux中的用户

root(超级用户) or普通用户

//权限高 权限低,受管控如,普通用户是不允许修改系统文件的,但超级用户可以

windows中的用户

管理员or普通用户

su(给用户进行身份切换)

su 给普通用户超级用户的权限 exit后就变回普通用户了

su - 直接变成超级用户

su + 普通用户名,可以从超级用户变成普通用户。

相关推荐
s6516654962 小时前
Linux内核学习-汇编笔记
linux
IMPYLH2 小时前
Linux 的 csplit 命令
linux·运维·服务器·数据库
cccyi72 小时前
支持 HTTP 协议的主从 Reactor 高性能服务器组件
服务器·http·reactor
钰衡大师2 小时前
Nohup 使用技术文档
linux·服务器·运维开发·unix
Sakuyu434682 小时前
zabbix源码安装
linux·运维·zabbix
赖亦无2 小时前
【水动力学】06 Linux + Conda 环境下源码编译安装 pypims (CUDA加速) 避坑指南
linux·运维·conda·pypims·水动力学
穷人小水滴2 小时前
使用 WebRTC 实现局域网投屏: PC (GNOME ArchLinux) -> 平板 (Android)
android·linux·webrtc·浏览器·js·gnome·投屏
恋红尘2 小时前
K8S 控制器-资源调度-叩丁狼
linux·docker·kubernetes
weixin_537590452 小时前
《C程序设计语言》练习答案(练习1-7)
linux·c语言·算法