首页 > 代码库 > 第四章第五章 环境搭建和24个命令总结

第四章第五章 环境搭建和24个命令总结

GUN 和 GPL

    GUN‘s not Unix 递归写法,简写也是GUN

1. GUN 是84年自由软件资金会牵头弄的一个类unix操作系统,但是因为它不实用,而且总是跳票,所以并没有流行起来。

2. 但是它里面的很多软件是很好的,比如bash,这些都被用在了linux系统上


GPL

    general public license

    通用公共许可

    84年Richeal Stallman 发起了自由软件运动后不久,在其他人的协作下,创立了GPL

    

Preamble
The GNU General Public License is a free, copyleft license for software and
 other kinds of works.
#官网的解释,GPL 是自由的,公共版权(copyleft)的,软件和其他的作品。

For example, if you distribute copies of such a program, 
whether gratis or for a fee, you must pass on to the recipients the same 
freedoms that you received. You must make sure that they, too, receive 
or can get the source code. And you must show them these terms so they
 know their rights.
#不管你的软件是免费还是收费,你都传递相同的自由给其他人。你必须要他们也获得了源代码。并且让
他们知道他们的权利。

Developers that use the GNU GPL protect your rights with two steps: 
(1) assert copyright on the software, and 
(2) offer you this License giving you legal permission to copy, distribute 
and/or modify it.
#开发者用两步保护你的权利:
   1. 确保软件的版权(是开发者的)
   2. 给你复制,传播,修改这个软件的权利


For the developers‘ and authors‘ protection, the GPL clearly explains that 
there is no warranty for this free software. 
For both users‘ and authors‘ sake, the GPL requires that modified versions 
be marked as changed, so that their problems will not be attributed 
erroneously to authors of previous versions.
#为了保护开发者,GPL明确了这些免费软件是没有保修的(质保?咋翻译呢)。
#任何修改过的软件都要注明修改版本,免得以后出问题责任归咎到前面版本的开发者。

Finally, every program is threatened constantly by software patents. 
States should not allow patents to restrict development and use of 
software on general-purpose computers, but in those that do, 
we wish to avoid the special danger that patents applied to a free
 program could make it effectively proprietary. 
 To prevent this, the GPL assures that patents cannot be used to render 
 the program non-free.
#这一段说的是专利法也不能用来限制软件的自由传播。有些州用专利法限制软件的传播,这些GPL是不
承认的。

linux内核是基于gun通用公共许可的,但是linux不是gun计划的一部分



24命令总结

命令总结

  1. mkdir 创建目录 -p 递归创建

  2. touch 创建文件

  3. ls 列表目录

  4. cd 切换目录

  5. echo 打印

  6. cp 拷贝目录文件  -r递归  -a(dpr)

  7. vi 记事本编辑

  8. head 查看前n

  9. rm rm -f -r 目录 练!

  10. cat 查看文件内容

  11. rmdir 删除空目录

  12. grep -v 后面要排除的内容

    1. -B before 出了显示

    2. -A after

    3. -C context 前后

  13. find 目录  -type f      -name "名字" -mtime +7, 7, -7

    1. [root@jacobs test]# find . -type f -name "*" -mtime +12
      ./space.txt
      ./awk.txt
      ./rex.txt
      ./tab.txt
      ./recode.txt
      ./root.txt
    1. eg

  14. sed 增删改查 -i 修改  -n 取消默认输出  -e多项编辑

    1. p s g

  15. alias 修改和设置别名,查看

  16. unalias 取消别名

  17. xargs 从标准输入读入创建执行命令 -n 1分组

    1. 记住从标准输入读入

    2. [root@jacobs test]# find . -type f -name "*" -mtime -10 | xargs
      ./dtest_link.txt ./test1/jacob ./oldboy.txt ./dtest.txt
    3. [root@jacobs test]# find . -type f -name "*" -mtime -10 | xargs -n 1
      ./dtest_link.txt
      ./test1/jacob
      ./oldboy.txt
      ./dtest.txt
    4. [root@jacobs test]# find . -type f -name "*.txt" -mtime -10 | cat
      ./dtest_link.txt
      ./oldboy.txt
      ./dtest.txt
      [root@jacobs test]# find . -type f -name "*.txt" -mtime -10 | xargs cat
      -->6)target is a good market
      -->1)target is a good market
      -->10)target is a good market
      -->3)tj_max is a good market
      -->9)target is a good market
      -->8)target is a good market
      -->13)target is a good market
      -->5)target is a good market
      -->2)walmart is a good market


  18. awk -F 指定分隔符 NR 行号 {print $1 $2}

  19. seq 打印序列

    1. 1 2 3 4 5 6 7 8 9 10

    1. seq        -s " " 10 横着打印        

      -s指定分隔符

    2. seq -s " " 10

  20. pwd 打印当前目录

  21. tree 打印目录结构 目录树

    1. yum      install tree -y

  22. tr 截取 替换

  23. tail 尾巴 默认后10行, -n     数字

  24. vim     复杂编辑器 写 shell,python

  25. mv 移动 相当于改名

    1. [root@jacobs test]# mv dtest.txt dtestchanged.txt
      [root@jacobs test]# ls
      a                 dtest_link.txt  rex.txt             stu_nihao00_1.jpg
      aaaaaa.txt        dtest_soft.txt  riqi2017-07-22.txt  tab.txt
      awk.txt           md5.log         root.txt            test1
      b                 mod.txt         space.txt           today.txt
      c                 nihao.sh        sshd                umasktest1.txt
      ceshi.txt         oldboy.txt      stu_100_3.jpg       umasktest.txt
      checklog.sh       person.txt      stu_100_4.jpg
      dtestchanged.txt  recode.txt      stu_100_5.jpg
      [root@jacobs test]# cat dtestchanged.txt
      -->6)target is a good market
      -->1)target is a good market
      -->10)target is a good market
    1. 移动到当前目录,相当于改名了

  26. date -s 改时间

    1. date -s      "05/10/2009 10:18:00"



重点研究了cp这个命令

cp

默认复制是符号链接也就是软连接的

比如

[root@jacobs test]# ln -s today.txt todaysoft.txt
[root@jacobs test]# ln -s today.txt todaysoft1.txt
[root@jacobs test]# cp todaysoft1.txt todaysoft3.txt
lrwxrwxrwx 1 root  root       9 Aug  3 23:44 todaysoft1.txt -> today.txt
-rwxr-xr-x 1 root  root      23 Aug  3 23:45 todaysoft3.txt
lrwxrwxrwx 1 root  root       9 Aug  3 23:44 todaysoft.txt -> today.txt

修改源复制的文件不会对源文件造成影响

  1.  

cp test2.sh  test1.sh 这条命令不会把test1.sh的软连接也copy过去,这就是cp命令的默认设置。-d就关闭了这个称为derefrence(解除绑定)的默认选项

eg:

[root@jacobs test]# cp -d todaysoft1.txt todaysoft4.txt
lrwxrwxrwx 1 root  root       9 Aug  3 23:44 todaysoft1.txt -> today.txt
-rwxr-xr-x 1 root  root      23 Aug  3 23:45 todaysoft3.txt
lrwxrwxrwx 1 root  root       9 Aug  3 23:44 todaysoft4.txt -> today.txt
lrwxrwxrwx 1 root  root       9 Aug  3 23:44 todaysoft.txt -> today.txt


  1.  

cp -d test2.sh  test1.sh 就会保留这个链接

  1.  

-r 是递归复制,

  1.  

-a 包含了-d -p -r  -p是指包含一切诸如属组,修改时间等信息

  1.  

综上所述,-a是完全一样的复制  但是这是对于除了硬链接以外的文件

  1.  

笔者尝试了cp  一个硬链接,但是产生了一个与源文件inode不相同的文件,也就是说,cp 对硬链接的默认复制就是复制了一个源文件,并且是inode不同的源文件

也就是相当于cp了源文件

  1.  

cp  为我们提供了一个专门创建硬链接的选项 -l

  1.  

值得一提的是 ln这个命令的默认顺序是  要复制的在前面,硬链接的结果在后面

NAME
       ln - make links between files

SYNOPSIS
       ln [OPTION]... [-T] TARGET LINK_NAME   (1st form)
       ln [OPTION]... TARGET                  (2nd form)
       ln [OPTION]... TARGET... DIRECTORY     (3rd form)
       ln [OPTION]... -t DIRECTORY TARGET...  (4th form)


[ ]  里面是可选的选项,就是说,默认情况下,目标在前,链接后的名字在后

最后一个 -t  选项, 可是更改过来,但是是对目录建立硬链接



若干特殊符号

>or1>输出重定向

>>or1>>

<or <0 从文件里出来

<<or<<0

{ }生成序列

echo {1..10}

echo {a..z} seq不一样

{a,b}/txt


本文出自 “爱生活,爱linux” 博客,请务必保留此出处http://baoyu.blog.51cto.com/9768109/1953553

第四章第五章 环境搭建和24个命令总结