zoukankan      html  css  js  c++  java
  • 2019年7月18日星期四(linux基础)

    一、linux文件种类

    1、如何查看linux下文件类型?如何决定文件类型?

    使用"ls -l"查看文件的详细属性,其中第一个字母就是文件类型,是由创建方式来决定文件的类型。例如:使用mkdir命令来创建,就一定是目录文件。

    2 linux下,一共有多少种文件类型

    7种。分别是:

    文件类型        创建方式       字母

    ======================================

    普通文件   ->    touch          -

    目录文件   ->    mkdir          d

    链接文件   ->                   l

    管道文件   ->                   p

    套接字文件 ->                   s

    块设备文件 ->                   b

    字符设备文件 ->                    c

    二、linux下根目录下有哪些文件?

    gec@ubuntu:~$ ls /

    bin   cdrom  etc   initrd.img  lost+found  mnt  proc  run   selinux  sys  usr  vmlinuz

    boot  dev    home  lib         media       opt  root  sbin  srv      tmp  var

    常见目录(记住)

    bin: 存放linux常用命令与可执行程序

    etc: 配置文件

    mnt: 系统挂载目录,一般存放共享目录,U盘,SD卡..

    usr: 第三方程序的安装目录

          /usr/bin   -> 第三方程序的可执行文件

          /usr/include  -> 第三方程序的头文件

          /usr/lib   -> 第三方程序的库文件

          /usr/share -> 第三方程序的帮助文档

    boot: 存在系统的镜像文件

           每一个系统都会有三个镜像:

           uboot引导程序  ->  memtest86+_multiboot.bin

           kernel内核     ->  vmlinuz-3.5.0-23-generic

           fs文件系统     ->  initrd.img-3.5.0-23-generic 

    dev: 硬件设备的驱动文件

    home:普通用户的家目录

    lib: 系统自带的库文件

    root:超级用户root的家目录

    sbin: 超级用户才能使用的linux命令

    不常见目录(了解)

    cdrom:光驱挂载目录

    lost+found:系统强制退出时产生一些碎片文件,重启系统,就会修复碎片。

    proc:存放linux进程的相关信息 

    run:系统运行时产生信息存放的目录

    selinux:加固系统安全目录

    sys:系统中设置的一些参数

    media:VGA口连接的设备

    opt:存放者一些可选的程序

    srv:系统服务日志     

    tmp:系统临时文件,创建文件重启无效

    var:存放系统运行时需要修改的数据

    三、环境变量

    1、什么是linux环境变量?

    linux下,环境变量就是提前设置的一些值,当我们以后使用到某些值,就会在环境变量下寻找值究竟是多少?

    2、如何查看当前系统的环境变量?

    gec@ubuntu:~$ env

    SHELL=/bin/bash  -> linux命令的解析器

    OLDPWD=/proc   -> 刚刚去过的目录

    USER=gec      -> 当前用户的用户名

    PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin    -> 系统可执行程序的路径

    PWD=/home/gec   -> 当前的工作路径

    HOME=/home/gec   -> 家目录的路径

    SHELL、OLDPWD..是环境变量的变量名,我们可以赋一些值给这些变量。

    3、从环境变量中推断出几个结论。

    1)为什么"cd -"可以切换到刚刚去过的路径?

    OLDPWD这个环境变量可以保留一次去的过的目录。所以“cd -”等价于 cd OLDPWD等于的路径。

    2)为什么"cd"可以直接切换到/home/gec

    HOME这个变量可以保存当前用户的家目录路径,所以“cd”等价于 cd HOME等于路径。

    3)为什么新打开一个终端,会默认在家目录下?

    打开终端时,系统就会将HOME赋值给PWD。

    4、环境变量PATH究竟是干嘛用?

    1)明明ls/bin下,但是为什么用户可以在任何路径下直接使用ls

    因为ls所在的路径在环境变量PATH下。

    PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/bin

    机制: 用户输入ls命令  -> 系统就去PATH中所有路径寻找有没有这个ls  -> 有   -> 可以在任何的目录下使用ls。

          用户输入abcdefg命令  -> 系统就去PATH中所有路径寻找有没有这个abcdefg  -> 没有  -> abcdefg不生效。

    2)能不能修改环境变量PATH的值?

    能。使用命令export修改。

    例子1: 假设abcdefg这个程序在家目录下,想环境变量PATH只等于家目录,然后执行abcdefg,看看能不能执行。

    1. 修改PATH命令: export PATH=/home/gec

    2. 直接输入abcdefg,就出来结果。

    例子2: 假设环境变量弄丢,linux命令全部都用不了,怎么办?

    1. 直接写export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin

    2. 命令就恢复了。

    例子3: 想在原来PATH环境变量值前提下,添加一个新的目录/home/gec,如何添加?

    1. 输入修改命令: export PATH=$PATH:/home/gec

    2. 查看环境变量: env

    PATH=/usr/local/bin:/usr/local/sbin/:/usr/bin:/usr/sbin:/bin:/sbin:/home/gec

    练习1: 自己写一个程序print_name,这个程序放在家目录下project/,实现打印自己的名字缩写,要求在任何的路径下都可以直接输入print_name,都可以运行,要求命令可以永久使用。

      将"export PATH=$PATH:/home/gec/project"  -> 加入到.bashrc中。

    四、linux shell命令功能

    1)将所有输入过的命令保存在一个文件中   ->  方向键""/""查看已经输入过命令。

    命令保存在文件: ~/.bash_history

    gec@ubuntu:~$ history  -> 将该文件中最近的1000条命令显示出来

     1630  cd /

     1631  print_name

     1632  cd

     1633  ls

     1634  ls -a

     1635  history

     1636  ls - a ~

     1637  ls -a ~

     1638  gedit .bash_history

     1639  history

    2linux命令与文件名补齐      -> Tab

    Tab键按一下就是补齐。

    Tab键按二下就是列出所有匹配的关键词。

    3)给linux命令取新的别名      ->  alias命令

    linux系统启动脚本中已经存在的别名:

    # some more ls aliases

    alias ll='ls -l'

    alias la='ls -la'

    alias l='ll'

    alias c='clear'   -> 右值的命令是单引号,不是双引号

    练习2:‘p’替代 'pwd'

    五、man手册

    1、什么是man手册?

    man手册就是提供用户查询linux语法一本书,当我们遇到一些不懂的函数/命令,不需要刻意记住参数,只需要记住怎么查询该函数/命令用法即可。

    不懂函数  -> 通过查询man手册查询  -> 返回函数的功能、函数头文件、函数原型、函数参数、函数返回值。

    不懂命令  -> 通过查询man手册查询  -> 返回命令功能、命令参数

    2man手册是如何管理内容?

    其实man手册分开9个手册管理。(只需要记住前3个手册即可)

    gec@ubuntu:~$ man man

             -> 第一个man,是man命令,代表用户想查询内容。

             -> 第二个man,是查询内容,代表用户想查man这个命令怎么用。

     手册数

       1     Executable programs or shell commands  -> 存放着一些linux命令

       2     System calls (functions provided by the kernel)  -> 系统调用函数

       3     Library calls (functions within program libraries)  -> 库调用函数

    3、如何通过man命令查看内容

    使用格式: man [[section] page ...] ...

             man  需要查看的手册数     需要查询的内容

    例子1 mkdir命令我不懂?怎么办?

    输入命令: man 1 mkdir

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

    NAME  -> 对查询的内容进行简单的概括。

    mkdir - make directories  -> 可以创建多个目录

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

    SYNOPSIS  -> 该内容使用格式

    mkdir [OPTION]... DIRECTORY...

    []: 如果出现括号,说明该项是可以省略的。

    [OPTION]...  -> mkdir的选项可以不写,也可以写多个

    DIRECTORY  -> 目录路径必须写,而且可以写多个。

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

    DESCRIPTION  -> 对内容进行详细描述

    //命令功能描述

    Create the DIRECTORY(ies), if they do not already exist.

    //参数描述

    -m, --mode=MODE

          set file mode (as in chmod), not a=rwx - umask

     

    -p, --parents

          no error if existing, make parent directories as needed

    例如:

    mkdir dir -m 0666

    mkdir dir --mode=0666

    以上两个命令是等价的

    mkdir aaa/bbb/ccc -p

    mkdir aaa/bbb/ccc --parents

    以上两个命令是等价的

    例子2bzero()不会怎么办?

    1)先查出bzero()函数在第几个手册。

    gec@ubuntu:~$ man -f bzero

    bzero (3)            - write zero-valued bytes  -> 说明bzero()函数在第3手册

    2)根据查询到第3手册,直接访问bzero()

    gec@ubuntu:~$ man 3 bzero

    3)分析内容

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

    NAME  -> 对内容进行简单概括

    bzero - write zero-valued bytes

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

    SYNOPSIS  -> 使用格式:得到头文件与函数原型

    头文件:#include <strings.h>

    函数原型:void bzero(void *s, size_t n);

    看到函数原型,马上得到以下几个结论:

    参数的个数:看逗号,n个逗号,就n+1个参数。

    参数的名字:看下划线划住部分      s       n

    参数的类型: 除了名字之外的内容。 void *  size_t

    返回值的类型: 看函数名字前面的部分  void

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

    DESCRIPTION  -> 对参数进行描述。

    怎么找到参数填什么?  ->  根据参数的位置(下划线),阅读上下文。

    s:  需要处理的区域的起始地址

    n:  需要处理的区域的字节数

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

    RETURN VALUE -> 返回值是什么

           None.

    六、安装中文man手册

    1、资源:manpages-zh-1.5.1.tar.gz

    2、如何安装中文手册到linux系统?

    1)将manpages-zh-1.5.1.tar.gz放置到共享目录

    2)解压到家目录下

       tar zxvf manpages-zh-1.5.1.tar.gz -C /home/gec

    3)可以看到家目录下出现了一个新的目录:manpages-zh-1.5.1/

    4)为中文手册创建新的安装目录并给予权限。

       sudo mkdir /usr/local/zhman

       sudo chmod 777 /usr/local/zhman

    5)切换到解压之后的目录下

       cd ~/manpages-zh-1.5.1/

       ls  -> 看到很多文件,其中有configure文件,这个就是配置文件。

    6)查看配置参数是什么?

       ./configure -h

    1.使用格式:

    Usage: ./configure [OPTION]... [VAR=VALUE]...

    2.参数

    指定安装路径:

    --prefix=PREFIX         install architecture-independent files in PREFIX     -> --prefix这个参数类似windows中"浏览"

                         [/usr/local]

    禁用繁体字:

    --disable-zhtw          do not generate manpages for zh_TW

    7)进行配置

       ./configure --prefix=/usr/local/zhman --disable-zhtw

    8)编译  -> 执行makefile功能

       make

    9)安装

       make install

    安装结果:  /usr/local/zhman/share/man/zh_CN

    man1  man2  man3  man4  man5  man6  man7  man8  -> 该中文手册分开8个手册进行管理。

    例子: 想查看ls的用法。

    1. 查看英文: man ls

    2. 查看中文: man -M /usr/local/zhman/share/man/zh_CN ls    ->  cman ls

     

     

       练习1: 安装中文手册

       练习2: "cman ls"就可以查询中文ls,永久修改cman。

  • 相关阅读:
    关于SQL的一些小知识
    关于VO中的Attribute的问题
    关于JDEV的连接问题
    object xml
    自己写的一个用于往文件中插入字符串及空格的bat
    修改 SQL SERVER 2008 編輯前200筆 資料表問題? 转载自:http://www.dotblogs.com.tw/easy1201/archive/2008/12/04/6179.aspx
    Create Advanced Web Applications With Object-Oriented Techniques
    需求第一
    fwrite() and UTF8 转载
    mysql 表字段与关键字相同的话
  • 原文地址:https://www.cnblogs.com/zjlbk/p/11209440.html
Copyright © 2011-2022 走看看