zoukankan      html  css  js  c++  java
  • 01-Linux命令基础-第01天(命令基础,软件安装与卸载、磁盘管理)

    01-   Linux初步

    最早一直是单道程序设计模型的操作系统

    69年贝尔实验室决定开发多道程序设计模型的操作系统 Multics计划 (失败了)

    x86 IA(Intel Architecture) 架构 没法搭建Unix系统

    但是Unix家族分支中有Solaris提供了Solaris for x86

    Ubuntu:

    4月通常为稳定版 10月通常为beta测试版

    单数版本官方一般是短期支持 (支持一年

    例:

    13.10版  

    13 是短期支持版 10是测试版

    02-根目录下重要子目录

    打开终端

    bin : binary缩写

    /bin  ls

    绿色代表可执行文件

    /boot ls

    开机所需要的文件

    /cdrom ..不说了

    /dev  存放的是设备文件

    linux: 所见皆文件

    cd dev/input

    sudo cat mice

    鼠标设备被对应到这个文件上了

    每次动鼠标的时候会往这个文件进行写入 确定从哪个像素点挪到哪个像素点

    所以鼠标一动 这个就动

    乱码的原因是因为里面是二进制文件

    /etc ls

    保存跟操作系统息息相关重要的配置文件以及用户名和密码相关的信息

    03      shell解析器和命令补齐

    ctrl + alt + t 直接打开终端

    sudo cat shadow:

    (/etc)

    (最后一行保存了加密过后的用户密码)

    /home 存放操作系统的用户

    /lib 存放库文件

    比如写c语言用到的标准C库 stdio.h(libc.so 的一部分)

    libc.so.6 包括stdio.h

    ctrl+ shift + + 放大终端字体

    ctrl + -       缩小终端字体

    /media 扩展目录

    存放(第三方磁盘)u盘相关

    /mnt

    操作系统用于提供手动挂载的位置

    比如做驱动开发 会连一个多媒体卡

    卡会连操作系统中 默认会连到media下

    如果手动挂载可以挂到mnt上

    U盘同理

    作用都是挂在一个盘

    /opt /proc 和操作系统进程相关 暂时先不介绍

    /root 一个Unix系统默认会有两个用户 一个是root(管理员) 另一个是你自己

    /usr 目录 unix software resource (unix 软件资源管理包)

     

    /var 目录 操作系统提供的用户用来存储文件的目录

             log backup 缓存 等等…

    shell 是一个命令解释器 根据输入的命令执行相应的命令

    unix开发以后有个叫伯恩的人开发了个命令解析器叫shell

    后来到linux了 伯恩又给linux开发了个shell叫 Bourne-Again-Shell (Bash)

    终端: 输入 输出设备的总称

    终端: (虚拟终端) 所有输入输出设备的总称

    shell: 命令解析器

    bash: borne again shell 命令解析器

    ctrl+ p

    ctrl+ n

    ctrl+ b

    ctrl + f

    ctrl+ a

    ctrl + e

    ctrl + u 全部删除

    ctrl+ h 向前删除

    ctrl + d 向后删除

    ls -l

    04-软硬链接

    cat

    more ( space翻一屏 回车翻一行) 不能往前滚

    less ( 可以使用↑ ↓实现前后滚动)

    head

    tail

    ln

     

    软连接: (快捷方式)

    touch file

    ln –s file file.s 

    如果这样写 那么file.s就指向了相对目录下的file

    如果将file.s移动到别的文件夹 就不能访问file了

    ln –s /file file.s

    通过写一个相对路径的

    即使将file.s移动到别的目录下 也可以访问

    linux下区分文件是靠文件类型 不是靠扩展名 所以起名file.s或file.soft 都行吧

    注意: 创建软连接一定要用绝对路径的方式

          创建文件相关的后缀名没有严格要求 (touch a.b.c.d)

    创建了一个软连接: 注意查看两个文件的权限 不同。 但是实际读取的时候还是a.b.c.d得权限, 只是访问软连接得权限谁都有。

    硬链接:

    看一下硬链接:

    ls file file.hard

    发现除了文件名不一样 包括权限其他都完全一样

    对file文件进行修改 发现两个文件能够做到同步 内部变化也是完全一样得

    (修改file.hard 也是同步更新)

    再新建一个文件ln file file.h

    查看这三个文件 进行对比 发现其他都一样 但是硬链接记数不一样了

    (权限部分后面的数字变成4了… 这里本来应该是3 自己写的时候 在别的地方多创建了一个)

    思考:

    硬链接技术的作用?

    了解硬链接的原理:

    windows下面是没有硬链接的

    如果让你实现硬链接你要怎么弄 实现文件完全同步

    指针?(指针是内存上的概念、)

    它所采用的方式是完全一致的,只不过这个东西不叫指针,它叫inode

    linux系统中所有的文件都有一个唯一标识该文件的inode号

    既然硬链接的内容可以同步更新,所以它们应该有相同的inode号

    stat file

    stat file.hard

    vi file.h 看起来是操作file.h 但是操作系统认为是操作inode为143692的文件

    如果删除文件呢?

    rm file 会把 file删掉 会把file.hard删除 会把file.hard删除掉?

    rm file 只会把file删除掉

    file.hard和file.h没有变 硬链接记数减少

    硬链接记数的作用:

    硬链接记数用来删除 执行一次rm会把硬链接减少 只有硬链接记数为0的时候才是把文件真正删除掉

    inode是在linux系统中唯一标识一个文件的方法

    05-文件目录操作其他命令

    sudo apt-get install tree

    tree 命令:

    用树的结构展示当前目录

    wc命令: (word count)

    行数 字数 字节数 ( 对当前文件进行统计)

    行数

    字数:

    小字:一个字符

    大字:一个字被定义为由空白、跳格或换行字符分隔的字符串

    wc命令中的字是指大字。

    字节数

    od命令

    ( acronym for "octal dump" )

    用它去查看一些进制文件

    gcc main.c

    od –tcx a.out

    将ascii字符 翻译为

    od –tco a.out

    -t select output format or formats

    -c same as –t c select printable characters or backslash escapes

    -x same as –t x2 select hexadecimal 2-byte units

    作用: 嵌入式开发 反汇编..

    du、df命令

    统计磁盘文件使用的存储情况

    du:   disk use

    du –h (human readable)

    df :   disk free

    查看磁盘空间情况

    df –h

    06-文件属性修改

    whoami

    chmod

    文字设定法

    数字设定法

    文字设定法

    chmod u+x a.b.c.d

    chmod g-w a.b.c.d

    chmod o+wx a.b.c.d

    (user/group/other)

    //想设置成 r-xrw---x

    chmod u-w,g+w,o-rw a.b.c.d

    chmod u=rw,g=rw,o=rwx a.b.c.d

    数字设定法:

    rwx     rwx     rwx  二进制

    4 2 1    4 2 1    421

    chmod 775 a.b.c.d

    07-修改文件所有者_所属组

    chown

    ll test.file

    sudo chown nobody test.file

    ll test.file

    (nobody是操作系统自带的用户)

    sudo chgrp nogroup test.file

    ll test.file

    (nogroup 是操作系统自带的组)

    添加用户 sudo adduser zhangsan

    自己添加的新用户zhangsan 无法使用sudo命令:

    vi /etc/passwd:

    1001 是用户的uid, 组也有一个uid是1001

    添加组

    sudo addgroup g5

    cat /etc/group

    删除以后查看test.file的所有者权限

    变成1001了 zhangsan已经没了 但是刚才张三的1001依然存在

    这个文件属于1001用户

    sudo delgroup g5 然后看一下效果:

    用户组是1002了

    08-查找和检索命令

    用一步来修改用户名和组

    sudo chown itcast:nogroup file1

    find命令:

    找一下sudoers:

    sudo find / -name “sudoers”

    vi /etc/sudoers

    *是一个通配符 找当前目录下以file开头的文件

    ? 是匹配一个任意字符

    对查找的结果集执行-exec ls –l

    ; 是转义分号 表示结束标记

    (在删除的时候询问 -ok)

    查找套接字:

    sudo find / -type ‘s’

    对于普通文件 用f描述 不用 -

    查找文件大小

    find / -size -100k

    find / -size +100M

    find / -size +10k –size -20k

    -size这个参数比较奇怪

    M 和 G 必须是大写的

    k必须是小写的

    c代表字节

    b代表512字节 一个扇区

     一个磁盘盘块的大小

    一个扇区512byte

    如果我写了一个hello world 40byte 也至少要占用一个扇区

    grep:

    sudo grep –r “lisi” /etc

    -r 递归

    (非常实用)

    xargs:

     find . –type f | xargs file

    和exec的区别:

    exec会把find查询的结果一次性导入到{} 大括号中

    如果数量太大 系统效率就非常低

    xargs 分批操作的

    注意 如果不加xargs 前面的find…就失效了 最后就相当于就单单执行了 ls -l

    find /usr –name “tmp*” | xargs ls –l

    file命令:

    生成一个带空格的文件:

    touch file test

    find ./ -name “*file*”

    可以找到

    然后 find ./ -name “*file*” | xargs ls -l

    就找不到了

    这是xargs 设计的缺陷 xargs是用换行和空格符来区分结果集的

    find ./ -name “*file*” –print0 | xargs -0 ls –l

    就找到了:

    -print0表示 输出的时候不再使用空格进行分隔了 位置替换成null

    -0 表示输入以null分隔

    09-软件安装

     

    1.网络安装

    sudo apt-get install tree

     

    sudo apt-get update 就是把这个服务器上的列表更新到本地

    如果不更新 安装的时候可能就会提示这个软件在服务器上没有

    默认的当前机器上的这份列表跟服务器的对应不上

    sudo apt-get update 更新源

    sudo apt-get install package 安装包

    sudo apt-get remove package 删除包

    2.离线安装包

    Ubuntu是debian系列的

    所以是以.deb结尾的

    redhat不是.deb

    sudo dpkg –i xxx.deb

    sudo dpkg –r xxx.deb

    3.原码安装

    不同的软件包安装方式不一样 一般查看readme

    10-磁盘的挂载和卸载

    mount

    umount

    插上U盘

    cd /media

    查看U盘内容

    sudo umount /media/…

    卸载 会提示设备忙

    原因可能是你当前正在你挂载的这个目录及其子目录里

    (可以在其他任意目录下卸载)

    mount命令

    挂载之前我要直到磁盘盘符

    U盘一定是一个硬件

    它对到的linux系统中/dev目录下去看

    sda 第一块硬盘

    sda1 第一块硬盘的第一个分区

    一个硬盘最多允许4个主分区 剩下的都是扩展分区或者逻辑分区(一定是从5开始的)

    电脑中本来只有sda,看一下有没有sdb

    ls –l /dev/sdb*

    有sdb , 所以我的u盘应该是sdb4

    也可以用这个操作找到我的这个u盘是哪个

    sudo fdisk –l

    既然sda是我原来的硬盘 那么sdb4就是我现在的硬盘了

    下面进行手动挂载:

       可以挂载到/media 下, 也可以挂载到手动挂载的位置/mnt

    sudo mount /dev/sdb4 /mnt

    ls发现已经可以看到了

    如果看不到 指定一下编码

    sudo mount /dev/sdb1 /mnt –o utf8

    11-dd命令

    dd类似于cp 但拷贝控制更精细

    bs 一次读取的字节数 count读取的次数

    dev下有一个zero文件

    这个文件读出来的所有内容都是ascii的码0

    还有一个文件 /dev/null

       可以向文件里写内容 写进去的所有东西都会消失掉 可以无限往里写

    c开头的, 这两个都是字符设备

    创建一个20M大小的文件:

    (了解)

    所有的存储介质如果像存储必须指定文件系统(格式化)

    把文件挂载到/mnt下了 (loop加不加都无所谓)

    *

     

    然后查看一下mnt目录

    之前讲过adduser 现在讲一下useradd:

    adduser:

    useradd:

    useradd 要指定用户用户启动的位置-s

            指定用户所在的组 –g

            指定用户的目录名 –d

            指定用户是哪个用户 –m

    需要手动指定

    设置密码:

    切换用户:

  • 相关阅读:
    找出互联网符合的产品实例
    以软件周期来说明不同的测试的使用情况
    scrapy多个page爬取, post请求, 通过爬到的URL继续发请求爬页面
    Scrapy 安装, 基础使用, 持久化存储
    Linux nginx+uWSGI+django+virtualenv+supervisor发布web服务器
    Linux Nginx
    Linux virtualenv, virtualenvwrapper, pip freeze
    Linux Python安装
    Redis, Python操作Redis, Linux操作Redis, Redis命令, Redis发布订阅, Redis持久化, Redis主从同步
    爬虫 selenium
  • 原文地址:https://www.cnblogs.com/eret9616/p/10774888.html
Copyright © 2011-2022 走看看