第一次接触GNU/Linux还是大四上学期实习的那两个月在window里装了 个虚拟机玩红帽的系统,那段时间稍微学了一点命令就不玩了。后来大四下学期认识了王总,装了双系统,那段时间又对linux有了进一步认识并产生了很大的 兴趣。直到上学期突然发疯把笔记本装debian8以后才完全进入linux的世界。学习真的是一个螺旋式上升的过程。下面进入正题:
---Linux的基本原则:
1、由目的单一的小程序组成,组合小程序完成复杂任务(KISS:keep it simple,stupid)
2、一切皆文件
3、尽量避免捕获用户接口(尽量减少与用户的交互)
4、配置文件保存为纯文本格式
---linux命令分为内置(build_in)命令和外部命令,可以用type查看命令类型,例如 type和echo就是内置命令而man是外部命令
$type type type 是 shell 内建 $type echo echo 是 shell 内建 $type man man 是 /usr/bin/man
---在Linux中行结束符是$,而在windows中行结束符是$\n,可以用cat -E显示行结束符
---tail -f 默认显示文件最后10行,-f参数会将文件增加的内容立即显示出来,这在某些场合很有用,比如查看apache的访问日志
---sort命令默认不是以数字排序的,若要以数字排序,需要加上-n参数,-t参数表示字段分割符,-k指定以哪个字段排序
---tr用于转换或删除字符,这里举一个例子,将a.txt文件中所有小写字母换成大写字母打印,只需一条命令 ,将命令的输入重定向到文件即可
1 $tr a-z A-Z < a.txt
---几个终端操作的小技巧:
ctrl +a :光标到行首,ctrl + e :光标到行尾,ctrl+d:删除当前光标定位字符,ctrl+u:删除光标到行首 ,ctrl+k:删除光标位置到行尾,ctrl + <-:向左跳过一个单词,ctrl + ->:向右跳过一个单词,ctrl+l :清屏(这样比输入clear命令会快一点)
---history命令可以显示用户曾经输入的命令,history -c会清除命令历史,这样用户使用向上箭头时就切换不了之前的命令了,但是在用户家目录下有一个隐藏文件.bash_history记录了用户曾经输入过 的命令,具体可以保存多少条可以通过echo $HISTSIZE环境变量查看。history -w命令会将缓冲区中的命令写入.bash_history中,在我的电脑上执行这条命令会覆盖文件中原有的内容。
---终端操作的小技巧之历史命令:
!n 执行命令历史中的第n条命令
!-n 执行命令历史中的倒数第n条命令
!! 执行上一条命令、
! string 执行命令历史中最近一个以指定字符串开头的命令
!$ 引用上一个命令的最后一个参数 (这里也可以按下ESC键后再按. 调出上一个命令的最后一个参数 )
---命令替换:定义:把命令中某个子命令替换为其执行结果。用法:可以用$(COMMAND)或者反引号`COMMAND`实现命令替换。举个例 子吧,看定义也不明白是什么意思,创建一个文件以当前时间命名,例如:file-2016-3-10-19-20-31.txt
1 $touch file-$(date +%Y-%m-%d-%H-%M-%S).txt 2 $touch file-$(date +%F-%H-%M-%S).txt 3 $touch file-`date +%Y-%m-%d-%H-%M-%S`.txt
---用户权限:rwx,每一位的有无都代表了一种权限拥有情况,所以一共有2的3次方共8种情况,因此可以用一个8进制数代表用户对文件的所有权,也就是0-7。而文件的用户分为3类,u,g,o
也就是所有者,组内成员,其他人,所以有时候要改变一个文件对特定用户和组的权限也比较方便
1 $chmod u+x a.txt 将所有者的执行权限加上 2 $chmod u-x a.txt 将所有者的执行权限去除 3 $chmod go=rx a.txt 赋予组内用户和其他用户读和执行权限 4 $chmod g=,o= a.txt 不给组内用户和其他用户任何权限 5 $chmod g=r,u=rwx a.txt 给文件所有者最大权限,组内用户读权限 6 $chmod --reference=./b.txt a.txt 把a.txt的权限改成和b.txt的权限一样,chown也支持这个选项
---man手册是分章节的,whatis命令是对手册页的概述:
1:用户命令(/bin, /usr/bin, /usr/local/bin)
2:系统调用(内核提供的函数)
3:库用户(程序库中的函数)
4:特殊文件(通常是设备文件)
5:文件格式(配置文件的语法)
6:游戏
7:杂项(Miscellaneous)
8: 管理命令(/sbin, /usr/sbin, /usr/local/sbin)通常只针对root用户
例如:
1 $whatis passwd 2 passwd (5) - 密码文件 3 passwd (1) - 更改用户密码 4 passwd (1ssl) - compute password hashes
此时就可以用man 5 passwd命令查看/etc/passwd配置文件的格式和每个字段的含义
1 $whatis shadow 2 shadow (5) - 影子化了的密码文件
此时用man 5 shadow 就可以查看/etc/shadow配置文件的格式和每个字段的含义
---加密方法:加密方法主要分为3种
1、对称加密:加密和解密使用同一个密钥
2、公钥加密:每个密码都成对出现,一个为私钥(private key),一个为公钥(public key) ,一把钥匙开一把锁。
3、单向加密:也称散列加密、指纹加密,只能加密不能解密,用于提取数据特征码,常用于数据完整性校验,它有两个特点:(1)雪崩效应,就是我们常说的蝴
蝶效应,只要文件中有一点微小的改动,输出就会产生很大的变化。(2)定长输出,无论输入文件多大,输出的结果长度都一样。常见的两种单向加密方式:
MD5:Message Digest, 128位定长输出 可以用md5sum命令求一个文件的md5值
SHA1:Secure Hash Algorithm, 160位定长输出
通常在/etc/shadow中看到的密码是加了salt(杂质)后再加密的结果,这样就保证了即使两个用户的密码一样,因为加的杂质不同,所以md5加密后的密文也是不一样的。