文件命名规则

Linux文件名称长度不能超过255个字符;
不能使用/号当文件名
严格区分大小写

Linux常用命令(续)

  1. //文本查找 grep egrep fgrep
  2. grep //根据模式搜索文本,并将符合模式的文本行显示出来。 \
  3. //使用基本正则表达式定义的模式来过滤文本的命令。
  4. Pattern(模式) //文本字符和正则表达式的元字符组合而成的匹配条件
  5. -i //忽略大小写
  6. --color //匹配到的内容高亮显示
  7. -v //显示没有被模式匹配到的行
  8. -o //只显示被模式匹配到的字符串
  9. -E //使用扩展正则表达式。grep -E相当于使用egrep
  10. -q //静默模式,不输出任何信息
  11. -A 1 //被模式匹配到的内容以及其后面一行的内容都显示出来,\
  12. //如果把1改成2就表示被模式匹配到的内容以及其后面2行的内容均显示出来
  13. -B 1 //被模式匹配到的内容以及其前面一行的内容都显示出来, \
  14. //如果把1改成2就表示被模式匹配到的内容以及其前面2行的内容均显示出来
  15. -C 1 //被模式匹配到的内容以及其前后的行各显示1行,如果把1改成2 \
  16. //就表示被模式匹配到的内容以及其前后的行各显示2行。
  17. fgrep //不支持正则表达式,执行速度快
  18. //文件查找
  19. 在文件系统上查找符合条件的文件
  20. locate
  21. //语法:
  22. locate KEYWORD
  23. //非实时,模糊匹配,查找是根据全系统文件数据库进行的,查找的速度快
  24. //依赖于事先构建的索引。索引的构建是在系统较为空闲时自动进行(周期性任务)
  25. updatedb //手动生成文件数据库
  26. //索引构建过程需要遍历整个根文件系统,极消耗资源
  27. find //实时查找,精确性强,遍历指定目录中所有文件完成查找, \
  28. //查找速度慢,支持众多查找标准。
  29. //语法:find [OPTION...] 查找路径 查找标准 查找到以后的处理动作
  30. 查找路径 //默认为当前目录
  31. 查找标准 //默认为指定路径下的所有文件
  32. -name 'filename' //对文件名作精确匹配.支持glob通配符机制
  33. -iname 'filename' //文件名匹配时不区分大小写
  34. -regex pattern //基于正则表达式进行文件名匹配.以pattern \
  35. //匹配整个文件路径字符串,而不仅仅是文件名称
  36. -user username //根本属主来查找
  37. -group groupname //根据属组来查找
  38. -uid //根据UID进行查找,当用户被删除以后文件的属主会变为此用户的UID
  39. -gid //根据GID进行查找,当用户被删除以后文件的属组会变为此用户的GID
  40. -nouser //查找没有属主的文件.用户被删除的情况下产生的文件,只有uid没有属主
  41. -nogroup //查找没有属组的文件.组被删除的情况下产生的文件,只有gid没有属组
  42. -type //根据文件类型来查找(f,d,c,b,l,p,s
  43. -size //根据文件大小进行查找。如1k1M,+10k、+10M,-1k、-1M \
  44. //+表示大于,-表示小于
  45. [+|-]
  46. #K、#M、#G
  47. #Unit表示(从#-1到#之间的范围大小)
  48. -#Unit表示(从0到#-1的范围大小)
  49. +#Unit表示(大于#的所有)
  50. -mtime //修改时间
  51. -ctime //改变时间
  52. -atime //访问时间
  53. +5 //5天前
  54. -5 //5天以内
  55. -mmin //多少分钟修改过
  56. -cmin //多少分钟改变过
  57. -amin //多少分钟访问过
  58. +5 //5分钟前
  59. -5 //5分钟以内
  60. -perm mode //根据权限精确查找
  61. -perm -mode //文件权限能完全包含此mode时才符合条件
  62. -perm /mode //9位权限中有任何一位权限匹配都视为符合查找条件
  63. //组合条件:
  64. -a
  65. -o
  66. -not
  67. 例:
  68. !A -a !B = !(A -o B)
  69. !A -o !B = !(A -a B)
  70. //处理动作:默认为显示到屏幕上
  71. -print //显示
  72. -ls //类似ls -l的形式显示每一个文件的详细信息
  73. -delete //删除查找到的文件
  74. -fls /path/to/somefile //查找到的所有文件的长格式信息保存至指定文件中
  75. -ok COMMAND {} \; //对查找到的每个文件执行COMMAND,每次操作都需要用户确认
  76. -exec COMMAND {} \; //对查找到的每个文件执行COMMAND,操作不需要确认
  77. //注意:find传递查找到的文件至后面指定的命令时,查找到所有 \
  78. //符合条件的文件一次性传递给后面的命令,而有些命令不能接受过多参数, \
  79. //此时命令执行可能会失败。而xargs可规避此问题。
  80. xargs //通过管道将查找到的内容给xargs处理,xargs后面直接跟命令即可

文件层级系统

  1. FHS //文件层级系统
  2. / //可以单独分区,LVM分区
  3. /boot //系统启动相关的文件,如内核(vmlinuz)、initrdinitramfs),\
  4. //以及grubbootloader)。建议单独分区,基本分区
  5. /dev //设备文件。不能单独分区
  6. 设备文件 //关联至一个设备驱动程序,进而能够与之对应硬件设备进行通信
  7. 块设备 //随机访问,数据块(比如硬盘)
  8. 字符设备 //也叫线性设备,线性访问,按字符为单位(比如鼠标、显示器)
  9. 设备号 //主设备号(major)和次设备号(minor
  10. 主设备号标识设备类型
  11. 次设备号标识同一类型下的不同设备
  12. 设备文件只有元数据,没有数据
  13. /etc //配置文件
  14. /home //普通用户的家目录,每一个用户的家目录通常默认为/home/USERNAME \
  15. //建议单独分区
  16. /root //管理员的家目录。不该单独分区
  17. /lib //库文件
  18. 静态库 //.a
  19. 动态库 //.dll,.so(shared object)
  20. /lib/modules //内核模块文件
  21. /media //挂载点目录,通常用来挂载移动设备
  22. /mnt //挂载点目录,通常用来挂载额外的临时文件系统,比如另一块硬盘
  23. /opt //可选目录,早期通常用来安装第三方程序
  24. /proc //伪文件系统,内核映射文件(伪文件系统实际上里面是没有任何内容的, \
  25. //开机之后才映射上去的)。不能单独分区
  26. /sys //伪文件系统,跟硬件设备相关的属性映射文件(伪文件系统实际上里面是没有 \
  27. //任何内容的,开机之后才映射上去的)。不能单独分区
  28. /tmp //临时文件,/var/tmp
  29. /var //可变化的文件,比如logcache。存放日志信息、pid文件、lock文件,\
  30. //建议单独分区
  31. /bin //可执行文件,用户命令
  32. /sbin //管理命令
  33. /usr //shared,read-only,全局共享只读文件。提供操作系统核心功能,可以单独分区
  34. /usr/bin
  35. /usr/sbin
  36. /usr/lib
  37. /usr/local //第三方软件安装路径
  38. /usr/local/bin
  39. /usr/local/sbin
  40. /usr/local/lib
  41. /usr/local/etc
  42. /usr/local/man
  43. /etc,/bin,/sbin,/lib内是系统启动就需要用到的程序,这些目录不能挂载额外的分区,\
  44. 必须在根文件系统的分区上
  45. /usr/bin,/usr/sbin,/usr/lib提供操作系统核心功能,/usr可以单独分区
  46. /usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc \
  47. /usr/local/man等等在/usr/local目录下的内容都是第三方软件,建议单独分区

重定向与管道

  1. //系统设定:
  2. 默认输入设备 //标准输入,STDIN0 (键盘)
  3. 默认输出设备 //标准输出,STDOUT1 (显示器)
  4. 标准错误输出 //STDERR2 (显示器)
  5. //I/O重定向:
  6. >:覆盖输出
  7. >>:追加输出
  8. 2> //重定向错误输出
  9. 2>> //追加重定向错误输出
  10. &> //覆盖重定向标准输出或错误输出至同一个文件
  11. &>> //追加重定向标准输出或错误输出至同一个文件
  12. < //输入重定向
  13. << //Here Document
  14. 管道 //前一个命令的输出,作为后一个命令的输入。最后一个命令会在当前shell进程 \
  15. //的子shell进程中执行
  16. 命令1 | 命令2 | 命令3 | ...
  17. tee //从标准输入读取数据,输出一份到屏幕上,一份保存到文件
  18. [root@localhost ~]# echo "hello world" | tee /tmp/hello.out
  19. hello world
  20. [root@localhost ~]# cat /tmp/hello.out
  21. hello world

bash字符串处理

  1. //bash特性之截取变量的字符串
  2. FILE=/usr/local/src
  3. echo ${FILE#*/} 结果为 usr/local/src
  4. echo ${FILE##*/} 结果为 src
  5. echo ${FILE%/*} 结果为 /usr/local
  6. //字符串切片
  7. ${var:offset:number}
  8. //取字符串的最右侧几个字符(自右向左取)
  9. ${var: -lengh}
  10. //注意:冒号后必须有一空白字符
  11. //查找替换
  12. ${var/pattern/substi} //查找var所表示的字符串中,第一次被pattern所匹配到字符串,以substi替换之
  13. ${var//pattern/substi} //查找var所表示的字符串中,所有能被pattern所匹配到字符串,以substi替换之
  14. ${var/#pattern/substi} //查找var所表示的字符串中,行首被pattern所匹配到字符串,以substi替换之
  15. ${var/%pattern/substi} //查找var所表示的字符串中,行尾被pattern所匹配到字符串,以substi替换之
  16. //查找并删除
  17. ${var/pattern} //查找var所表示的字符串中,第一次被pattern所匹配到字符串,删除之
  18. ${var//pattern} //查找var所表示的字符串中,所有被pattern所匹配到字符串,删除之
  19. ${var/#pattern} //查找var所表示的字符串中,行首被pattern所匹配到字符串,删除之
  20. ${var/%pattern} //查找var所表示的字符串中,行尾被pattern所匹配到字符串,删除之
  21. //字符大小写转换
  22. ${var^^} //所有小写转换成大写
  23. ${var,,} //所有大写转换成小写
  24. //注意:这里使用的是两个逗号“,,”