linux学习笔记002

    xiaoxiao2021-03-25  80

    Linux基础知识

    交互的两种Shell:

    GUI: Graphic User Interface 图像用户桌面:Windows;X-Window linux的桌面三个主机显示器分(x是图形显示协议)Gnome  ,KDE , Xface。

    CLI: Command Line Interface 命令行界面, sh ,bash, csh ,ksh ,zsh, tcsh

     bell实验室研发的shell

     

    IDE:Integrated Development Environment 开发集成环境

     

    Windows上动态库以dll(Dynamic LinkLibrary) linux上的动态共享文件以so结尾

     

    login:

     用户名:用户ID 计算机能处理的最快的是数字

     

    认证机制:Authentication

    授权:Authorization

    审计:Audition (日志)

     

    prompt,命令提示符:

    命令:

    magic number: 魔数 标志二进制程序的执行格式,执行入口

    又名shebang

    #!/bin/bash

    # command options...  arguments...

    选项:

     短选项

     长选项

    参数:

    文件系统层级标准 FHS

    文件名不是文件存放的数据

    linux文件管理命令

    list: ls

    列出,列表

    目录:是一个特殊的文件,路径映射

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

    文件系统:file system

    列出指定路径下的文件

     

    目录:working directory, current directory

    pwd: Printing Working directory

    ls

     -l:长格式

      文件类型:

       -:普通文件 (f)

       d:目录文件

       b:块设备文件 (block)

       c:字符设备文件 (character)dev目录下

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

       p:命令管道文件(pipe)

       s:套接字文件(socket)

      文件权限:9位,每3位一组,每一组:rwx(读,写,执行), r--

      文件硬链接的次数

      文件的属主(owner)

      文件的属组(group)

      文件大小(size),单位是字节

      时间戳(timestamp):最近一次被修改的时间

       访问:access

       修改:modify,文件内容发生了改变

       改变:change,metadata,元数据发生了改变

     -h:做单位转换humanread 默认是k

     -a: 显示以.开头的隐藏文件

      . 表示当前目录

      .. 表示父目录

     -A 显示出除开. ..目录

     -d: 显示目录自身属性 ls-ld /root 显示root自身属性

     -i:index node, inode 文件索引节点号 ls -i

     -r: 逆序显示 ls -r

     -R: 递归(recursive)显示

     

    cd: change directory

     家目录=主目录, homedirectory

     cd~USERNAME: 进入指定用户的家目录 cd ~hadoop

     cd-:在当前目录和前一次所在的目录之间来回切换

    hash看缓存

    命令类型:

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

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

     

    环境变量:命名的内存空间

     变量赋值

     NAME=Jerry

     

     PATH: 使用冒号分隔的路径

    在缓存中找命令,时间复杂度是 O(1)的。

    printenv 打印环境变量

    type: 显示指定属于哪种类型有内部命令和外部命令之分

    ntp 时间服务器

    命令手册:manual

    man COMMAND

    whatis COMMAND 查看命令出现章节

    export LANG=en

    man分章节:

    1:用户命令(/bin, /usr/bin,/usr/local/bin)    所有用户都可以使用的命令

    2:系统调用

    3:库用户    库调用

    4:特殊文件(设备文件) 设备文件都是特殊文件  解释特殊文件 例子:man 4  tty

    5:文件格式(配置文件的语法)  man 5 passwd

    6:游戏

    7:杂项(Miscellaneous)man 7 glob

    8: 管理命令(/sbin,/usr/sbin, /usr/local/sbin) 只有管理员可以用,会改变硬件属性

    <>:必选

    []:可选

    ...:可以出现多次

    |:多选一

    {}:分组

    MAN:

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

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

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

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

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

     BUGS:

     EXAMPLES:使用示例

     SEEALSO:另外参照

     

    翻屏:

     向后翻一屏:SPACE

     向前翻一屏:bbefore

     向后翻一行:ENTER

     向前翻一行:k

    查找:

    /KEYWORD: 向后

    n: 下一个

    N:前一个

    ?KEYWORD:向前

    n: 下一个

    N:前一个

    q: 退出

     

    在线文档:

    info COMMAND

     

    文档目录:/usr/share/doc

     

     man时间管理例子

    date:时间管理 显示时间

    date 显示时间

    date +%D 月日年 05/19/17

    date +%y

    date “this year is %y.%nToday is %d.” // %n换行%d是日期

    date +%T 小时分钟秒=date +%H:%M:%S

    date +%s 是1970年1月1号到当地的时间,通用的时间

    改变时间 date 05191406    //5月19号14点06分

    再用clock看时间并没有改动

    hwclock –w 改硬件时间,根据系统时间

    hwclock –s 改系统时间,根据硬件时间

     

    Linux: rtc real time clock 硬件时钟,开机从硬件读取时间

     硬件时钟 hwclockclock

     系统时钟 data

     

    获得命令的使用帮助:

    内部命令:

     helpCOMMAND

    外部命令:

     COMMAND --help

    man手册练习:

    cal: calendar

    cal 2013

    cal

    cal 12 2013

    练习:

    1、echo是内部命令还是外部命令?

    type echo

    -n 吃掉换号

    -e 启用逃逸字符

    特殊字符\n \

    2、其作用?

    显示一行文本

    3、如何显示“The year is2013. Today is 26.”为两行?

    echo -e The year is 2013.\n Today is 26.

    转义,逃逸

    练习:

    1、printf是内部命令还是外部命令?

    内部命令

    type printf

    2、其作用?

    3、如何显示“The year is2013. Today is 26.”为两行?

    printf 默认不换行用\n 换行

    file命令及其用法。

    Windows: PE 

    Linux: ELF 可执行2进制文件格式

     

    文件系统:

    rootfs: 根文件系统

    FHS:Linux

    /boot: 系统启动相关的文件,如内核、initrd,以及grub(bootloader)

    /dev: 设备文件

     设备文件:

      块设备:随机访问,数据块

      字符设备:线性访问,按字符为单位

      设备号:主设备号(major)和次设备号(minor)

    /etc:配置文件

    /home:用户的家目录,每一个用户的家目录通常默认为/home/USERNAME

    /root:管理员的家目录;

    /lib:库文件

     静态库,  .a

     动态库, .dll,.so (shared object) file可以查看文件格式(LSB shared obeject  -----LSBexecutable)

     /lib/modules:内核模块文件

    /media:挂载点目录,移动设备

    比如说光盘在/dev/cdrom下只是文件的访问入口不能访问文件,必须关联到文件系统的目录上来,才能被访问到

    /mnt:挂载点目录,额外的临时文件系统

    /opt:可选目录,第三方程序的安装目录

    /proc:伪文件系统,内核映射文件

    /sys:伪文件系统,跟硬件设备相关的属性映射文件

    /tmp:临时文件, /var/tmp

    /var:可变化的文件

    /bin: 可执行文件, 用户命令  系统自身启动命令

    /sbin:管理命令

    /usr:shared, read-only 系统启动后自身基本功能的命令

     /usr/bin

     /usr/sbin

     /usr/lib 存放/usr/bin下/usr/sbin下非公共lib库的内容

     

    /usr/local: 第三方软件

     /usr/local/bin

     /usr/local/sbin

     /usr/local/lib

    命名规则:

    1、长度不能超过255个字符;

    2、不能使用/当文件名

    3、严格区分大小写

    相对路径:                                                              

    绝对路径:

     

    文件管理

     

    目录管理

    ls

    cd

    pwd

    mkdir:创建空目录

     -p:parent 一次创建多个目录

     -v:verbose 显示详情

    /root/x/y/z

    /mnt/test/x/m,y

    mkdir -pv /mnt/test/x/m /mnt/test/y

    mkdir -pv /mnt/test/{x/m,y}

    ~USERNAME

    命令行展开:

    /mnt/test2/

    a_b, a_c, d_b, d_c

    (a+d)(b+c)=ab+ac+db+dc

    {a,d}_{b,c}

     

    # tree:查看目录树

    删除目录:rmdir (remove directory)

     删除空目录

     -p一条目录

     

    文件创建和删除

    # touch

     -a  只修改访问时间 默认改为当前的时间

     -m  只修改存取时间 默认改为当前的时间

     -t 用指定的时间值 time 作为指定文件 file 相应时间戳记的新值.[CC]YYMMDDhhmm[.ss]

     -c 如果要修改的文件不存在,此选项使touch不去创建它

    touch –m –t201705191417 a 改a文件的修改时间

     

    # stat 查看文件详情

    创建文件,可以使用文件编辑器

    ASCII:

    128不同的字符:

     二进制:

     2^6=0,63

     2^7=0,127

      0000000 - 12017/2/1211 1111

    ASCII: 

    0000 1001: t

    2^16: 65536

    标准:GB18030, GBK, GB2312,Unicode

    0000 1001 0000 1110:上, 卫

    nano

    删除文件:rm

     -i 交互式

     -f 强行删

     -r 删目录

     

    rm -rf /

    \rm 使用命令本身 type rm 查看命令类型或者别名的意思

    创建目录练习:

    1、创建目录

    (1)在/mnt下创建boot和sysroot;

    mkdir /mnt{boot,sysroot}

    (2)在/mnt/boot下创建grub;

    mkdir /mnt/grub

    (3)在/mnt/sysroot下创建proc, sys,bin, sbin, lib, usr, var, etc, dev, home, root, tmp

    mkdir /mnt/sysroot{proc, sys, bin, sbin,lib, usr, var, etc, dev, home, root, tmp}

     a)在/mnt/sysroot/usr下创建bin, sbin,lib

    mkdir /mnt/sysroot/usr{bin, sbin, lib}

     b)在/mnt/sysroot/lib下创建modules

    mkdir /mnt/sysroot/lib/modules

     c)在/mnt/sysroot/var下创建run, log,lock

    mkdir /mnt/sysroot/var{run, log, lock}

     d)在/mnt/sysroot/etc下创建init.d

    mkdir /mnt/sysroot/etc/init.d

     

    复制和移动文件cp –r z复制文件到已经存在的文件的时候,出现红色闪烁错误

    cp: copy cp是别名

    cp SRC DEST 普通不复杂目录 目标不存在就重命名,存在就覆盖

     -r R递归复制目录

     -i 交互式

     -f 强行复制

     -p 保留属性列表 原有的属主属组和时间(本来是谁复制谁是属组属主)

     -a:归档复制,常用于备份=-dR和-p

     -L 默认复制链接的时候是复制链接的文件

     -P复制链接的时候是负责链接本身 同-d (no de)

     cp复制链接是复制文件默认

    cp file1 file2 file3

    一个文件到一个文件

    多个文件到一个目录

    cp /etc/{passwd,inittab,rc.d/rc.sysinit}/tmp/

    mv: move 移动目录的时候不用加其他的选项

    移动文件

     

    mv SRC DEST

    mv -t DEST SRC

     

    install 复制文件和指定属性 安装只讲了复制文件 同cp

     -dDIRECOTRY ... :创建目录 install -d /etc/{passwd,inittab,rc.d/rc.sysinit} 创建多个目录

     SRCDEST 复制文件复制过去有执行权限

     -m 指定权限 默认复制过去有执行权限

    install -t DIRECTORY SRC... 多个文件复制到一个目录

    install -m 制定权限

    复制过去有执行权限

    只对文件操作

    目录管理练习:

    1、创建目录/backup

    # mkdir -v /backup

    2、复制目录/etc至/backup目录中,并重命名为“etc-当前日期”,如etc-2013-02-26;要求保留文件原来的属性,保持链接文件;

    cp –r /etc /backup/e

     -r 递归复制

     -p 保持文件的属性

     -d 复制链接的时候保持文件的链接

     

    # cp -a /etc /backup/etc-2013-02-28

    命令替换

     

    3、复制文件/etc/inittab为/tmp/inittab.new,并删除inittab.new文件的后两行;

    # cp /etc/inittab  /tmp/inittab.new

    # nano /tmp/inittab.new

    du、read练习:

    1、思考:ls命令是否可以显示某目录的整体大小,即包括其内部的所有文件的整体大小?

    2、通过帮助手册,学习使用du命令;

    # du

     -s 显示目录整体的大小

     -hhumanreadable

    3、通过帮助,学习read命令;

    read(选项)(参数)

    -p:指定读取值时的提示符;

    -t:指定读取值时等待的时间(秒)。

    read 1987name   #等待读取输入,直到回车后表示输入完毕,并将输入赋值给变量answer HelloWorld         #控制台输入Hello

    echo $1987name  #打印变量 HelloWorld

    read -p "输入密码:"-s pwd

    echo

    echo password read, is "$pwd"

     

    变量:内存空间,有名称

    变量赋值:

    变量替换

    其他作业:

    描述GPL, BSD, Apache三个开源协定的大体联系及区别。

    http://blog.csdn.net/abware/article/details/20997307

     

    自由软件

    开源协定,版权描述

     

    如何获取Linux当前最新的内核版本号?

     www.kernel.org

    列出你所了解的Linux发行版,并说明其跟Linux内核的关系。

     Linux, GNU: GNU/Linux, 源代码

     发行版:Fedora,RedHat(CentOS), SUSE, Debian(Ubuntu, Mint), Gentoo(发行版,小型编译),LFS(Linux From Scratch 从头开始编译)

    转载请注明原文地址: https://ju.6miu.com/read-39847.html

    最新回复(0)