首页 > 代码库 > 一、linux的基础常识

一、linux的基础常识

Linux 的哲学思想

1、 一切皆文件;
    把几乎所有资源, 包括硬件设备都组织为文件格式;
2、 由众多单一目的小程序组成; 

    一个程序只实现一个功能, 而且要做好;组合小程序完成复杂任务;

3、 尽量避免跟用户交互;
    目标: 实现脚本编程, 以自动完成某些功能;
4、 使用纯文本文件保存配置信息;
    目标: 一款使用的文本编程器即能完成系统配置工作;
5、 提供机制, 而非策略
    策略相对短寿, 只有机制才能长存。 大部分的编程问题都可以被切割成两个部分:“需要提供什么功能”(机制)和“怎样实现这些功能”(策略)。

一、linux的终端类型

    所谓终端,是用户与主机交互, 必然用到的设备。在linux中存在众多的终端类型,主要有以下几类:
    物理终端
(pty): 直接接入本机的显示器和键盘设备; /dev/console
    虚拟终端(tty#):附加在物理终端之上的以软件方式虚拟实现的终端,CentOS6默认启动6个虚拟终端。使用命令:Ctrl+Alt+F[1-6]可以在各个终端之间进行切换。
    图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;设备文件路径: /dev/tty# 切换命令: Ctrl+Alt+F7
    模拟终端(pts):也称作伪终端,图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面, 设备文件: /dev/pts/# [0,oo)
    查看当前的终端设备命令: tty

[root@mylinux ~]# tty
/dev/pts/0                #模拟终端

    查看当前系统上登录的所有用户及其信息:who

[root@promote ~]# who
root     tty1         2017-03-04 00:03
root     pts/0        2017-03-04 00:19 (192.168.191.2)

二、交互接口(shell)
    所谓交互接口,指的是启动终端后, 在终端设备附加一个交互式应用程序。交互接口有图形化接口与命令行模式的接口。这两种接口的代表应用软件有:

GUI(Graphical User Interface)

图形用户界面

X protocol, window manager, desktop

Desktop:GNOME (C, gtk)、 KDE (C++, qt)、 

XFCE (轻量级桌面)

CLI(command-line interface)

命令行界面

sh (bourn)、 csh、 tcsh、 ksh (korn)、 bash (bourn again shell)遵循GPL协议、 zsh

查看shell的命令:

[root@mylinux ~]# echo ${SHELL}        #查看当前使用的shell
/bin/bash    
[root@mylinux ~]# cat /etc/shells      #查看当前系统所有的shell
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh

三、命令帮助的使用
在Bash中,命令分为两大类型,即内置命令与外部命令:
    内置命令:在
shell程序中实现的命令即为内建命令;
    外部命令:在文件系统上的某位置有一个与命令名称对应的可执行文件;
命令类型可以使用
type命令进行判断。

[root@mylinux ~]# type -a cd
cd is a shell builtin
[root@mylinux ~]# type cat
cat is hashed (/bin/cat)
[root@mylinux ~]# man builtin    #查看所有内置命令
BASH_BUILTINS(1)                                              BASH_BUILTINS(1)

NAME
       bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, com-
       plete, compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit,
       export,false, fc,fg, getopts, hash, help, history, jobs, kill, let, local, logout,
       mapfile, popd, printf, pushd,  pwd,  read,  readonly,  return, set, shift, shopt,
       source, suspend, test, times, trap, true,type, typeset, ulimit, umask, unalias,
       unset, wait - bash built-in commands, see bash(1)
...

    查看可执行文件的路径: which、whereis。其中which命令是查找命令是否存在,以及命令的存放位置在哪儿。whereis命令只能用于搜索程序名,而且只搜索二进制文件、man说明文件和源代码文件。

[root@mylinux ~]# which vim
/usr/bin/vim
[root@mylinux ~]# which cat
/bin/cat
[root@mylinux ~]# whereis vim
vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

在shell中,获取内部命令帮助的方法有:#help COMMAND

[root@mylinux ~]# type cd
cd is a shell builtin        #cd为内置命令
[root@mylinux ~]# help cd    #可使用此方法获取
cd: cd [-L|-P] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars‘ is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    
    Options:
        -L      force symbolic links to be followed
        -P      use the physical directory structure without following symbolic
        links
    
    The default is to follow symbolic links, as if `-L‘ were specified.
    
    Exit Status:
    Returns 0 if the directory is changed; non-zero otherwise.
[root@mylinux ~]# type vim
vim is /usr/bin/vim            #vim不是内置命令
[root@mylinux ~]# 
[root@mylinux ~]# help vim     #使用此方法获取帮助时报错
-bash: help: no help topics match `vim‘.  Try `help help‘ or `man -k vim‘ or `info vim‘.

获取外部命令帮助的方法有很多,其中常用的方法有:
(1) # COMMAND --help 

(2) 使用手册(manual) # man COMMAND
(3)
信息页 # info COMMAND 

(4) 程序自身的帮助文档 READMEINSTALL
(5) 程序官方文档: Documentation
(6)
发行版的官方文档

四、帮助手册manual

    在linux内置的帮助手册功能非常丰富其主要可以分为八个章节。每一章节的主要功能是:

1   User Commands     

用户命令(/bin, /usr/bin, /usr/local/bin)
2   System Calls系统调用
3   C Library Functions库用户
4   Devices and Special Files特殊文件(设备文件)
5   File Formats and Conventions文件格式(配置文件的语法)
6   Games et. Al.游戏
7   Miscellanea杂项
8   System Administration tools and Deamons管理命令(/sbin, /usr/sbin, /usr/local/sbin)

当使用man命令时,命令选项是可能有不同的字符如<>、[]等,其代表的含义分别是:
    <>:必选   []:可选   ...:可以出现多次   |:多选一   {}:分组

IP(8)                                Linux                               IP(8)
NAME
       ip - show / manipulate routing, devices, policy routing and tunnels
SYNOPSIS
       ip [ OPTIONS ] OBJECT { COMMAND | help }
       OBJECT := { link | addr | addrlabel | route | rule | neigh | tunnel | maddr | mroute
               | monitor }
       OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] | -f[amily] { inet | inet6 |
               ipx | dnet | link } | -o[neline] }
       ip link set DEVICE { up | down | arp { on | off } |
               promisc { on | off } |
               allmulticast { on | off } |
               dynamic { on | off } |
               multicast { on | off } |
               txqueuelen PACKETS |
               name NEWNAME |
               address LLADDR | broadcast LLADDR |
               mtu MTU |
               netns PID |
               alias NAME |
               vf NUM [ mac LLADDR ] [ vlan VLANID [ qos VLAN-QOS ] ] [ rate TXRATE ] [
               spoofchk { on | off } ] |  }

MAN命令每一段开头所代表的意义:

    NAME: 命令名称及功能简要说明 

    SYNOPSIS: 用法说明, 包括可用的选项
    DESCRIPTION: 命令功能的详尽说明, 可能包括每一个选项的意义
    OPTIONS: 说明每一个选项的意义 

    FILES: 此命令相关的配置文件

    EXAMPLES: 使用示例 

    SEE ALSO: 另外参照

man命令获取帮助后翻屏方法:

    向后翻一屏: SPACE 向前翻一屏: b
    向后翻一行: ENTER 向前翻一行: k
    查找: /KEYWORD:向后 n: 下一个 N: 前一个
    ?KEYWORD:向前 n: 下一个 N: 前一个
    man 命令的配置文件: /etc/man.config
       MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置
    man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索 COMMAND 命令的手册页并显示

五、文件系统标准 FHS
    当登录linux时,查看其根目录下的文件,其目录设计遵循一定的设计标准FHS (FileSystem Heirache Standard),各个目录的主要功能是:

/bin: 可执行文件, 用户命令, 单用户下还能操作
/sbin: 管理命令, 设置系统环境, 开机过程所需要
/usr/bin /usr/sbin 一般系统命令
/usr/local/bin /usr/local/sbin 一般第三方安装
/boot: 系统启动相关的文件, 如内核、 initrd, 以及 grub(bootloader)
/dev: 设备文件:
/etc: 配置文件存放目录
/ect/sysconfig:系统级别应用配置 /etc/init.d:系统服务脚本
/home: 用户的家目录, 每一个用户的家目录通常默认为/home/USERNAME
/root: 管理员的家目录;
/lib: 库文件 静态库: .a 动态库: .dll , .so (shared object)
/lib/modules: 内核模块文件
/media: 挂载点目录, 通常用来挂载移动设备
/mnt: 挂载点目录, 挂载额外的存储设备
/opt: 可选目录, 第三方程序的安装目录
/proc: 伪文件系统, 内核映射文件
/sys: 伪文件系统, 跟硬件设备相关的属性映射文件
/srv: 为服务提供数据存放位置
/usr: shareable, read-only data
/tmp: 临时文件, /var/tmp
/var: 可变化的文件

六、文件属性与类型

    使用命令‘ls -l ‘查看某目录或文件时,可以显示该目录或文件的详细信息。该信息各字段所代表的意义是:

[root@mylinux home]# ls -ld samba
drw-r--r-x 2 500 500 4096 4月  29 2016 samba
[root@mylinux day01]# ls -l info.txt 
-rw-r--r-- 1 root root 48 2月  24 18:54 info.txt

第一个字符代表的是元数据信息,表示文件的类型,文件的主要类型有:(-)

    -: 普通文件 (f) 

    d: 目录文件
    l: 符号链接文件(symbolic link file) 

    p: 命令管道文件(pipe)
    c: 字符设备文件(character) 

    b: 块设备文件(block)
    s: 套接字文件(socket)

第二个字符到第十个字符,这九个字符代表的是文件的权限信息   (rw-r--r--)

    每3位一组,每一组: rwx(读,写,执行) -代表无权限

数字代表的是文件硬链接的次数    (1)

文件的属主(owner)               (root)
文件的属组(group)               (root)
文件大小(size), 单位是字节     (24)
时间戳(timestamp): 默认显示最近一次被修改时间  

    访问:access 

    修改:modify, 文件内容发生了改变
    改变:change, 元数据发生改变

本文出自 “随风而飘” 博客,请务必保留此出处http://yinsuifeng.blog.51cto.com/10173491/1903050

一、linux的基础常识