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

[经验分享] linux学习记录4

[复制链接]

尚未签到

发表于 2018-5-20 06:04:43 | 显示全部楼层 |阅读模式
  涉及 文件管理;标准I/O和管道;inode
  

  
  ln   创建链接
  -d 硬链接  相当于文件别名;多个名字 指向同一个inode
  在选定位置新建一个文件名,显示文件大小与源文件相同,但并没有占用磁盘空间
  只增加了极少量inode数据;  A与B都指向硬盘数据block
  
  -s 软连接  相当于快捷方式;可以跨分区创建;!最好用绝对路径创建
     ls -s  /SPATH(原始文件的绝对路径,或相对路径;相对于软链接DPATH路径) /DPATH
      会在你选定的位置上生成一个文件,保存了路径信息;  A指向B的路径
  
  不论是硬链结或软链结都 不会将原本的文件数据复制一份,只会占用非常少量的磁盘空间。
  硬链接数 = 名字数量
  

  

  

  inode索引节点:储存文件 元信息的区域
  
  每个inode都有一个号码,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。
    当使用rm删除一个文件时,实际上是删除了 指向该文件硬盘数据块的inode信息
  
  目录(directory)也是一种文件;一个目录是 目录下的文件名和 文件inode号之间的映射
  
  inode包含文件的元信息: 可用 stat FILENAME 查看
    * 文件的字节数
    * 文件拥有者的User ID
    * 文件的Group ID
    * 文件的读、写、执行权限
    * 文件的时间戳,共有三个:
  ctime指inode上一次变动的时间;
  mtime指文件内容上一次变动的时间;
  atime指文件上一次打开的时间。
    * 链接数,即有多少文件名指向这个inode
    * 文件数据block的位置
  

  df -i查看每个硬盘分区的inode总数和已经使用的数量
  ll -i   查看文件|目录节点号
  dumpe2fs -h /dev/sda# | grep "Inode size"  查看每个inode节点大小 #为硬盘分区号
  注意:
  1. 不同分区 的文件可以出现 相同的节点号,每个分区有独立的inode信息
  2. 有时,文件名包含特殊字符,无法正常删除。
  这时,利用find直接删除inode节点,就能起到删除文件的作用。
  例  find ./PATH -inum INODENUM -exec rm -i {} \;
  

  3. 移动文件或重命名文件,只是改变文件名,不影响inode号码。
  4. 打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。
  因此通常来说,系统无法从inode号码得知文件名。
  

  ***程序:指令+数据
  读入数据:Input
  输出数据:Output
  
  打开的文件都有一个fd: file descriptor(文件描述符)
  /proc/pid/fd 进程所打开的所有文件
  

  Linux给程序提供三种I/O设备
  标准输入(STDIN)-0默认接受来自键盘的输入
  标准输出(STDOUT)-1默认输出到当前终端窗口
  标准错误(STDERR)-2默认输出到终端窗口错误信息
  

  I/O重定向:改变默认位置     ls > /dev/pts/0 重定向到另一个终端窗口
  
  STDOUT和STDERR可以被重定向到文件:
    命令 操作符号 文件名
  操作符号
  > 把STDOUT 重定向到文件[1]>
  2>把STDERR 重定向到文件只会重定向错误的信息
  &>把所有输出重定向到文件
  例  ls /testdir /xxx  >r   2>e   把标准输出 和标准错误 分别存放;
  可能出现的 既有标准输出也有标准错误情况
  

  *>  重定向到已存在的文件,内容会覆盖该文件
  2>: 覆盖重定向错误输出数据流;
  &>:覆盖重定向所有输出
  

  例#cat > filea
  zhou
  将用户输入信息保存至文件
  按ctrl+d离开
  
  *>> 原有内容基础上,追加内容
  2>>: 追加重定向错误输出数据流;
  &>>:追加重定向所有输出
  

*<  重定向标准输入
tr‘a-z’‘A-Z’</etc/issue  将/etc/issue中的小写字符都转换成大写字符
使用文件来代替键盘的输入
Cat > filea < fileb
将fileb内容覆盖重定向至filea


*使用“<<终止词”命令从键盘把多行重导向给STDIN  就地文本
知道终止词位置前的所有信息追加至STDIN
终止词通常为EOF,可自定义,结束时必须为单独一行纯粹终止词
  
  # set -C: 禁止将内容覆盖已有文件,但可追加>>
    强制覆盖:>| 删除重建
  # set +C: 允许覆盖
  
  1.标准输出和错误输出各自定向 至不同位置:
  COMMAND > /path/to/file.out 2> /path/to/error.out
  
  2.合并 标准输出和 错误输出 至同一个文件:
  COMMAND > /path/to/file.out2> &1
  COMMAND >> /path/to/file.out2>> &1
    2>&1 把输出信息中的 2标准错误 转化为 1标准输出
  

  3.不显示错误信息    /dev/null接收所有数据
  find/etc-namepasswd2>/dev/null
  

  4.():合并多个程序的STDOUT
  (pwd;ls)>/testdir/aa.log
  (cal2007;cal2008)> all.txt
  

  

  

  *tr[OPTION]... SET1 [SET2](translate)  转换和删除字符
  -c或--complerment:      取 输入 的补集
  -d或--delete:           删除 输入字符里的 SET1;
  -s或-squeeze-repeats:   合并多个连续重复字符
  
  -t或--truncate-set1:    先删除第一字符集较第二字符集多出的字符
  tr    'abcd' 'xyz'   abcde  xyzze         !
  tr -t  'abcd' 'xyz'   abcde  xyzde         !
  

  *|管道
  将管道前命令的SDOUT 发送给管道后命令的STDIN
  STDERR默认不能通过管道转发,可利用2>&1 或|& 实现
  最后一个命令会在当前shell进程的子shell进程
  

  *tee可以同时将输出信息 重定向至  管道|> 和标准输出(终端屏幕)
  保存不同阶段的输出
  复杂管道的故障排除
  同时查看和记录输出
  ls|tee>list.txt
  

  练习:
  5、file1文件的内容为:”1 2 3 4 5 6 7 8 9 10” 计算出所有数字的总和
  tr ' ' '+'<file1|bc
  55
  

  6、处理字符串“xt.,l 1 jr#!$mn2 c*/fe3 uz4”,只保留其中的数字和空格
  echo 'xt.,l 1 jr#bcmn2 c*/fe3 uz4'|tr -d -c [[:digit:]" "]
  1 2 3 4
  

  7、将PATH变量每个目录显示在独立的一行
  echo $PATH|tr ":" "\n"
  /usr/lib64/qt-3.3/bin
  /usr/local/sbin
  /usr/local/bin
  /sbin
  /bin
  /usr/sbin
  /usr/bin
  /root/bin
  

  8、删除指定文件的空行
  cat crontab |tr -s "\n"
  

  9、将文件中每个单词(字母)显示在独立的一行,并无空行
  cat crontab|tr -s " " "\n"  单词
  

  10、创建用户gentoo,附加组为bin和root,默认shell为/bin/csh,注释信息为"Gentoo Distribution"
  useradd gentoo -G bin,root -s shell -c "Gentoo Distribution"
  

  11、创建下面的用户、组和组成员关系
  名字为admins 的组
  groupadd admins
  

  用户natasha,使用admins 作为附属组
  useradd natasha -G admins
  

  用户harry,也使用admins 作为附属组
  useradd harry -G admins
  

  用户sarah,不可交互登录系统,且不是admins 的成员,natasha,harry,sarah密码都是centos
  useradd sarah
  echo "centos"|passwd --stdin natasha
  echo "centos"|passwd --stdin natasha
  usermod -s /sbin/nologin sarah
  或者usermod -L sarah 锁定不让登陆
  

  

  

运维网声明 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-462267-1-1.html 上篇帖子: Linux学习博客11 下篇帖子: Linux Yum源
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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