天天看点

Linux之命令引入篇

    在了解计算机基础和Linux历史后通过以下知识,相信应该能开始着手学习Linux了吧.

1)如何登陆Linux?

    login: 用户名 + Enter

    Password: 密码 + Enter

2)什么是终端?

     终端(Computer terminal)是用来让用户输入数据及显示其计算结果的机器。终端有些是全电子的,也有些是机电的。其又名终端机。

    Linux是多用户多任务的,在早期一台Unix主机连接多个终端机,让每个终端用户均可使用。

    Linux也模拟实现了UNIX的终端功能:

        物理终端:Console

        虚拟终端:/dev/tty# [1,7]

        图形终端:/dev/tty7

        模拟终端:/dev/pts/# [1,+oo)

3)用户接口:与内核交互的接口

    在Windows中:桌面

<a href="https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1890542426,2831379711&amp;fm=27&amp;gp=0.jpg" target="_blank"></a>

用户仅需双击图标即可完成用户与内核交互

    在Linux中: xprotocol  

        桌面:Gnome,KDE,XFCE(用于嵌入式环境)

            用户仅需双击图标即可完成用户与内核交互

        命令行:由sh,bash,csh,zsh,ksh程序提供

<a href="https://s1.51cto.com/wyfs02/M01/9D/33/wKiom1l7LLOBNYi8AAAFK4Ojm6Y780.png" target="_blank"></a>

    输入命令+Enter键即可完成用户与内核交互

4)Linux的哲学思想

    1、一切皆文件,几乎所有资源都映射为文件:例如:设备 

    2、由众多单一目的的小程序组成复杂程序,例如:管道

    3、避免跟用户交互,实现shell编程

    4、文本编辑命令即可配置文本

5)文件:

    不能完成路径映射

6)目录:

    完成路径映射

7)文件名

    1、区分字符大小写

    2、/不能作为文件名,/为路径分隔符

    3、长度小于255个字符

    4、以.开头的文件为隐藏文件

    5、见名知义,单词的缩写; copy 的命令为cp

8)路径

    /etc/sysconfig/network-scripts

    工作目录:当前目录

        ./  指的是 network-scripts

    上一级目录:

        ../  指的是 sysconfig

    相对路径:从当前目录开始

        ./ifcfg-eth0

    绝对路径:从根开始

         /etc/sysconfig/network-scripts/ifcfg-eth0

9)程序的组成

    指令 + 数据(来自于文件,变量、数组、链表)

    算法 + 数据结构

    二进制文件、库文件、配置文件、帮助文件

10)命令提示符:

1

2

3

<code>[root@izpo45bh60h6bsz ~]</code><code># </code>

<code>    </code><code>对于管理员: </code><code>#</code>

<code>    </code><code>普通用户:$</code>

    提示符后键入命令按Enter键:

        用户接口解析命令,分析命令,请求内核分配CPU时间片和内核资源将其运行为一个进程(动态)

        shell解析命令的过程:从定义的PATH环境变量中,从左而右依次查找目录下是否存在此命令,查找到,记录于缓存中以便二次查找,如果不存在,BASH命令报错。

4

5

6

<code>[root@izpo45bh60h6bsz ~]</code><code># cat /etc/issue  #命令为cat,</code>

<code>\S</code>

<code>Kernel \r on an \m</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># echo $PATH      #输入命令时,shell程序会从变量的路径中从左而右的查找</code>

<code>/usr/local/nginx/sbin</code><code>:</code><code>/usr/local/sbin</code><code>:</code><code>/usr/local/bin</code><code>:</code><code>/usr/sbin</code><code>:</code><code>/usr/bin</code><code>:</code><code>/root/bin</code>

11)命令的格式

    命令:

    命令的位置: 

            普通命令: bin中

            管理命令: sbin中

    选项:用于启用或关闭命令的某个或某些功能

7

8

9

10

<code>[root@izpo45bh60h6bsz ~]</code><code># cat /etc/fstab</code>

<code>#</code>

<code># /etc/fstab</code>

<code># Created by anaconda on Fri Feb 24 02:58:22 2017</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># cat -n /etc/fstab   #可以明显看出,-n启用了,可以查看每行编号的功能。</code>

<code>     </code><code>1</code>

<code>     </code><code>2 </code><code>#</code>

<code>     </code><code>3 </code><code># /etc/fstab</code>

<code>     </code><code>4 </code><code># Created by anaconda on Fri Feb 24 02:58:22 2017</code>

短选项: -c,-l,-h,多个选项间用空格分隔

    多个选项可合并,例如:-l -h = -hl,合并后的结果仍不会改变

11

12

13

14

<code>[root@izpo45bh60h6bsz ~]</code><code># ls -l -h /</code>

<code>total 1.5M</code>

<code>drwxr-xr-x   10 root  root   4.0K Jun 28 15:19 app</code>

<code>-rw-r--r--    1 root  root   1.4M Jul  3 16:04 app.</code><code>tar</code><code>.gz</code>

<code>lrwxrwxrwx.   1 root  root      7 Feb 24 10:58 bin -&gt; usr</code><code>/bin</code>

<code>dr-xr-xr-x.   4 root  root   4.0K Mar  3 12:27 boot</code>

<code>drwxr-xr-x    3 nginx nginx  4.0K Jun  2 21:26 cache</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls -lh /</code>

长选项:--character,--human-readable

    长选项不能合并,合并使用时将会报错,多个选项间用空格分隔

<code>[root@izpo45bh60h6bsz ~]</code><code># ls --all --human-readable</code>

<code>.         a.txt          .bash_profile   bin     .config  fstab     link_test1  mariadb-5.5.56-linux-i686.</code><code>tar</code><code>.gz  .pip              .rnd       .tcshrc  tomcat</code>

<code>..        .bash_history  .bashrc         b.sh    c.sh     gentoo    .</code><code>local</code>      <code>.mysql_history                    .pki              slackware  test1    tomcat1</code>

<code>.ansible  .bash_logout   .bashrc_docker  .cache  .cshrc   .lesshst  manifests   </code><code>passwd</code>                            <code>.pydistutils.cfg  .</code><code>ssh</code>       <code>tmpfile  .viminfo</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls --all--human-readable</code>

<code>ls</code><code>: unrecognized option </code><code>'--all--human-readable'</code>

<code>Try </code><code>'ls --help'</code> <code>for</code> <code>more</code> <code>information.</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls --allhuman-readable</code>

<code>ls</code><code>: unrecognized option </code><code>'--allhuman-readable'</code>

 混合使用:

<code>[root@izpo45bh60h6bsz ~]</code><code># ls --all -lh</code>

<code>total 207M</code>

<code>drwxr-xr-x. 17 root      root      4.0K Jul 28 17:33 .</code>

<code>dr-xr-xr-x. 25 root      root      4.0K Jul 28 14:54 ..</code>

<code>drwx------   3 root      root      4.0K Jun 14 16:23 .ansible</code>

<code>-rw-r--r--   1 root      root         5 Jul 13 10:06 a.txt</code>

<code>-rw-------   1 root      root       20K Jul 28 18:14 .bash_history</code>

<code>-rw-r--r--.  1 root      root        18 Dec 29  2013 .bash_logout</code>

<code>-rw-r--r--   1 root      root       203 Jul 10 08:45 .bash_profile</code>

参数:命令的作用对象

<code>[root@izpo45bh60h6bsz ~]</code><code># ls</code>

<code>a.txt  bin  b.sh  c.sh  fstab  gentoo  link_test1  manifests  mariadb-5.5.56-linux-i686.</code><code>tar</code><code>.gz  </code><code>passwd</code>  <code>slackware  test1  tmpfile  tomcat  tomcat1</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /tmp</code>

<code>123.</code><code>file</code>                                                               <code>systemd-private-5dcdf14753784b8d848b77111bf5ef1e-systemd-machined.service-2X5usM  tmp.37EDkMuqcT</code>

<code>Aegis-&lt;Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)&gt;                     systemd-private-a5389471547d457d95c6184b005585f9-named.service-Bjy16G             tmp.KEBXHvNPLz</code>

<code>mykernel                                                               systemd-private-a5389471547d457d95c6184b005585f9-ntpd.service-Jqrn5o              tmp.XESks7mpp9</code>

<code>systemd-private-5dcdf14753784b8d848b77111bf5ef1e-named.service-U672aF  tmp.1GRvDKa1HN</code>

当给出不同的参数,得出的结果,并不相同。

ls命令的作用是:list directory contents列出目录下的文件列表,传递不同的参数,将列出不同目录下的文件列表 。如果没有参数,默认为当前目录。

12)如何使用命令?

   命令的格式:

            windows: EXE,MSI

            linux: ELF

    命令的类型:

            shell自带的命令: 在文件系统所有路径下没有与之对应的程序文件

<code>[root@izpo45bh60h6bsz ~]</code><code># type cd</code>

<code>cd</code> <code>is a shell </code><code>builtin</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># enable -n cd  ##禁用内部命令</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># enable -n  ##显示所有被禁用的内部命令</code>

<code>enable</code> <code>-n </code><code>cd</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># enable cd  ##启动一个内部命令</code>

<code>[root@izpo45bh60h6bsz ~]</code><code># enable -a | fgrep cd  ##显示所有的内部命令</code>

<code>enable</code> <code>cd</code>

            外部命令:有独立的可执行文件

<code>[root@izpo45bh60h6bsz ~]</code><code># type cat</code>

<code>cat</code> <code>is </code><code>/usr/bin/cat</code>

    shell自带命令:

       # help 命令(COMMAND)

<code>[root@izpo45bh60h6bsz ~]</code><code># help cd</code>

<code>cd</code><code>: </code><code>cd</code> <code>[-L|[-P [-e]]] [</code><code>dir</code><code>]</code>

<code>    </code><code>Change the shell working directory.</code>

    外部命令:

        1)获取帮助: COMMAND --help

<code>[root@izpo45bh60h6bsz ~]</code><code># cat --help</code>

<code>Usage: </code><code>cat</code> <code>[OPTION]... [FILE]...</code>

<code>Concatenate FILE(s), or standard input, to standard output.</code>

<code>  </code><code>-E, --show-ends          display $ at end of each line</code>

<code>  </code><code>-n, --number             number all output lines</code>

        2)帮助手册: man [CHAPTER] COMMAND

        man 查询如果没有给出具体章节,默认显示匹配到首个章节。

            帮助手册的位置: /usr/share/man

<code>[root@izpo45bh60h6bsz ~]</code><code># ls /usr/share/man  #ls作用的对象为/usr/share/man目录,列出此目录下的所有文件和目录</code>

<code>cs  de  fr  </code><code>id</code>  <code>ja  man0p  man1p  man2   man3   man3x  man4x  man5x  man6x  man7x  man8x  man9x  pl  pt_BR  sk  </code><code>tr</code>     <code>zh_TW</code>

<code>da  es  hu  it  ko  man1   man1x  man2x  man3p  man4   man5   man6   man7   man8   man9   mann   pt  ru     sv  zh_CN</code>

            不同帮助手册的意义:

                man1,man2,man3,....,man8

                    man1: 普通命令

<code>[root@localhost ~]</code><code># man 1 ls (/bin/ls)</code>

                    man2: 系统调用

<code>[root@localhost ~]</code><code># man 2 read</code>

                    man3: 库调用

                    man4: 设备

<code>[root@localhost ~]</code><code># man 4 tty (/dev/tty)</code>

                    man5:配置文件格式

<code>[root@localhost ~]</code><code># man 5 passwd (/etc/passwd)</code>

                    man6: 游戏

                    man7:杂项

                    man8:管理命令

<code>[root@localhost ~]</code><code># man 8 init (/sbin/init)</code>

            获取命令的帮助手册: whatis COMMAND

<code>[root@localhost ~]</code><code># whatis passwd   #帮助手册的位置1,5都有</code>

<code>passwd</code>               <code>(1)  - update user's authentication tokens</code>

<code>passwd</code>               <code>(5)  - password </code><code>file</code>

<code>passwd</code> <code>[sslpasswd]   (1ssl)  - compute password hashes</code>

            注意获取命令是找到whatis数据库实现的,如果有新的man手册加入有必要运行命令:

<code># makewhatis</code>

         查看指定手册的帮助: man # COMMAND   #[1,9]

<code>[root@localhost ~]</code><code># man 1 passwd</code>

<code>PASSWD(1)                       User utilities                       PASSWD(1)</code>

<code>NAME</code>

<code>       </code><code>passwd</code> <code>- update user’s authentication tokens</code>

<code>[root@localhost ~]</code><code># man 5 passwd       </code>

<code>PASSWD(5)                  Linux Programmer’s Manual                 PASSWD(5)</code>

<code>       </code><code>passwd</code> <code>- password </code><code>file</code>

                快捷键:

                    Ctrl用 ^表示

                    ^u: 向上翻半屏

                    ^d: 向下翻半屏

                    Enter: 向下翻一行

                    k:向上翻一行

                    space:向下翻一屏

                    b:向上翻一屏

                    q: 退出

                    #G:跳到指定行

                    G:最后一行

                    1G/gg:道行

               搜索:

                       /字符串 当前光标向下搜索

                        ?字符串 当前光标向上搜索

                            n 同向下一个

                            N 逆向下一个

     3)信息页:info

<code>[root@localhost ~]</code><code># info ls  #显示命令的作者,所写的日期,等与此命令相关历史信息</code>

      4)官方文档 Documentation

        Hadoop: hadoop.apache.org

        nginx : nginx.org

        apache: apache.org        

        5)发行商的文档: 

                redhat.com/docs

        6)谷歌、bing、百度

本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1951866,如需转载请自行联系原作者

继续阅读