Linux 学习“认识与学习bash”

  1. 管理整个计算机硬件其实是操作系统的内核,内核是需要被保护的;
  2. 我们用户通过shell与内核进行通讯;
  3. shell的功能是提供用户操作系统的一个接口;
  4. 命令行界面的传输速度一定比较快,较不容易出现断线或者信息外流的问题;
  5. ~/.bash_history记录前一次登录以前执行的命令,这一次记录的暂存在内存中,注销后会记录到.bahs_history中的;
  6. alias直接设置别名,比如设置alias='ls -al';
  7. shell script可以将连续命令写成一个文件;
  8. type可以查看命令是bash内置的还是外部命令;
  9. 可以用echo显示变量,变量开头不能是数字;
  10. 可以用引号将有空格的东西放到变量里;
  11. 双引号里有$这种特殊字符,会被保存原本的特性,也就是会替换;
  12. 可以用\将页数符号变成一般符号;
  13. version=$(uname -r)内核版本;
  14. 变量在其他子程序需要执行使用export变成环境变量,如export PATH;
  15. 通常大写字符为系统默认变量,自己设置可以设置小写区分;
  16. 取消变量使用unset 变量;
  17. bash可以进入下一个进程,用exit退出;
  18. cd /lib/modules/$(uname -r)/kernel,进入内核;
  19. 单引号仅能有一般字符,双引号就可以替换特殊字符;
  20. 反单引号之内的命令会被先执行;
  21. env可以列出目前shell环境下所有的环境变量与内容,env是environment的缩写;
  22. set可以查看所有变量;
  23. $本身也是变量,代表shell线程代号,也就是所谓的PID,可以使用echo $$显示PID;
  24. echo $?是回传码,如果上一个成功执行那么回传0;
  25. locale -a看支持的语系;
  26. 语系文件都是放在/usr/lib/locale/,这个目录里的;
  27. 要读取来自键盘输入的变量,用read这个命令,这个命令最常用在shell script里,-t定时,-p提醒;
  28. declare与typeset类似来声明变量的类型,举个例子,sum=100+300+50;echo $sum;declare -i sum=100+300+50;echo $sum;
  29. declare -x可以设置成环境变量+x可以取消,-r变成只读;
  30. bash是有数组的,用法类似程序语言,用echo显示;
  31. ulimit可以限制用户的某些系统资源的使用-a显示限制-f限制大小;
  32. 一般用户使用ulimit限制了文件大小,智能继续减少文件容量,不能增加;
  33. 可以使用unalias去取消alias的设置;
  34. history可以查询命令的输入历史,加数字就是最近多少条,-w将目前的数据立即写入;
  35. 可以用$HISTSIZE来查记录命令行的大小;
  36. 可以用!来实现历史中的命令;
  37. cracker最喜欢root的~/.bash_history文件;
  38. issue.net是远程登录会显示的;
  39. 在/etc/motd中可以修改登录成功后的信息;
  40. 自定义变量在注销bash后就会失效,想要保留设置就需要写入配置文件;
  41. login shell:取得登录时完整的登录路径,non-login shell:图形界面直接终端登录,在bash界面再bash也是这种;
  42. login shell一般会读取/etc/profile与~/.bash_profile或者~/.bash_login或~/.profile,一般第一个不要动,bash一般只会读上面三个文件中的一个而且是按顺序;
  43. source可以不用注销就读取配置文件;
  44. 在non-login shell情况下,只会读取~/.bashrc;
  45. ~/.bash_logout告诉我们注销bash再帮我做完什么操作后才离开;
  46. stty -a将目前所有的stty参数列出来;
  47. *表示0到无穷的任意字符,?表示一定有一个任意字符,[abcd]表示一定有一个abcd中的任意字符,[0-9]表示0-9所有数字,[^abc]表示非a,b,c就行;
  48. #一般用来注释,|为管道,>>数据流重定向累加,>数据流替换,` `要先执行;
  49. ll / >~/rootfile 替换覆盖,>>为累加;
  50. 2>>,2>将错误信息输出;
  51. /dev/null垃圾桶黑洞设备,可以吃掉任何导向这个设备的信息;
  52. 同时导入一个文件的方法要使用2>&1;
  53. <为文件流导入,<<为输入直接停止;
  54. 管道命令与连续执行命令是不一样的,管道可以对前面传来正确的信息,对于错误的并没有能力;
  55. 每一个管道后面接的第一个数据必定是命令,而且必须要是管道命令,例如less,more,head,tail等;
  56. cut -d '分割的字符' -f 3,5;
  57. export |cut -c 12-,取出固定区间内的字符;
  58. last留下登录者信息;
  59. cut基本是处理行的;
  60. grep是分析一行信息,将需要的信息拿出来,last | grep root 将有root的那行拿出来,last | grep root -v取反;
  61. 总之grep选择行,然后用cut对列进行操作;
  62. sort可以放在管道后面进行排序,uniq可以将从夫的数据列出一个显示-c可以进行计数;
  63. wc可以计算输出信息的整体数据;
  64. tee会同时将数据流送于文件与屏幕;
  65. tr可以用来删除一段信息中的文字,或进行替换,last| tr [a-z] [A-Z]将小写变成大写,-d ‘ 删除字符’;
  66. col常用于将man page 转存为纯文本文件方式以方便查询;
  67. join是用于处理两个文件之间的数据,主要是将两个文件当中有相同数据的那一行加在一起;
  68. join -t ':' /etc/passwd /etc/shadow;
  69. 一般使用join需要使用sort排序过才好;
  70. paste比join简单多了,直接连在一起,中间用tab分开;
  71. expand会自动将tab转化成空格-t 数字,表示一个tab被几个空格替代;
  72. split可以将大文件根据文件大小或行数切割成小文件-b 后面接大小,cd /tmp;split -b 300k /etc/termcap termcap,想要整合文件可以cat termcap*>>termcapback;
  73. split -l根据行数进行切割,ls -al /|split -l 10 - lsroot,没有文件可以使用"-"来做为输入输出流;

猜你喜欢

转载自blog.csdn.net/luzhufu0815/article/details/80989612