vlambda博客
学习文章列表

你需要知道的linux基础编程(一)

  1. 命令解析器 Shell ----- UNIX操作系统 Bash ----- Linux操作系统 本质:根据命令的名字,调用对应的可执行程序

  2. Linux快捷键

     history 查看历史命令
    ctrl + p 在历史的命令记录里向上滚动
    ctrl + n 在历史的命令记录里向下滚动
    ctrl + b 光标向前移动
    ctrl + f 光标向后移动
    ctrl + a 光标直接到命令行首
    ctrl + e 光标直接到命令行末
    backspace/ctrl + h删除光标前面的字符
    ctrl + d删除光标后面的字符
    ctrl + u删除光标前面的所有字符
    table键补全或者提示命令
    ls 表示查看(如果后面不跟路径,就表示查看当前的目录,如果后面跟着路径表示查看该路径下的目录)
    clear 清屏
    pwd(print working directory)显示当前目录的绝对路径
  3. Linux系统的目录结构 Linux系统下没有盘符 / 表示Linux下的根目录

    1. /bin: bin是Binary的缩写,里面存放的是最经常使用的命令,每一个命令代表一个可执行程序,在terminal里面输入命令然后在在配置环境变量,命令就会找到bin目录,然后执行相对应的程序
    2. /boot: 这里存放的是启动Linux时使用的一些文件,包括一些连接文件及镜像文件
    3. /dev: dev是Device(设备)的缩写,该目录下存放的是Linux的外部设备,在linux中访问设别和访问文件的方式是相同的
    4. /etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录
    5. /home: 用户的主目录,在linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
    6. /lib: 这个目录存放着最基本的动态连接共享库,其作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
    7. /lost-found: 这个目录一般下是空的,当用户非法关机后,这里面就存放了一些文件
    8. /media linux系统自动识别一些设备,例如,U盘,光驱等,当自动识别后,linux会把识别的设别挂载到这个目录下
    9. /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了
    10. /opt 这是给主机额外安装软件所摆放的目录,比如安装一个oracle数据库的时候就可以放到这个目录下,默认是空的
    11. /proc 这个目录是一个虚拟的目录,他是系统内存的映射,我们可以直接访问这个目录来获取系统信息 这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏弊主机的ping命令,使别人无法ping你的机器 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
    12. /root 该目录为系统管理员,也称为超级权限者的用户的主目录
    13. /sbin S就是super user的意思,这里存放的使系统管理员使用的系统管理程序
    14. /tmp 这个目录是用来存放一些临时的文件
    15. /usr(user software resourse) 这是一个非常重要的目录,用户的很多应用程序都放在这个目下,类似于windows下的program files目录
  4. 用户目录

    1. 绝对路径 从根目录开始写/home/itcast/aa

    2. 相对路径 相对于当前的工作目录而言

       . 代表当前目录
      .. 代表当前目录的上一级
      - 在临近路径的两个目录直接切换 cd -
    3. sjq@ubuntu sjq:当前登陆的用户 @:at 在 Ubuntu:主机名 ~用户的家目录(宿主目录) $当前用户为普通用户 #超级用户 -- root

  5. 文件和目录操作

     文件或目录颜色一般情况
    白色:普通文件
    蓝色:目录
    绿色:可执行文件
    红色:压缩文件
    青色:链接文件(相当于windows下的快捷方式)
    黄色:设备文件(block块、char字符、fifo管道)
    灰色:其他文件
    1. 查看目录
      1. tree
      2. ls ls -a查看目录下的全部内容 ls -l列出来的是详细信息 ls -al列出全部内容的详细信息


    2. 在目录间切换 cd + 目录 切换回主目录三种方式:

       cd /home/aa
      cd ~
      cd

      查看当前所在目录 pwd

    3. 创建目录 创建单一目录:mkdir + dirname 创建复合目录:mkdir + dir/dir/dir1 -p
    4. 删除目录

       删除空目录
      rmdir + 目录名
      删除非空目录
      rm + 目录名 + -r
      rm + 目录名 + -ri(i代表提示)
    5. 创建文件
      touch + 文件名(文件不存在,创建文件,文件存在,更新文件时间)
    6. 删除文件
      rm + 文件名
    7. 拷贝文件或目录
      拷贝文件

       cp + 文件名 + 目标文件
      如果目标文件不存在就创建一个新的文件
      如果目标文件存在就覆盖原来的文件

      拷贝目录

       cp + 目录名 + 目标目录名 + -r
      如果目标目录名不存在,则要创建目标目录名,并进行拷贝
      如果目标目录名存在,则要将目录名拷贝到目标目录名下
    8. 看文件中的内容

      1. cat + 文件名(将文件中的内容输出到终端)
      2. more + 文件名(只能向后翻,不能向前翻)
      3. less + 文件名(ctrl + p向前翻页、ctrl +n向后翻页、q退出浏览、回车显示下一行、空格显示下一页)
      4. head + 文件名
      5. tail + 文件名
    9. 文件重命名 mv + 源文件名 + 要更改的文件名

    10. 将文件移动到目录下 mv + 文件名 + 目录名

    11. 创建软链接(创建快捷方式 文件和目录) ln -s + 路径(绝对) + 快捷方式的名字

    12. 创建硬链接(进行文件备份) 直接链接的是硬盘的上inode结点 不能对目录创建硬链接 ln + 文件名 + 硬链接的名字 硬链接不占用空间 每次创建一个硬链接,次数加一 Linux文件系统的存储单位是块 inode -- i结点 保存了一些文件信息 通过inode找到对应的文件


  6. 文件或目录的属性

    1. wc 获取文本文件的信息
    2. od 查看二进制文件
      1. -t 指定数据的显示格式     
      2. 参数
        1. c ASCII字符
        2. D 有符号十进制数
        3. F 浮点数
        4. O 八进制数
        5. U 无符号十进制数
        6. X 十六进制数
    3. du 查看当前目录中所有文件的大小 命令:du -h
    4. df 查看磁盘的使用情况 命令:df -h

      w hich + 命令(查看所在的命令是在哪个目录下,只能查找外部的命令
  7. 文件权限、用户、用户组

    1. 查看当前登陆用户 whoami
    2. 修改文件权限
      1. 文字设定法:chmod [who] [+|-|=] [mode] 文件名 who(默认是所有人):

         文件所有者:u
        文件所属组:g
        其他人:o
        所有人:a

        +:添加权限 -:减少权限 =:覆盖原来的权限 mode(权限):

         r:读
        w:写
        x:执行
      2. 数字设定法:

         -:没有权限
        R:4
        W:2
        X:1
        所有权限7
        765
        7 --rwx --文件所有者
        6 --rw --文件所有组
        5 --rx -- 其他人
        减权限:chmod -001 temp(给其他人减了执行权限)
    3. 修改文件的所有者和所属组
      1. 修改文件的所有者:chown 所有者的名字 文件名(如果没有权限的话,加sudo接用超级用户的权限)
      2. sudo chown 文件所有者:文件所属组 文件名
      3. 修改文件所属组:sudo chgrp 文件所属组 文件名
      4. 对于目录来说必须有执行权限,否则无法访问目录里面的内容
  8. 文件的查找和检索

    1. 按文件的属性查找
      1. 按文件名查找
        1. Find + 查找目录 + -name + 文件的名字(文件名字用引号括起来)
        2. 文件的名字可以用通配符(*匹配所有的、?匹配一个字符)
      2. 按文件大小
        1. Find + 查找目录 + -size + 文件的大小(+大于 -小于)
        2. Sudo find ~ -size +10M -size -100M(在家目录下查找大于10M小于100M的文件)
      3. 按文件类型
        1. Find + 文件查找目录 + -type + d/f/b/c/s/p/l
        2. 创建管道:mkfifo 文件名
    2. 按文件内容查找 Grep -r + "查找的内容" + 查找的路径
  9. 软件的安装和卸载

    1. 在线安装 apt-get:

       安装:sudo apt-get install tree  在线下载安装
      移除:sudo apt-get remove tree
      更新:sudo apt-get update --更新软件列表
      清理所有软件安装包:sudo apt-get clean(实际清理的是/var/jcache/apt/archives目录下的.deb文件)

      aptitude:

       安装:sudo aptitude install tree
      重新安装:sudo aptitude reinstall tree
      更新:sudo apt-get update
      移除:sudo aptitude remove tree
      显示状态:sudo aptitude show tree
    2. deb包安装:

       安装:sudo dpkg -i xxx.deb
      删除:sudo dpkg -r xxx
    3. 源码安装

      1. 解压缩源代码包
      2. 进入到安装目录:cd dir
      3. 检测文件是否缺失,创建makefile,检测编译环境
      4. 编译源码,生成库和可执行程序:make
      5. 把库和可执行程序,安装到系统目录下:sudo make install
      6. 删除和卸载软件:sudo make distclean
      7. 上述安装步骤并不是绝对的,应该先查看附带的readme文件