首页 > 代码库 > 谢烟客---------Linux之命令引入篇

谢烟客---------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中:桌面

技术分享

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

    在Linux中

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

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

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

技术分享

    输入命令+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)命令提示符:

[root@izpo45bh60h6bsz ~]# 
    对于管理员: #
    普通用户:$

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

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

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

[root@izpo45bh60h6bsz ~]# cat /etc/issue  #命令为cat,
\S
Kernel \r on an \m

[root@izpo45bh60h6bsz ~]# echo $PATH      #输入命令时,shell程序会从变量的路径中从左而右的查找
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin


11)命令的格式

    技术分享

    命令:

    命令的位置: 

            普通命令: bin中

            管理命令: sbin中

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

[root@izpo45bh60h6bsz ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Fri Feb 24 02:58:22 2017
[root@izpo45bh60h6bsz ~]# cat -n /etc/fstab   #可以明显看出,-n启用了,可以查看每行编号的功能。
     1	
     2	#
     3	# /etc/fstab
     4	# Created by anaconda on Fri Feb 24 02:58:22 2017

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

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

[root@izpo45bh60h6bsz ~]# ls -l -h /
total 1.5M
drwxr-xr-x   10 root  root   4.0K Jun 28 15:19 app
-rw-r--r--    1 root  root   1.4M Jul  3 16:04 app.tar.gz
lrwxrwxrwx.   1 root  root      7 Feb 24 10:58 bin -> usr/bin
dr-xr-xr-x.   4 root  root   4.0K Mar  3 12:27 boot
drwxr-xr-x    3 nginx nginx  4.0K Jun  2 21:26 cache
[root@izpo45bh60h6bsz ~]# ls -lh /
total 1.5M
drwxr-xr-x   10 root  root   4.0K Jun 28 15:19 app
-rw-r--r--    1 root  root   1.4M Jul  3 16:04 app.tar.gz
lrwxrwxrwx.   1 root  root      7 Feb 24 10:58 bin -> usr/bin
dr-xr-xr-x.   4 root  root   4.0K Mar  3 12:27 boot
drwxr-xr-x    3 nginx nginx  4.0K Jun  2 21:26 cache

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

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

[root@izpo45bh60h6bsz ~]# ls --all --human-readable
.         a.txt          .bash_profile   bin     .config  fstab     link_test1  mariadb-5.5.56-linux-i686.tar.gz  .pip              .rnd       .tcshrc  tomcat
..        .bash_history  .bashrc         b.sh    c.sh     gentoo    .local      .mysql_history                    .pki              slackware  test1    tomcat1
.ansible  .bash_logout   .bashrc_docker  .cache  .cshrc   .lesshst  manifests   passwd                            .pydistutils.cfg  .ssh       tmpfile  .viminfo
[root@izpo45bh60h6bsz ~]# ls --all--human-readable
ls: unrecognized option ‘--all--human-readable‘
Try ‘ls --help‘ for more information.
[root@izpo45bh60h6bsz ~]# ls --allhuman-readable
ls: unrecognized option ‘--allhuman-readable‘
Try ‘ls --help‘ for more information.

 混合使用:

[root@izpo45bh60h6bsz ~]# ls --all -lh
total 207M
drwxr-xr-x. 17 root      root      4.0K Jul 28 17:33 .
dr-xr-xr-x. 25 root      root      4.0K Jul 28 14:54 ..
drwx------   3 root      root      4.0K Jun 14 16:23 .ansible
-rw-r--r--   1 root      root         5 Jul 13 10:06 a.txt
-rw-------   1 root      root       20K Jul 28 18:14 .bash_history
-rw-r--r--.  1 root      root        18 Dec 29  2013 .bash_logout
-rw-r--r--   1 root      root       203 Jul 10 08:45 .bash_profile


参数:命令的作用对象

[root@izpo45bh60h6bsz ~]# ls
a.txt  bin  b.sh  c.sh  fstab  gentoo  link_test1  manifests  mariadb-5.5.56-linux-i686.tar.gz  passwd  slackware  test1  tmpfile  tomcat  tomcat1
[root@izpo45bh60h6bsz ~]# ls /tmp
123.file                                                               systemd-private-5dcdf14753784b8d848b77111bf5ef1e-systemd-machined.service-2X5usM  tmp.37EDkMuqcT
Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)>                     systemd-private-a5389471547d457d95c6184b005585f9-named.service-Bjy16G             tmp.KEBXHvNPLz
mykernel                                                               systemd-private-a5389471547d457d95c6184b005585f9-ntpd.service-Jqrn5o              tmp.XESks7mpp9
systemd-private-5dcdf14753784b8d848b77111bf5ef1e-named.service-U672aF  tmp.1GRvDKa1HN

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

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


12)如何使用命令?

   命令的格式:

            windows: EXE,MSI

            linux: ELF

    命令的类型:

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

[root@izpo45bh60h6bsz ~]# type cd
cd is a shell builtin

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

[root@izpo45bh60h6bsz ~]# type cat
cat is /usr/bin/cat


    shell自带命令:

       # help 命令(COMMAND)

[root@izpo45bh60h6bsz ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.

    外部命令:

        1)获取帮助: COMMAND --help

[root@izpo45bh60h6bsz ~]# cat --help
Usage: cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines

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

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

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

[root@izpo45bh60h6bsz ~]# ls /usr/share/man  #ls作用的对象为/usr/share/man目录,列出此目录下的所有文件和目录
cs  de  fr  id  ja  man0p  man1p  man2   man3   man3x  man4x  man5x  man6x  man7x  man8x  man9x  pl  pt_BR  sk  tr     zh_TW
da  es  hu  it  ko  man1   man1x  man2x  man3p  man4   man5   man6   man7   man8   man9   mann   pt  ru     sv  zh_CN

            不同帮助手册的意义:

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

                    man1: 普通命令

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

                    man2: 系统调用

[root@localhost ~]# man 2 read

                    man3: 库调用

                    man4: 设备

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

                    man5:配置文件格式

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

                    man6: 游戏

                    man7:杂项

                    man8:管理命令

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


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

[root@localhost ~]# whatis passwd   #帮助手册的位置1,5都有
passwd               (1)  - update user‘s authentication tokens
passwd               (5)  - password file
passwd [sslpasswd]   (1ssl)  - compute password hashes

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

# makewhatis

   

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

[root@localhost ~]# man 1 passwd
PASSWD(1)                       User utilities                       PASSWD(1)

NAME
       passwd - update user’s authentication tokens
[root@localhost ~]# man 5 passwd       
PASSWD(5)                  Linux Programmer’s Manual                 PASSWD(5)

NAME
       passwd - password file


                快捷键:

                    Ctrl用 ^表示

                    ^u: 向上翻半屏

                    ^d: 向下翻半屏

                    Enter: 向下翻一行

                    k:向上翻一行

                    space:向下翻一屏

                    b:向上翻一屏

                    q: 退出

                    #G:跳到指定行

                    G:最后一行

                    1G/gg:道行


               搜索:

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

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

                            n 同向下一个

                            N 逆向下一个

     3)信息页:info

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

      4)官方文档 Documentation

        Hadoop: hadoop.apache.org

        nginx : nginx.org

        apache: apache.org        

        5)发行商的文档: 

                redhat.com/docs


        6)谷歌、bing、百度

本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1951866

谢烟客---------Linux之命令引入篇