设为首页 收藏本站
查看: 786|回复: 0

[经验分享] Linux入门(四)

[复制链接]

尚未签到

发表于 2018-5-17 12:36:28 | 显示全部楼层 |阅读模式
  目录:
一、根文件系统层级标准FHS
二、bash的基础特性(一)
    1.命令历史
    2.命令行补全
    3.路径补全
    4.命令行展开
    5.命令执行的状态结果
    6.引用
    7.快捷键
三、目录管理相关命令mkdir、rmdir、tree
四、引用命令的执行结果
五、文件查看类命令
六、文件管理和变量命令:cp、mv、rm
七、浮点数据如何存储  一、根文件系统FHS:

  1.帮助信息获取:
  help,--helpl,man,info
  自带文档(README,CHANGELOG)官方文档,
  google
  发行版的文档:
  
  Linux Kernel:Documentation
  whatis COMMAND
  man 章节号码 COMMAND
   1.用户命令
   2.系统调用
   3.库调用
   4.设备文件及特殊文件
   5.文件格式,配置文件格式等
   7.杂项
   8.管理工具及守护进程
   1,5用户最直接接触,4最特殊,8守护
  man 内容:
  NAME :功能说明
  SYNOPSIS:语法格式 //英语摘要,大纲
  OPTIONS:选项
  man语法格式
  【】可省略
  《》必须提供的
  |多选一
  {} 分组
  ... 同类的内容可以出现多次
  man后的操作:
  j,k 行
  ctrl+d/u 半瓶
  空格/b  一个屏幕
  q 退出
  G 定行
  
  /keyword 关键字
  ?keyword 向上
  基础命令:
  pwd,cd,ls,echo,date,clock,cal,hwclock,cat,tac,file,tty
  halt,poweroff,shutdown,reboot
  2.Linux的组成部分
  |——————————---|
  |应用        |
  |-----|-------||
  |shell|库函数 || //有的程序可以直接调用system call
  |—————---|———---|
  |系统调用| //内核把不同的硬件规格封装,然后对外提供系统调用
  |---------------————|
  |内核|
  |---------------————|
  |硬件| //只有内核才能够驱动硬件
  |---------------————|
  //应用只有通过系统调用,和内核交互
  静态编译:库直接在程序中,程序运行的时候,不再调用系统的库
  动态编译:程序运行的时候,需要调用系统的库
  区别:在编译的时候,是否将对应的库,复制编译到该程序中
  Linux:glibc库
  
  静态:移植方便,但是体积大
  动态:需要移动响应的库文件,体积小
  
  假如多个程序运行,都需要动态链接一个库,只需要在内存中放一份即可
  3.终端:
  硬件设备,关联的一个用户接口
  进程的类型:
  与终端相关:通过终端启动
  与终端无关:不是通过终端启动,操作引导启动过程当中
  OS:就是内核文件+各种程序文件 //shell也可以认为是一种应用程序
  静态:kernel,application
  应用程序的文件:二进制文件,库文件,配置文件,帮助文件
  文件系统:
  层级结构
  分区:就是把一个大空间,分割成多个小空间
  4.FHS
  OS开机刚启动的时候,目录树是没有被激活的
  开机后先加载;BIOS中的一段程序,然后加载内核文件//但是内核文件是放在目录树中的
  FHS:filesystem hierarchy standard文件系统层级结构标准
  /bin:所有用户管理使用的基本命令程序文件
      /sbin:供系统管理使用的工具程序
  /boot:引导加载器必须用到的各种静态文件:kernel,initramfs(initrd),grub等
  /dev:存储特殊文件或设备文件
  设备有两种类型:字符设备{线性设备}有时序的 //发送abc,一个挨着一个发,键盘块设备{随机设备}
  //发送abc,打包成一个进行发送,硬盘
  //硬盘上事划分大小相等的块block,例如16个,4096个,
  //这样访问速度快
  //可以任意,访问随机位置
  /etc:系统程序的配置文件,只能为静态
  /etc下也有层级目录,有的是必须的。包含着各种
  /etc/X11 X-window目录所在地
  /home :普通的家目录的集中位置;一般每个普通用户的家目录
  /root:管理员的家目录,建议使用普通用户登录,su到root
  /lib:库文件和内核模块所在地
  libc.so.*  动态链接C库
  ld*执行时 链接器/加载器
  modules 可装载的内核模块
  /lib64 :64bit系统特有的存放在64位共享库的路径;
  但是modules目录在centos中,依然放在 /lib下
  /mdeia :常见便携设备挂在点:floppy,cdrom,cd
  /mnt :其它文件系统的临时挂载点
  /opt :第三方的软件安装位置
  /src:当前主机为服务提供的数据
  /tmp:临时文件,几乎所有的程序,都会产生临时文件,可供所有用户写入,有特殊权限
  /usr:全局,共享,只读数据路径,是一个层级目录
  bin,sbin,lib,lib64,...
  include:C程序头文件
  share:命令手册页和自带文档架构特有的文件的存放位置
  local:另一个层级目录,安装本地应用
  X11R6:X-window程序的安装位置
  src:程序源码文件的存储位置
  //安装两个版本的软件时候,一个可以安装在usr上{一个层级目录},另一个安装在/usr/local{另一个层级目录}
  //也通常用于安装第三方程序
  /var 层级目录,存储常发生变化的数据的目录
  cache:应用缓存数据
  lib:变量状态信息
  local:/usr/local提供变化的数据
  lock:锁文件
  log:日志文件
  opt:变化的数据for /opt
  run:运行进程相关的数据
  spool:应用程序的spool数据
  tmp:系统重启之后,依然需要保留的临时数据
  cacheApplication cache data
  libVariable state information
  localVariable data for /usr/local
  lockLock files
  logLog files and directories
  optVariable data for /opt
  runData relevant to running processes
  spoolApplication spool data
  tmpTemporary files preserved between system reboots
  /proc:内核和进程信息的虚拟文件系统,他们多为内核参数,运行时间
  例如net.ipv4.ip_forward,虚拟为net/ipv4/ip_forward,存储于/proc/sys,因此其完整路径为/proc/sys/net/ipv4/ip_forward
  //虚拟文件系统:基于内存的,重启丢失
  /sys:sysfs虚拟文件系统,提供了一种比proc更为理想的访问内核数据的途径
  sys比/proc/sys更为新颖和方便,站在前任的肩膀上的
  主要用来管理linux设备提供统一模型的接口
  https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
  5.Linux系统上的文件类型:

  -:常规文件,即
  d:directory,目录文件
  b:block device块设备,映射块设备,支持以“block”为单位进行随机访问
  c:character device:字符设备,支持以“character”为单位进行线性访问
  主设备号,次设备号 //一个设备对应一个主设备号
  8位二进制:0-255
  l:symbolic link 符号链接文件,类似于windows的快捷方式
  p:pipe 管道符,命名管道
  s:socket,套接字文件:
  6.基本命令://
  shell内建命令 //但是shell自身是外部命令
  bash:bash命令自带很多命令//type,alias就是自建命令
  外部命令
  ifconfig
  注意:命令可以有别名,别名可以与原名相同,此时原名被隐藏
  例如
  type ls //是ls --color的缩写
  \ls //此时就不会执行 --color,调用原命令
  命令别名:
  alias //查看所有的别名记录
  alias NAME='COMMAND' //只对当前shell有效
  unalias cls //取消别名记录 //只对当前shell进程有效
  限制:时间限制:重启无效,位置限制:只对当前shell有效
  自动有效:/root/.bashrc
  /etc/aliases 是伪每个账号取别名,例如常见的email
  which 显示命令的完整路径
  which --skip-alias ls
  whatis 查看帮助文档
  whereis
  -b 二进制程序文件路径
  -m 手册文件
  -s 源码文件
  w:增强版本的who,谁登陆了,都在做什么
  who 查看登录的用户
  -b 系统上一次启动时间
  -r 当前的运行级别
  -l 登录进程
  -u 登录的用户
  type 是否为内建的命令
  

  

  二、bash的基础特性(一)
1.命令历史
2.命令行补全
3.路径补全
4.命令行展开
5.命令执行的状态结果
6.引用
7.快捷键  ============================================================================
1.命令历史
  每一个用户使用的命令历史是不同的
  命令保存在 /root/.bash_history 文件中
  定制history的功能,可通过环境变量实现
  echo $HISTSIZE //改变命令历史的条数
  每一个用户登录的时候,是加载本地的history文件到内存中的,
  系统关机或用户退出的时候,会把内存中的数据写入到硬盘中去
  echo $HISTFILESIZE
  history文件大小1000 //保留1000条命令
  history [-c] [-d偏移量] [n]
  -c 清空命令历史,清空的事内存中的记录
  -r 读取已经保存的文件
  -d 指定删除某条记录
  history -d 676 5 //从第几条,向后删除几条
  history -anrw [文件名]
  -a 同步:当前命令的历史,追加到历史文件中,//把内存中的命令历史,追加到文件中
  -n 从历史文件中,毒素所有未被读取的行
  -r 读取历史文件并将内容追加到历史列表中
  -w 常用:写入到历史文件中
  history -ps 参数 [参数..]
  
  history 10 //显示最近10条
  history > a //追加到该文件中
  history 《 b //还原该文件
  
  !1024
  !STRING   执行命令历史列表中最近一次以开头STRING开头的命令
  !!  再一次执行上一条命令,上下键功能一样
  
  ESC .  按住esc然后松开,句号,调用上一个命令的参数
  !$  也会调用最后一个值
  
  注意:命令的重复执行,有时候需要依赖于幂等性
  控制命令记录的方式
  HISTCONTROL 取值有三个
  ignoredeups :忽略重复的命令
  ignorespace :忽略以空白字符开头的命令
  ignoreboth :以上两者同时生效
2.命令行补全
  shell程序在接受到用户执行命令的请求,分析完成之后,最左侧的字符串会被当做命令
  命令处理机制:
  查找内部命令:
  根据PATH环境变量中设定的目录,自左向右逐个搜索目录下的文件名
  修改PATH,建议修改.bashrc文件
  export  PATH=“$PATH:/usr/bin"
  给定的大头字符串如果能唯一标识某命令程序文件,则直接补全
  不能唯一标识某命令,再击tab键一次,会给出列表
  shell内建--->$PATH(自左向右)
  3.路径补全
  在给定的起始路径下,以对应路径下的打头子串来逐一匹配起始路径下的每一个文件;
  tab:
      如果能唯一标识,则直接补全
      否则,再一次tab,给出列表
4.命令行展开

  ~:自动展开为用户的家目录,或指定的用户的家目录
  {}:可承载一个以逗号分隔的路径列表,并能够将其展开为多个路径。
5.命令执行的状态结果
  bash通过状态返回值来输出此结果
  成功:0
  失败:1-255
  echo $?
6.引用
  强引用:‘’
  若引用:“”
      命令引用:· · 反引号
      命令引用:建议使用$(COMMAND)
  $(COMMAND)
  或者'COMMAND'
  mkdir $(date +%H-%M-%S).dir


7.快捷键
  ctrl + a //跳转到命令行首部
      ctrl + e //跳转到行尾
      ctrl + u //删除光标位置到行首
      ctrl + k //删除光标所在处,到行尾的所有字符
      ctrl + l :清屏,相当于clear
  三、目录管理相关命令mkdir、rmdir、tree
  文件类型:-,d,c,b,l,p,s
  目录:
  mkdir [OPTIION] ... DIRECTORY
  -p:自动创建父目录
  -v:显示创建过程
  -m:直接设定其权限
  mkdir -p x/y/{A,c,b}
  rmdir 删除空目录
  -p 删除某目录,如果其父目录为空,则一并删除之
  tree 显示目录树
  -L 显示的层级,深度,默认显示所有层级
  -d 只显示目录
  -f 显示全路径
  

  四、引用命令的执行结果
      $(COMMAND)
      或者'COMMAND'
  mkdir $(date +%H-%M-%S).dir
  

  五、文件查看类命令
      cat,tac,head,tail,more,less,stat,touch
      分屏查看命令:more ,less
          more /etc/rc.d/init.d/functions 查看内容
      特点:翻屏至文件尾部后自动退出
  less /etc/rc.d/init.d/functions
  
      head 前几行,默认前10行
  -n 10
  -10
      tail 尾几行
          -n 10
  -10
          -f //查看文件尾部内容结束后不退出,跟随显示新增的行
      stat 显示文件的状态
          文件:两类数据
      元数据:metadata
      数据:data
  时间戳:
      access time最近访问:最近查看,cat命令获取,
      文件系统优化了以后,最近几s内的频繁访问,时间戳是不会改变的
          modify time最近更改:修改,新增加,减少
  change time最近改变{改动}:元数据改变
      touch 修改文件的时间戳 //摸一下,就可以改变时间戳
          touch bb //bb存在,就会修改为当前的时间戳,没有就会创建该文件
  //bb存在,bb的内容是不会改变的
  -c file存在,就修改时间戳,否则不进行任何操作
  -a|-m|-c //改变时间是不能手动指定的
  -t STAMP
  [CC|YY]MMDDhhmm[.ss] //年月日时分.秒
  六、文件管理类命令及变量cp、mv、rm
  
  文件管理命令:copy
  1.cp命令:复制文件
  源文件:目标文件
  1)单源复制:cp [OPTION]... [-T] SOURCE DEST
  //如果DEST不存在,则事先创建此文件,并复制源文件的数据流至DEST中
  //如果DEST存在:
  且为非目录文件:覆盖文件DEST的数据流
  为目录:现在DEST目录下创建一个与源文件同名的文件,并复制其数据流
          2)多源复制:cp [OPTION]... SOURCE... DIRECTORY
  如果DEST不存在,则必须为目录
  如果DEST存在,
  且为文件:错误
  且为目录文件:分别复制每一个文件到目标目录中,并保持原名
  3)cp [OPTION]... -t DIRECTORY SOURCE...
  alias cp=“cp -i"
  -i 交互interactive,覆盖之前,提醒用户确认
  -f 强制覆盖目标文件
  -r,-R recursive递归复制目录
  在linux中目录及文件,在同一目录中,不能文件和目录同名
  -d 复制链接文件本身,而不是源文件//假如符号链接使用的事相对路径的话,可能会失效
  --preserve{ALTER_LIST} 保留属性,
  默认:
  mode,权限
  ownership,属主
  timestamp,时间戳
  其他:
  context,安全上下文
  links,符号链接,复制符号链接本身
  xattr,扩展属性
  all,相当于-a,复制所有属性
  -a archive,用于实现归档,所有权限内容
  cp 直接复制的是,源文件,假如目标文件是符号链接的话
  
  2.mv
  mv [OPTION]...  [-T] SOURCE DEST //一对一
  mv [OPTION]...  SOURCE ... DIRECTORY //多个源一个t
  mv [OPTION]...  -t DIRECTORY SOURCE... //多个源一个t
  mv a b //重命名a为b,可以为目录
  -i 交互式
  -f force
  3.rm //linux删除后,找回来是特别困难的
  -r,-R ,recursive//递归删除,包括目录
  -i interactive交互式询问
  -f force强制
  危险操作:rm -rf /*
  注意:所有不用的文件,建议不要直接删除,而是移动至某个专用目录;{模拟回收站}
  

  变量:
  命名的内存空间,
  因为考虑到变量占用内存大小
  变量具有类型的概念:整形,浮点型,字符型,布尔型,日期时间型
  基本的类型:字符和数值
  变量类型:
  字符型
  数值型:
  精确数值型
  近似数值型
  变量类型确定后:存储格式、数据范围、参与运算
  存储数值:用二进制
  存储字符:ASCII码 //0-127个
  字符集:用0和1对应了,和字符的关系
  变量的赋值操作:
  name=tom
  把变量占用的内存空间,替换为tom
  

  七、浮点数如何存储
    十进制的3.5,也就是二进制的11.1,移位后就是1.11×2的1次方。
    所以符号位为0,阶码为(1+127)10 = (128)10 = 1000 0000b,尾数为110 0000 0000 0000 0000 0000。
    所以全部连在一起就是 0100 0000 0110 0000 0000 0000 0000 0000,
3整数部分:3 = 11
0.5小数部分:0.5=1 乘2取余法
3.5=11.1b=1.11*2^1
11.1b=111*(2^-1)=35*(10^-1)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461376-1-1.html 上篇帖子: linux如何快速入门 下篇帖子: python执行linux命令
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表