Linux学习

很棒的linux学习网站http://billie66.github.io/TLCL/book/index.html

为了方便记忆可以用这个:http://www.selflink.cn/links/linux (其实学习其他内容比如python也可以通过www.selflink.cn/links/python访问,同样其他的还有html,js,css,java,php,mysql——使用www.selflink.cn/links制作自己的跳转链接)

 

为了体验一下linux服务器,又买了一个阿里云,感觉速度确实比Windows Server速度快。于是开始学习linux了。

 

先从虚拟机开始学。系统centOS,有图形界面。

 


 

2016.7.27 学习了几个终端命令还有几个快捷键。

  data:显示时间和日期

  cal:显示本月日历

  df:显示磁盘剩余空间

  free:显示内存剩余空间

  exit:退出终端

  快捷键:

    从图形界面转到命令行:按CTRL+ALT+F1~F6

    从一个命令行转到另一个命令行:ALT+F1~F6

    从命令行回到图形界面:ALT+F7

 


 

2016.7.27晚 学习了目录操作的一点知识。

  pwd:显示当前目录的路径

  ls:显示当前目录的内容  ls -a:显示包括隐藏的内容的当前目录的内容("."开头的是隐藏内容)

  cd:改变目录 "."表示当前目录 ".."表示当前目录的父目录 "./"可以省略

  cd -:回到上次所在的目录  cd (~username):去往username的家目录,括号中省略表示去往当前用户的家目录

  文件名的注意事项:

    文件名大小写敏感

    文件名没有拓展名的概念

    文件名可以包含空格,但是尽量不要这样做,尽量用下划线代替

   目录权限注意事项:

    家目录是用户唯一有权限写入的目录。

 


 

2016.7.29凌晨 学习了ls命令的详解

  ls:列出当前目录的内容

    ls 指定目录: 列出指定目录的内容

    ls 指定目录1 指定目录2 ... : 列出多个目录的内容

    ls -l : 以长模式输出内容  ls 指定目录 -ld :显示指定目录的信息(巧妙配合l与d)

    ls -i : 显示文件或目录节点号(后续可以用这个查看硬链接的效果,硬链接与原文件节点号相同)

    与显示顺序有关: -s:按大小排序  -r:反向  -t:按时间排序

    另外-f 和 -h 还不是很懂具体作用是什么。

  ls -l 输出格式详解  例如: -rw-r--r-- 1 root root 12314 2017-7-22 11:05 aaa.png

    -rw-r--r-- : 文件的访问权限。

      第一个字符  文件类型  "-"代表普通文件,"d"代表目录

      此后三个字符  文件所有者的权限

      再此后三个字符  文件所属组群用户的权限

      最后三个字符  其他用户的权限

    1 : 文件硬链接的数目(硬链接就像c++里面的引用,符号链接就像Windows里的快捷方式)

    root : 文件所有者

    root : 文件所属组群

    12314 : 文件大小(字节)

    2017-7-22 11:05 : 上次修改文件的时间

    aaa.png : 文件名

  file命令:显示文件类型

  less命令:显示文件内容

 


2016.7.29晚 详细学习less命令和几个目录操作命令

  禅语:“less is more.”

  less运行后可以查看文件内容。有一些键盘命令需要记住。

  键盘命令:

    Page UP or b : 向上翻页

    Page DOWN or space : 向下翻页

    UP Arrow : 向上一行

    Down Arrow : 向下一行

    g or 1G: 移动到开头

    G : 移动到结尾

    /characters : 向前查找指定字符串

    n : 再次显示刚才的查找

    h : 显示帮助

    q : 退出less程序

  cp : 复制文件  cp -r : 复制文件夹

  rm : 删除文件  rm -r : 删除目录及其内容  rm -i : 删除前显示确认信息  rm -v : 删除时显示提示信息  rm -rf : 删除时不显示确认信息

  mkdir : 创建目录

  mv : 重命名 或 移动文件或目录

  ln : 创建硬链接  ln -s : 创建符号链接(目录只能创建符号链接,不能创建硬链接)

  


 

2016.7.30早 学习通配符

  文件名一定不要有空格,否则使用通配符的时候会遇到很多麻烦事。

  基本通配符:

    * : 匹配任意多个任意字符(包括0个)

    ? : 匹配一个任意字符(不包括0个)

    [character] : 匹配任意一个属于[]中的字符

    [!character] : 匹配任意一个不属于[]中的字符

    [[:class:]] : 匹配任意一个属于指定字符类中的字符

  常用字符类:

    [:alnum:] : 字符和数字类

    [:alpha:] : 字母类

    [:digit:] : 数字类

    [:lower:] : 小写字母类

    [:upper:] : 大写字母类

表5-3: 通配符范例
模式匹配对象
* 所有文件
g* 文件名以“g”开头的文件
b*.txt 以"b"开头,中间有零个或任意多个字符,并以".txt"结尾的文件
Data??? 以“Data”开头,其后紧接着3个字符的文件
[abc]* 文件名以"a","b",或"c"开头的文件
BACKUP.[0-9][0-9][0-9] 以"BACKUP."开头,并紧接着3个数字的文件
[[:upper:]]* 以大写字母开头的文件
[![:digit:]]* 不以数字开头的文件
*[[:lower:]123] 文件名以小写字母结尾,或以 “1”,“2”,或 “3” 结尾的文件

 来源:http://billie66.github.io/TLCL/book/chap05.html

 


 

2016.7.30下午 关于命令的相关命令

  type : 显示命令类型(命令类型有:一个可执行程序,内建于shell内部的命令,一个shell函数,另一个命令的别名)

  which : 显示命令的位置(只对可执行程序的命令有效)

  help : 显示命令的帮助文档(只对shell内部命令有效)

  command --help : 显示命令帮助文档(对大多数命令有效)

  man : 查看命令手册(打开一个命令的文档,打开方式是less)  man 5 passwd : 显示passwd手册的第5章节

表6-1: 手册页的组织形式
章节内容
1 用户命令
2 程序接口内核系统调用
3 C 库函数程序接口
4 特殊文件,比如说设备结点和驱动程序
5 文件格式
6 游戏娱乐,如屏幕保护程序
7 其他方面
8 系统管理员命令

来源:http://billie66.github.io/TLCL/book/chap06.html

  apropos : 搜索基于某个关键字的命令手册  与 man -k 效果相同

  whatis : 搜索特定关键字的命令手册

  


 

 2016.8.2凌晨 突然想起来两天没学linux了,继续学习……

   info : 还不是很会用

  在一行里执行多个命令,命令之间用分号隔开。

  alias name='string' : 给命令起别名(可以先用type string检测这个名字是否被用过了),不过这样起的别名只能持续到终端关闭之前

  unalias name : 删除别名

  


 

 2016.8.2晚 重定向

  重定向标准输出 : 命令后面加上 >filename ,命令的运行结果会输出到文件里,而且会覆盖原来的内容。(可以用 >filename 命令来快速创建一个空文件)

                 >>filename 不会覆盖原来的内容,而是在文件末尾添加内容。

  重定向标准错误:命令后面加上 2>filename ,如果在>filename后面加的话,可以写2>&1,把标准错误定向到与重定向的输出同一个文件。

                 还有一种更方便的写法 &>filename 让标准输出与标准错误联合定向。(但是&>>不行)

  一个特殊的定向位置——位存储桶: >/dev/null :什么也不输出,就好像什么都没有发生一样。(用于隐藏一些输出信息)

  cat : 连接文件/输出文件内容  不带参的时候等待键盘输入(Ctrl+d代表结束输入EOF标志)  可以与重定向联合使用

      cat filename 与 cat <filename 效果差不多,以后会看到一些区别。

  管道线:

    命令的运行结果输送到less,方便查看 : type cd | less

    过滤器,多个管道线连接成的处理输出的管道,例如排序 : ls /bin /usr/bin | sort | less

    uniq管道 : 删除相邻的重复行  | sort | uniq | less : 删除所有重复行,用less显示

      uniq -d : 显示重复列表

  wc : 显示文件行数、字、字节数  wc -l : 只显示行数

    小例子: ls /bin /usr/bin | sort | uniq | wc -l  显示去重之后的行数

  


 

2016.8.3晚 继续学习新的命令,现在命令多了一个功能——充当管道

  grep pattern [file...] : 输出匹配模式的文本

    grep -i : 大小写不敏感  grep -v : 输出不匹配的内容

    充当管道的例子 : ls /bin /usr/bin | sort | uniq | grep zip 输出目录下带zip的文件名

  head/tail : 打印内容的前/后十行

    -n number : 打印number行

    tail有一个-f选项,可以实时浏览内容的变化,直到你输入Ctrl+c(查看日志信息很方便)

  tee : 在管道的过程中可以用 | tee filename | 管道把中间结果放进filename里

 


 

 2016.8.5晚 echo命令

  echo : 把后面的内容输出到屏幕上(也可以重定向)

    可以使用通配符 echo * : 显示当前目录所有的文件和目录(*字符的展开)  echo .* : 显示当前目录所有的隐藏文件 echo ~ : 输出家目录 当然其他的通配符也可以。

    算数表达式的计算 : echo $((expression)),如echo $((2+2)) 会输出4

      只支持整数运算,运算符有+-*还有%(取模)、**(取幂)、/(整除)

    大括号的展开:echo num{1..5} 会输出num1 num2 num 3 num4 num5

      大括号可以嵌套:echo {a{1,2},b{1,2}} 会输出a1 a2 b1 b2

      大括号可以组合:echo {2015,2016}-{1..12}

    --以上通配符不仅可以在echo里用,同样也可以用于别的命令(比如快速创建一系列文件夹)

    变量:echo $USER 会输出用户名,因为$USER这个变量里存储了用户名

      要查看有效的变量名可以用printenv | less 命令

 


 

2016.8.6下午 命令替换

  昨天学习了几种展开,包括*展开,~展开,表达式展开,变量展开。今天学习的命令替换其实就是一个命令的输出可以展开。

  echo $(ls) : 把ls命令输出的内容输出到屏幕上。

  其实echo只是测试一下这个展开,使用展开真正的强大之处在于与其他命令的配合。

  比如 ls -ld $(which cp) : 居然显示了cp命令的信息,而我们其实并不知道cp的目录位置,就是因为我们配合了which命令找到了cp的位置,然后显示了cp的文件信息。

  再比如 file $(ls hello*) : 显示当前目录下每一个以hello为开头的文件的类型信息。

  在一些旧版shell中,也可以用倒引号代替美元和括号,如ls -ld `which cp`

 


 

2016.8.7晚 继续学习shell中字符串的控制

  书中写了两个很典型的例子:

    echo this is    a test

      输出:this is a test

    echo $100 money

      输出:00 money

  上面显然输出的不是我们想输出的,类似尴尬的情况还有带空格的文件名。

  所以需要有控制的方法:

    1.双引号。"two words.txt"这个就可以代表一个文件名了

      但是双引号中的变量和命令都可以正常展开。如echo "$USER's cal : $(cal)"

        而且,有趣的是,有些情况只有这样才能正常展开。比如echo $(cal)与echo "$(cal)"效果是不一样的。这是由于参数个数的不同导致的,echo会默认把多个参数之间用一个空格隔开,加了双引号,会被看成一个参数,不加双引号,是多个参数

    2.单引号。禁止所有展开。是什么就是什么。

    3.在双引号里手动禁止展开。转义字符。让echo解释转义字符可以加-e参数。如echo -e  "\$5.00 dollors\nhello"。与C语言转义字符差不多。

 


 

2016.8.8晚 键盘操作技巧

  clear : 清空屏幕(Ctrl + l)

  快捷键:

    

表9-1: 光标移动命令
按键行动
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Alt-f 光标前移一个字。
Alt-b 光标后移一个字。
Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作。

 

Table 9-2: Text Editing Commands
KeyAction
Ctrl-d Delete the character at the cursor location
Ctrl-t Transpose(exchange)the character at the cursor location with the one preceding it.
Alt-t Transpose the word at the cursor location with the one preceding it.
Alt-l Convert the characters from the cursor location to the end of the word to lowercase.
Alt-u Convert the characters from the cursor location to the end of the word to uppercase.

 

表9-3: 剪切和粘贴命令
按键行动
Ctrl-k 剪切从光标位置到行尾的文本。
Ctrl-u 剪切从光标位置到行首的文本。
Alt-d 剪切从光标位置到词尾的文本。
Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
Ctrl-y 把剪切环中的文本粘贴到光标位置。

来源:http://billie66.github.io/TLCL/book/chap09.html

  Tab键自动补全命令(不过在我的CentOS上好像没有什么效果……)

  history : 显示历史命令列表

    !88 显示第88个历史命令

    Ctrl + r 也可以搜索历史命令

  表9-5: 历史命令

Ctrl-p 移动到上一个历史条目。类似于上箭头按键。
Ctrl-n 移动到下一个历史条目。类似于下箭头按键。
Alt-< 移动到历史列表开头。
Alt-> 移动到历史列表结尾,即当前命令行。
Ctrl-r 反向递增搜索。从当前命令行开始,向上递增搜索。
Alt-p 反向搜索,不是递增顺序。输入要查找的字符串,然后按下 Enter,执行搜索。
Alt-n 向前搜索,非递增顺序。
Ctrl-o 执行历史列表中的当前项,并移到下一个。如果你想要执行历史列表中一系列的命令,这很方便。
表9-6: 历史展开命令
序列行为
!! 重复最后一次执行的命令。可能按下上箭头按键和 enter 键更容易些。
!number 重复历史列表中第 number 行的命令。
!string 重复最近历史列表中,以这个字符串开头的命令。
!?string 重复最近历史列表中,包含这个字符串的命令。

来源:http://billie66.github.io/TLCL/book/chap09.html

 


 

2016.8.9晚

  文件模式,代表着文件所有者,文件组所有者,和其他人的读,写,执行权限。

  

  

表 10-3: 权限属性示例
文件属性含义
-rwx------ 一个普通文件,对文件所有者来说可读、可写、可执行。其他人无法访问。
-rw------- 一个普通文件,对文件所有者来说可读可写。其他人无法访问。
-rw-r--r-- 一个普通文件,对文件所有者来说可读可写,文件所有者的组成员可以读该文件,其他所有人都可以读该文件。
-rwxr-xr-x 一个普通文件,对文件所有者来说可读、可写、可执行。也可以被其他的所有人读取和执行。
-rw-rw---- 一个普通文件,对文件所有者以及文件所有者的组成员来说可读可写。
lrwxrwxrwx 一个符号链接,符号链接的权限都是虚拟的,真实的权限应该以符号链接指向的文件为准。
drwxrwx--- 一个目录,文件所有者以及文件所有者的组成员可以访问该目录,并且可以在该目录下新建、重命名、删除文件。
drwxr-x--- 一个目录,文件所有者可以访问该目录,并且可以在该目录下新建、重命名、删除文件,文件所有者的组成员可以访问该目录,但是不能新建、重命名、删除文件。

  

posted @ 2016-07-27 15:32  lvmememe  阅读(345)  评论(0编辑  收藏  举报