LINUX基础知识

        本文共分为几个部分:linux基本原则,人机交互接口介绍,用户名密码介绍和命令格式介绍, 文件类型说明,ls、cd、type命令的使用,环境变量简单介绍、时间介绍和获取帮助和LINUX文件系统结构与几个常用命令(ls、cd、pwd、mkdir、rmdir、touch、stat、rm、tree、cp、mv、install),历史命令回顾,和其它命令。

        linux基本原则:

        1、everything is a file

        2、small,single--purpose program

        3、ability to chain programs together to perform complex tasks

        4、avoid captive user interface

        5、configuration date stored in text

        中文为:1、一切皆文件

                     2、目的单一的简单的小程序

                     3、组合小程序实现复杂的功能

                     4、尽量避免捕获用户接口

                     5、配置文件保存为文本格式

      人机交互接口:SHELL,计算机通过shell把系统以人容易理解和接受的方式展现给用户,与用户进行交互

      shell的分类:GUI接口(Graphic User Interface)图形用户界面。

                          例如:windows

                                   x-window:Gnome、KDE、Xface

                          CLI接口(Command Line Interface)命令行接口

                          例如:windows的PowerShell(Windows NT以后版本)

                                    linux的sh、bash(最常用)、csh、ksh、zsh、tcsh

    linux共有7个用户界面(也叫用户终端:Terminal),6个命令行界面与1个图形化界面,

    图形化界面的启动方式startx 

    用户终端的切换方式:Ctrl+Alt+F1--F6,F7为图形界面

    

    LINUX中在图形界面中,桌面上鼠标右键有Open Terminal(或者Application----Terminal),这个打开的叫模拟终端

    一个最简单的操作系统由kernel+shell所需要的库文件+shell程序

    windows的库文件为.dll结尾:即动态链接库(Dynamic Link Library)

    Linux的库文件为.so结尾:即共享对象,也叫共享库。(Share Object)



    用户介绍:用户名 用户密码和用户ID

    用户登录需要用户名和密码,系统对用户的辨认使用的是用户ID。

    用户登录系统,系统需要对用户进行验证即认证机制(Authentication),用户登录系统后,用户有什么样的权限,即授权机制(Authorization )。对用户的使用需要进行审计(Audition),通常为日志形势。

    用户又分为普通用户、管理用户和root用户

    su [-l]  username:不同的用户之间需要切换(l表示完全切换,不带半切换)      su= switch user

    passwd:对用户密码进行修改

    密码的复杂度规则:为了用户的安全,对用户密码复杂度有如下要求

    1、使用4中类型中的至少三种

    2、足够长,至少为7位

    3、使用随机字符串,不要谁用单词、日期或者单词和日期的组合

    4、定期更新

    5、循环周期足够大

    用户登录后有命令提示符(prompt bash):#为root用户, 为普通用户

    命令提示符后的输入格式为:命令+选项+参数

----------------------------------------------------------------------------------------------------------------------------------------

[root@LAB1 ~]# su -l student
[student@LAB1 ~]$ exit
logout
[root@LAB1 ~]# su student
[student@LAB1 root]$ exit
exit
[root@LAB1 ~]# passwd student
Changing password for user student.
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

命令行格式

    命令  选项(可以多个)  参数(可以多个)  即:command    option(多个)    arguments(多个)

    命令、选项和参数严格区分大小写,

    命令:二进制程序或者脚本文件

    选项:修改用户的执行参数。分为长选项(--)和短选项(-),都可以为多个。长选项多个时必须用空格隔开,短选项可以对多个可以进行组合

              极个别选项带参数。

    参数:执行程序的执行对象。

    

    ls:为list简写,列表、列出,列出制定路径下的所有文件

    目录:也是文件,是一种路径映射文件

    路径:从指令起始点到目的地所经过的位置。

    文件系统(File System):层次化文件管理机制,倒置的树状目录结构。分为根,一级子目录,二级子目录等。

    分叉的节点:为目录。

    不能分叉的节点:文件或者叶子节点

    从根开始的路径为绝对路径,相对于当前所处目录的路径为相对路径。

    当前目录(Current Dirctory):工作目录


---------------------------------------------------------------------------------------------------------------------------------

[root@LAB1 ~]# pwd
/root
[root@LAB1 ~]# ls -a -l /root
total 72
dr-xr-x---.  2 root root  4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root  4096 Mar 12 18:18 ..
-rw-------.  1 root root     0 Mar 12 01:26 .Xauthority
-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile
-rw-r--r--.  1 root root   176 Sep 23  2004 .bashrc
-rw-r--r--.  1 root root   100 Sep 23  2004 .cshrc
-rw-r--r--.  1 root root   129 Dec  4  2004 .tcshrc
-rw-------.  1 root root  1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--.  1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--.  1 root root  7690 Mar 10 21:56 install.log.syslog
[root@LAB1 ~]# ls -al /root
total 72
dr-xr-x---.  2 root root  4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root  4096 Mar 12 18:18 ..
-rw-------.  1 root root     0 Mar 12 01:26 .Xauthority
-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile
-rw-r--r--.  1 root root   176 Sep 23  2004 .bashrc
-rw-r--r--.  1 root root   100 Sep 23  2004 .cshrc
-rw-r--r--.  1 root root   129 Dec  4  2004 .tcshrc
-rw-------.  1 root root  1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--.  1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--.  1 root root  7690 Mar 10 21:56 install.log.syslog

   一.文件类型说明

drwxr-xr-x.  3 root root   4096 Mar 10 21:52 sound

1、文件类型(1位):-:表示普通文件

                                      d:目录文件

                                      b:块设备文件(block)

                                      c:字符设备文件(character)

                                       l:链接文件(Symbolic Link File)

                                      p:管道文件(Pipe)

                                      s:套接字(socket)

2、文件权限(2-10位):3位一组,共9位。每一组为RWX(读、写、执行),没有此权限,用-占用

3、文件硬链接数

4、文件属主(owner)

5、文件属组(group)

6、文件大小(size)

7、时间戳(timestamp),文件最后一次被修改的时间。

     文件有三个时间:最后一次访问时间(Access),最后一个修改时间(Modify)(指改变文件内容),最后一次改变的时间(Change)(改变文件属性和名字等)

     查看方法: stat 文件名

--------------------------------------------------------------------------------------------------

[root@LAB1 etc]# stat sound
  File: `sound'
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: 803h/2051d      Inode: 1967162     Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2010-07-14 23:55:07.000000000 +0800
Modify: 2015-03-10 21:52:31.835150870 +0800
Change: 2015-03-10 21:52:31.835150870 +0800

8、文件名


clear:可以用来清屏。

    二、ls命令介绍

ls:list简称,显示某一个文件的属性,或者某个目录旗下子目录的属性

ls (目录路径):显示目录,文件

ls  文件名路径:显示某个文件的属性


ls常用选项:-l :长格式显示文件属性

                  -h:做单位转换(默认为k),不加h为bit

                  -a:显示所有文件,包裹以‘.’开头的隐藏文件

                  -A:显示所有文件,不包裹.与..

                  -d:显示目录自身属性

                  -i:显示文件的索引节点号:每个文件都有一个数字标示符,Inode = Index  Node,即文件的节点,也叫索引节点

                  -r:逆序显示文件

                  -R:递归显示(Recusrive)

-----------------------------------------------------------------------------------

[root@LAB1 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog
[root@LAB1 ~]# ls -al
total 72
dr-xr-x---.  2 root root  4096 Mar 12 01:26 .
dr-xr-xr-x. 24 root root  4096 Mar 12 18:18 ..
-rw-------.  1 root root     0 Mar 12 01:26 .Xauthority
-rw-r--r--.  1 root root    18 May 20  2009 .bash_logout
-rw-r--r--.  1 root root   176 May 20  2009 .bash_profile
-rw-r--r--.  1 root root   176 Sep 23  2004 .bashrc
-rw-r--r--.  1 root root   100 Sep 23  2004 .cshrc
-rw-r--r--.  1 root root   129 Dec  4  2004 .tcshrc
-rw-------.  1 root root  1152 Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--.  1 root root 25213 Mar 10 21:59 install.log
-rw-r--r--.  1 root root  7690 Mar 10 21:56 install.log.syslog

[root@LAB1 ~]# ls -a
.  ..  .Xauthority  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc  anaconda-ks.cfg  install.log  install.log.syslog
[root@LAB1 ~]# ls -A
.Xauthority  .bash_logout  .bash_profile  .bashrc  .cshrc  .tcshrc  anaconda-ks.cfg  install.log  install.log.syslog
[root@LAB1 ~]# ls -lh
total 44K
-rw-------. 1 root root 1.2K Mar 10 21:59 anaconda-ks.cfg
-rw-r--r--. 1 root root  25K Mar 10 21:59 install.log
-rw-r--r--. 1 root root 7.6K Mar 10 21:56 install.log.syslog
[root@LAB1 ~]# ls -i
1310729 anaconda-ks.cfg  1310722 install.log  1310723 install.log.syslog
[root@LAB1 ~]# ls -d /root
/root
[root@LAB1 ~]# ls -lid /root
1310721 dr-xr-x---. 2 root root 4096 Mar 12 01:26 /root
[root@LAB1 ~]# ls -r
install.log.syslog  install.log  anaconda-ks.cfg

     三、cd:切换目录 Change Directory

       不带任何目录,切换到当前家目录(Home Directory)

       制定路径:就切换到指定路径下面

       -:在上一个目录和当前目录之间进行切换

       ~:切换到当前家目录

       ~用户名:切换到指定用户的家目录

       ..:切换到上一级目录

pwd:Print Working Directory:显示当前目录,即显示到现在这个目录的绝对路径。


     四、type:显示命令分类型,是内部命令还是外部命令。

    内部命令:(shell内置),内部,内建

    外部命令:在文件系统中某一个路径下有一个与命名相对应的可执行文件。

    


    五、环境变量

    环境变量:定义当前用户的工作环境的内存空间。

    printenv:显示当前环境变量。

    注意PATH=使用冒号分割的一堆路径。后面为可执行程序的路径,在执行程序并且没有指定路径的时候,系统默认按照顺利从PATH路径中挨个寻找可执行程序,并执行查找到的第一个。

    hash:一种缓存,记录以前使用过的命令,及其被使用的次数

    变量:命名的内存空间。变量能申请能撤销

    变量声明,即申请内存的过程。变量赋值,即把数据存到对应的内存中。

    堆栈:堆(Heap):需要访问的数据

              栈(Stack):本地生命变量和静态变量

    所有的变量都是一个配置文件与之对应。

---------------------------------------------------------------------------------------------------------

[root@LAB1 ~]# printenv
HOSTNAME=LAB1
SELINUX_ROLE_REQUESTED=
TERM=vt100
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.10.1 61481 22
SELINUX_USE_CURRENT_RANGE=
QTDIR=/usr/lib/qt-3.3
QTINC=/usr/lib/qt-3.3/include
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
SSH_AUTH_SOCK=/tmp/ssh-MyuEuh3980/agent.3980
MAIL=/var/spool/mail/root
PATH=/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=en
SELINUX_LEVEL_REQUESTED=
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib/qt-3.3/lib
CVS_RSH=ssh
SSH_CONNECTION=192.168.10.1 61481 192.168.10.100 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/bin/printenv


[root@LAB1 ~]# hash
hits    command
   7    /bin/date
   1    /usr/bin/printenv
   4    /sbin/hwclock

     六:date:时间管理

    在LINUX中,时间分为系统时间与硬件时间。

    硬件时间:即主板上硬件计算的时间。date

    系统时间:操作系统自己计算的时间。hwclock、clock

    系统时间修改方法:date  [MMDDhhmm[[CC]YY][.ss]]

    系统时间同步到硬件时间:hwclock  -w

    硬件时间同步到系统时间:hwclock  -s

    date常用参数:+%D(日期)    %d(日)    %T(小时)    %F(日期)    %Y-%m-%d     %H:%M:%S(定制显示格式)


[root@LAB1 ~]# date +%D
03/16/15
[root@LAB1 ~]# date +%d
16
[root@LAB1 ~]# date +%T
19:01:22
[root@LAB1 ~]# date +%F
2015-03-16
[root@LAB1 ~]# date +%Y-%m-%d
2015-03-16
[root@LAB1 ~]# date +%H:%M:%S
19:02:41

    七:获取帮助

    1、help

    内部命令  help  COMMAND   外部命令与内部命令的坚定方法:type

    外部命令  COMMAND  --help

    2、man 

    man分章节:1、用户命令(/bin、/usr/bin、/usr/local/bin)

                        2、系统调用

                        3、库调用

                        4、特殊文件(设备文件)

                        5、文件格式(配置文件指示指令的运算属性,某个命令对应的配置文件的语法)

                        6、游戏

                        7、杂项(Miscellaneous)

                        8、管理命令(/bin、/usr/sbin、/usr/local/sbin.管理员使用的命令,修改硬件参数,硬件工作特性、以及其它的系统级别的配置):mount

    man的文件描述:【】表示可省略 、| 表示多选一、<>表示必须用、...表示可以使用多次、{}表示分组

    章节:NAME:命令名称与功能简单介绍

              SYNOPSIS:用法说明,包括可用的选项

              DESCRIPTION:命令功能的详细说明,包括每个选项的意义。

              OPTIONS:说明每个选项的意义。

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

              BUG:bug报告方法。

              EXAMPLE:使用示例

              SEE  ALSO:另外参考

    快捷键:后翻一屏:space

                 向前一屏:b

                 后一行:Enter

                 前一行:k

                 查找: /keyword

                 从尾部开始查找:?Keyword

                 n:下一个

                 N:上一个

                 q:退出      


  LINUX文件系统结构

    /boot:系统启动时候需要用到的文件。vmlinuz--内核,initramfs--硬盘映像文件,grub:引导加载器
    /dev:设备文件,没有大小,按照元数据文件存放,包含一些设备的访问入口。
              块设备:随机访问(例如:硬盘)    字符设备:线性访问(鼠标、键盘、屏幕等)    设备号:主设备号和次设备号
    /etc:配置文件,都是文本文件
    /home:用户的家目录,默认为/home/USRNAME
    /root:root的家目录
    /lib:library,库文件
            /lib/modules:内核模块文件
            静态库:直接链接到程序访问地址,做为程序的一部分,在内存中不和别的内存进行共享
            动态库:动态链接库,在内存中可以被多个程序调用,共享使用
    /lost+found:异常开关机保存
    /mnt:挂载点目录(主要为移动设备:光盘、软盘等)
    /media:挂载点目录(额外的临时文件挂载点)             介质文件的访问必须挂载在某个目录下,进行打开读取和执行操作
    /misc:杂项
    /opt:optinal,可选目录,早起用于存放第三方软件
    /proc:伪文件系统,内核映射文件,内核可调参数。(后期系统调优与系统检测主要涉及此文件)
    /sys:伪文件系统,跟硬件设备相关的属性映射文件
    /tmp、/var/tmp:临时文件系统
    /var:可变化的文件

    /bin:binary二进制可执行文件,用户命令

    /sbin:管理命令。    这两个为系统启动相关指令

    /usr:shared,read-only,全局的共享的只读文件。

              /usr/bin   /usr/sbin    启动后提供基本功能的应用

              /usr/local/bin     /usr/local/sbin    第三方软件安装的位置


    创建目录的命名规则:1、严格区分大小写

                                     2、不能超过255个字符

                                     3、不能用‘/’当文件名

    mkdir:创建目录

                -P 创建目录的时候如果父目录不存在,则创建

                -v 详细信息   显示创建的详细信息

-----------------------------------------------------------------------------------------

[root@LAB1 tmp]# mkdir  -pv {a,b}/{c,d}
mkdir: 已创建目录 "a"
mkdir: 已创建目录 "a/c"
mkdir: 已创建目录 "a/d"
mkdir: 已创建目录 "b"
mkdir: 已创建目录 "b/c"
mkdir: 已创建目录 "b/d"

{}:表示展开


    rmdir:删除目录。remove directory。只能删除空目录

                -p:路径中为空的都删除。

文件的创建与删除

    touch:创建目录(一个文件夹下的目录与文件不可重名)

               1、touch 文件名   创建文件

               2、修改时间戳

                    -c 修改时间戳,没有此文件不创建

                    -a:只修改访问时间

                   -m:只修改修改时间

                   -t:修改为过去某个时间

    用文本编译器创建文件。nano

    stat :查看文件的属性信息

    中文标准:GB18030、GBK、GB2312

    rm:删除文件

            -i:交互删除

            -f:强制删除

           -r:删除目录,递归删除

复制和移动目录

    copy:复制目录。cp  src  dest

    cp    file1    file2    ....filen   第一个为源,最后一个为目标。

            一个文件到一个文件,一个文件到一个目录,多个文件到一个目录。

    -R:递归复制,即复制此目录及其子目录

    -f:强制覆盖

    -i:复制提醒

    -p:保留时间戳、属主等信息

    -a:保留所有属性(归档的时候用)

    -d:复制链接文件为链接文件,否则会把链接到的文件复制过来。

    -L:复制链接文件为文本    

    mv:   src    dest

           移动文件。一个文件到一个目录中,一个文件到一个文件(不存在)则移动并重命名,文件到文件(存在)则覆盖,目录到目录

    install:复制文件并制定属性。只能是文件

                -w:制定权限

                -d:创建目录

  目录管理:ls、cd、pwd、mkdir、rmdir、tree

    文件管理:touch、stat、file、rm、cp、mv、namo

    日期时间:date、clock、hwclock、cal

    文本查看命令:cat、tac、more、less、head、tail

    cat:连接并显示。

            -n:显示行号

            -E:显示结束符号(Linux结束符号为$)

            -T:显示制表符

            -v:显示非打印符号

            -A:显示所有符号

            文件1   文件2:把文件1与文件2的内容连起来进行显示

    tac:把显示的内容反过来

    Ctrl+C:强制结束。

    分屏显示命令:more、less

            空格:向后翻一屏

            B:向前翻一屏

            回车:向后翻一行

            K:向前翻一行。

    more:常用想后翻,最后一页会推出。less:常用向后翻页,最后一页不退出,只有Q才退出。


    head:查看前N行,默认是10

    tail:查看后N行。

           -n:查看前几行。

           -f(tail可用):立即显示文件中追加的内容。

-----------------------------------------------------------------------------------------------------------

[root@LAB1 ~]# head -3 /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.

    文本处理:cut、join、sed、awk

    cut:-d:制定分隔符,默认为空格

             -f:指定显示的字段。f1:显示第一列。f1,3:表示显示1列和3列。f1-3:表示显示1-3列。

-----------------------------------------------------------------------------------------------------------------------------

[root@LAB1 ~]# cut -d : -f1,3,5-7 /etc/passwd
root:0:root:/root:/bin/bash
bin:1:bin:/bin:/sbin/nologin
daemon:2:daemon:/sbin:/sbin/nologin


[root@LAB1 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

    排序命令:sort

    sort: 不影响文件内容,按照文档第一个字符升序进行排序。

              -n:按照数值大小进行排序。

              -r:逆序。

              -t:字段分隔符

              -k:第几行。以哪个字段进行排序。

              -u:不显示重复行

              -f:排序不区分大小写

   

    uniq:显示或者忽略重复行(重复且相同的行为重复行)

             -d:只显示重复行

             -D:显示所有重复行(重复几次就显示几行)

             -c:显示行,并说明每行重复的次数。

    文本统计:WC(word count):行、字符数、字节数(空格也包裹)

    [root@LAB1 ~]# wc /etc/issue

    3 13 75 /etc/issue

                   -l:只显示行

                   -w:单词数

                   -m:字符数

                   -L:最长一行多少个字符

    字符处理命令:tr:转换或者删除字符

                  tr   选项  ... set1  ...

                  tr  'a-z' 'A-Z'  < /etc/passwd

                  -d:删除字符集中出现的所有制定字符


你可能感兴趣的:(linux基础知识与常用命令)