跟我一起学linux基础(第二天)

第二天

复习昨天的内容:

物理地址和虚拟地址之间需要映射,通过MMU进行。
虚拟地址本质:三个数组的下标组合
32位操作系统:虚拟地址被分成三个部分 
10    +   10    +    12
   页目录    页表      页
   
虚拟内存空间:两个部分


用户空间3G  命令以及可执行程序  
——————————————————————————————————————————
内核空间1G
系统调用
文件系统
网络协议栈
驱动
中断
进程管理
设备管理

3:1是内核源码中可以修改的,一般情况下是3:1


软件包:只关心命令行的使用方法,使用到的操作工具dpkg以及apt


dpkg:不检查依赖关系,不支持在线安装。


安装:sudo dpkg -i 软件包
不完全卸载:sudo dpkg -r 软件包名称
完全卸载:sudo dpkg -p 软件包名称


apt:检查依赖关系,支持在线安装。
/var/lib/apt/lists 存放索引文件
/var/cache/apt/archives 存放下载好的软件包  
/etc/apt/sources.list 存放软件源


安装:sudo apt-get install 软件包名称
失败原因:
1、没有网络
2、索引文件太旧,更新索引文件sudo apt-get update
3、更新软件源  
4、修复依赖关系 sudo apt-get -f install
5、可能在错误提示中要求我们删除某些文件或目录,照做。


不完全卸载:sudo apt-get remove 软件包名称
完全卸载:sudo apt-get --purge remove 软件包名称
下载源码:sudo apt-get source 软件包名称


history 
~/.bashrc  内部有一个变量HISTSIZE=1000
echo $HISTSIZE  echo在打印变量时要给美元
echo 字符串    echo "字符串"


alias 给命令取别名 
alias 别名='命令'  这种是临时有效
永久生效:vi /etc/配置文件中
将alias命令添加到配置文件的最后一行
source /etc/配置文件     重启配置文件
 
ls -a 
   -R 
   -sh 
   
ls -l   
文件类型用户权限组权限其它用户权限 硬链接个数 用户名 组名 文件大小 文件最后一次修改时间 文件名


文件类型:b c d - l p s 


创建用户:sudo adduser 用户名
切换用户:su 用户名 
删除用户:
1、sudo usermod -a -G 要删除的用户所在组名 任意存在的用户名 
2、sudo deluser 用户名
3、sudo delgroup 组名 


r读 w写 x执行 -没有权限
rwxrwxr-x   八进制0775 
111111101


修改权限:chmod 八进制 文件名
chmod u/g/o/a+权限 文件名


如何判断一个文件使用的是用户权限还是组权限或者是其它用户权限呢?
1、ls -l 查看指定文件的属性   从里面找到这个文件所属的用户
2、再查看当前登陆的用户
如果登陆用户和前面所属用户相同,就使用用户权限
如果登陆用户和前面所属用户不同,查看登陆用户是否属于ls -l中的组,如果属于组则使用组权限,否则使用其他用户权限


对于普通文件:r代表是否可以查看文件内容  w代表是否可以修改文件内容  x代表是否可以执行
对于目录:r是否可以显示目录内容   w是否可以在目录下添加内容  x代表是否可以切换进目录


通配符:* 


今天的内容:

管道:命令1 | 命令2  
命令1的结果被保存到了管道中,命令2从管道中读取内容


cat passwd 显示文件的内容
head -10 passwd  显示文件的前10行
tail -5 passwd 显示文件的后5行
注意:10和5不是选项是参数。


要求显示passwd文件的第十行
cat passwd | head -10 | tail -1


管道的使用规则:保证左端命令单独使用时会有输出
  保证右端命令可以具备读取数据的能力
  
重定向符号: >  >>  <  2>或者&>
命令 符号 文件名 
>输出重定向:如果文件不存在创建文件,如果文件存在清空文件重写内容。
>>输出重定向的追加模式:如果文件不存在创建文件,如果文件存在从文件尾部添加信息。
< 输入重定向
2> 错误输出重定向  当左端命令出错时才会使用。


`` 命令置换符
一条命令的结果作为另一条命令的参数
另一条命令 `一条命令`


grep "字符串" 指定目录  -R(递归子目录) -n(显示行号)


grep "^字符串" 指定目录  -R(递归子目录) -n(显示行号)
搜索以这个字符串开头的内容


grep "字符串$" 指定目录  -R(递归子目录) -n(显示行号)
搜索以这个字符串结尾的内容


假设已知了一个文件名叫做1.c,但是我不知道这个文件在哪? find -name 文件名


cut剪切 
cut -d "分隔符" -f 1  以某个分隔符分隔出第一部分


已知:有一个文件是passwd,存放用户信息(用户是唯一的),假设我们没有权限进入文件中查看文件内容,
要求是显示出linux用户在passwd文件中所在那行的信息。
cat passwd | head -`cat passwd | cut -d ':' -f 1 | grep "^linux$" -n 
| cut -d ':' -f 1` | tail -1 > 文件名  


file 文件名  
暂时只关心可执行文件,file a.out 显示出的结果为:
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), 
for GNU/Linux 2.6.24, BuildID[sha1]=0x1b7baa552f6901823e33ba4a7f1929ece454f83b, stripped
 
Intel 80386代表了适用于X86架构
striped 代表了已经被瘦身


diff 1.c 2.c 比较两个文件内容是否完全一致,如果完全一致终端上没有任何结果。


diff要配合patch命令来进行打补丁。
打补丁:保证操作的是两个目录
1、diff -ruN old new > xxx   注意old和new位置不能变。
   r递归子目录  u保证比较时两个文件格式统一  N保证打补丁过程中需要添加删除修改的内容不出错
2、进入到老版本 cd old 
执行patch -p1 < ../xxx 


还原补丁:在old目录下执行,patch -Rp1 < ../xxx


压缩方法:
gzip 1.c 默认生成了.gz结尾的压缩文件
bzip2 1.c 生成了1.c.bz2
注意:不能对目录压缩


解压:
gzip -d 1.c.gz 
gunzip 1.c.gz


bzip2 -d 1.c.bz2 
bunzip2 1.c.bz2  


如何想要压缩目录,需要先通过tar命令对目录打包
假设有一个目录叫做abc
tar -cvf abc.tar abc
选项:
c创建  v显示过程  f指定了目标文件
注意:无论我们使用了多少个选项,其中f必须放在最后


一旦生成了xxx.tar文件,后续就可以调用压缩命令了。


拆包:
tar -xvf abc.tar 
x 释放  


xxx.tar.gz 
先解压再拆包
第一种方式:gzip -d xxx.tar.gz 
  tar -xvf xxx.tar 
第二种方式:tar -xzvf xxx.tar.gz  选项z代表使用gzip来解压
  tar -xjvf xxx.tar.bz2 
      无论使用的是.gz 还是 .bz2很多情况下都可以执行使用 tar -xvf xxx.tar.后缀


which或则whereis 基本功能都是产看命令所在路径的。








































 























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值