• 博客首发


    大学毕业以后偶然之间我接触到了linux,通过一段时间的自习对linux有了初步的了解以后便对linux产生了兴趣。与此同时也萌生了系统学习linux的想法。后来通过朋友的介绍我来到了马哥教育。
    今天距离我来到马哥教育开课已经过去了一周时间,来到马哥教育以后我最大的感想就是意外。首先就是这里的学习氛围。感觉来到这儿的同学都太拼了,我过来以后基本上每天睡觉时间没有超过七个小时的,每天除了一些基本的日常其他时间都在班里对着屏幕。可是即便这样还是有大把同学平时走的比我晚,来的比我早,佩服这些同学的同时同时也警示了我,本来基础就相比别人比较差再不努力好好学肯定是不能学好的啊。其次,令我意外的是我在这为期四个半月学习当中所需要掌握的知识量。开课一周以后我们正式上了三天的课,听老师介绍过课程以后才发现课程好多啊,并且老师每节课讲的内容也非常大量。突然感觉有点压力了,害怕自己基础差一时间接受不了这么多知识。
    虽然有压力但是我还是有信心学好的,有压力属于正常现象啊。第一周课程只是学习了一些关于linux的基础知识,内容不多加上之前没有写过博客所以先写这样一片练练手,同时再附上我这周课堂上使用MARKDOWN所记下的笔记啦。因为第一次接触博客而且之前使用MARKDOW也不够熟练所以这篇博客的质量不好。但是我会尽快学习。

    一、计算机基础知识概览

    冯诺依曼体系:

    冯诺依曼体系结构:1946年数学家冯诺依曼提出运算器、控制器、存储器、输入设备、输出设备

    机架式服务器 Rack 几种服务器当中最普遍的。

    • 精简指令集

    • 功能单一 稳定

    • 复杂指令集

    • 功能丰富 但是不稳定

    • 主板 内存 memory

    • 内存介于CPU和外部内存之间

    • 内存断电之后不保

    • dd if=/dve/zero of=f1 bs=1M count=500

    • linux 通过文件的magic 来识别文件的格式。

    分区方案
    /boot 1G exit
    / 50G
    /app 50G
    /swap 虚拟内存 2G
    /dve/sda4 99G
    /dev/sda5 10G

    二、Linux入门

    用户登录:

    linnux中的管理员叫root,UID是0,windows中管理员是administrater,UID是500

    terminal:终端

    shell :

    是一个翻译器
    系统默认是ls /bin/bash
    ​ /bin/bash 不是一个文件是一个系统程序

    别名定义:

    alias :显示系统所有定义的别名

      alias cmd="cmd alias"
      unalias [-a] name 取消别名 
      -a 取消所有别名
       如果别名与原命令相同执行原命令:
       “COMMAND”
       'COMMAND'
       /PATH/COMMAND: 外部命令
    

    优先级:alias>内存>hash>PATH外部路径

    '别名命令' 加单引号 或者加 暂时禁用别名

    多条命令一起执行中间加;

    定义别名的新方法:

    hash -p /path/to/file name
    

    命令格式:

    多条命令一起执行中间加 ;

    一个命令可以用分成多行

    简单命令:

    date:显示系统时间

    date -u 查看零时区时间
    clock查看硬件时间

    hwclock,clock:显示硬件时间

       -s,以硬件时间为准,校正系统时间
    
      -w,以系统时间为准,校正硬件时间
    
    统一参考系统时间:ntpdate 172.18.0.1
    [root@CentOS6 ~]#ntpdate 172.18.0.1
    17 Jul 09:35:29 ntpdate[3120]: step time server 172.18.0.1 offset 31.434409 sec
    查看时区:
    [root@CentOS6 ~]#ll /etc/localtime 
    -rw-r--r--. 6 root root 388 Dec  1  2016 /etc/localtime
    
    调整时区:
    [root@CentOS6 ~]#timedatectl set-timezone Asia/Shanghai
    查看时区:
    [root@CentOS6 ~]#timedatectl list-timezone Asia/Shanghai
    查看日历:
    [root@CentOS6 ~]#cal
          July 2017     
    Su Mo Tu We Th Fr Sa
                       1
     2  3  4  5  6  7  8
     9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31
    

    定时关机、重启:

    [root@CentOS6 ~]#s hutdown -r +5 'systom will reboot'
    
    Broadcast message from root@CentOS6.Ronaldo
    	(/dev/pts/0) at 9:49 ...
    
    The system is going down for reboot in 5 minutes!
    systom will reboot 
    

    安装系统软件:

    [root@CentOS6 Packages]#rpm -ivh screen-4.0.3-19.el6.x86_64.rpm 
    warning: screen-4.0.3-19.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
    Preparing...                ########################################### [100%]
    	package screen-4.0.3-19.el6.x86_64 is already installed
    

    有时候会出现文件的依赖,就换图形界面安装。

    screen:

    会话命令 两个人登录同一台机器同一个用户

    screen -S 会话名称 创建会话

    screen -x 加入会话
    ctrl+a+d 剥离会话
    screen -r 恢复会话
    exit 解除会话
    screen -ls 查看所有会话

    输入screen命令 再执行命令 不怕断网

    echo:

    双引号 单引号 反响单引号的区别

    [root@CentOS6 ~]#echo $USER
    root
    [root@CentOS6 ~]#echo "echo $UID"
    echo 0
    [root@CentOS6 ~]#echo 'echo $UID'
    echo $UID
    [root@CentOS6 ~]#echo `echo $UID`
    0
    

    反向双引号的用法=$()的用法
    `>">' 单引号最傻 反向双引号最聪明

    反向单引号的命令调用:

    [root@CentOS6 ~]#> `whoami`.log;ls
    aaa.txt          Downloads           Music     Templates
    anaconda-ks.cfg  f1                  Pictures  tr
    Desktop          install.log         Public    Videos
    Documents        install.log.syslog  root.log  windowfile.txt
    

    批量创建文件:

    [root@CentOS6 ~]#touch /app/{1..10}.log
    [root@CentOS6 ~]#cd /app/
    [root@CentOS6 app]#ls 
    10.log  2.log  4.log  6.log  8.log  linkfile
    1.log   3.log  5.log  7.log  9.log  lost+found
    

    命令行历史:

    ctrl +r来在命令历史中搜索命令:

    (reverse-i-search)`': 
    

    ctrl+g:从命令历史搜索中退出。

    调用前一命令种的最后一个参数:!$

    Esc,. (点击Esc松开然后点击.键)

    Alt+.(按住Alt键的同时点击.间)

    调用参数:

    command !$:利用上一个命令的最后一个参数做cmd的参数

    command!*:利用上一个命令的所有参数做cmd的参数

    bash的快捷键:

    Ctrl +a :光标一道命令行首

    Ctrl +e:光标移到命令行尾

    Alt +f :光标向右移动一个单词未

    Alt +b :光标向左移动一个单词尾

    三、使用帮助

    获取帮助的途径:

    • whatis

    • command --help

    • man and info

    • /usr/share/doc/

    • Red Hat documentation

    • 其他网站和搜索

    命令帮助:

    内部命令:help COMMAND

    ​ man bash

    外部命令:1.COMMAND -help COMMAND -h

    ​ 2.使用手册(manual) man COMMAND

    ​ 3.信息页 info COMMAND

    ​ 4.自身帮助文档 README INSTALL Changelog

    ​ 5.程序官方文档 官方站点:Documentation

    ​ 6.发行版的官方文档

    ​ 7.Google

    man 帮助使用思路典型例题:

    ​ 在本机字符终端登录时,除显示原有信息外,再显示当前登录终端号,主机名和当前时间?

    思路:

    1.whatis keyword

    [root@CentOS6 ~]#whatis issue
    issue                (5)  - pre-login message and identification file
    

    2.man 5 issue 得出issue文件路径并查看

    [root@CentOS6 ~]#man 5 issue
    ISSUE(5)                   Linux Programmer’s Manual               ISSUE(5)
    NAME
          issue - pre-login message and identification file
    DESCRIPTION
          The  file  /etc/issue  is a text file which contains a
          message or system identification to be printed  before
          the  login  prompt.   It may contain various @char and
           char sequences, if supported by the  getty-type  pro-
           gram employed on the system.
    FILES
           /etc/issue
    SEE ALSO
           motd(5), agetty(8), mingetty(8)
    

    3.通过man -5 issue文档中的seealso查询issue的转义:

    [root@CentOS6 ~]#man 8 mingetty
    MINGETTY(8)                Linux Programmer’s Manual               MINGETTY(8)
    NAME
           mingetty - minimal getty for consoles
           ........
           ISSUE ESCAPES
           mingetty  recognizes  the  following escapes sequences
           which might be embedded in the /etc/issue file:
           d     insert current day (localtime),
           l     insert line on which mingetty is running,
           m     inserts machine architecture (uname -m),
           
         inserts machine’s network node hostname                       (uname-n),
           o     inserts domain name,
           
         inserts operating system release (uname -r),
           	     insert current time (localtime),
    

    4.编辑issue文档:

    [root@CentOS6 ~]#vim /etc/issue
    CentOS release 6.9 (Final)
    Kernel 
     on an m 	 
    
    

    5.重启注销生效.

    man 章节

    1:用户名令章节,所有用户都可以使用

    2:系统调用

    3:C库调用

    4:设备文件以及特殊文件

    5:配置文件格式以及相关参数

    6:游戏

    7:杂项

    8:系统管理员所用的管理类的命令

    9:linux内核API

    man搜索

    /keyword:以keyword指定的字符串为关键字,从当前位置向文件尾部搜索;不区分大小写;

    ​ n:下一个

    ​ N:上一个

    四、文件管理

    基本目录

    /opt: 第三方软件存放路径
    /tmp:临时文件
    /srv:服务器的系统服务数据
    /sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
    /proc:用于输出内核御锦城相关的虚拟文件系统
    /var:可变数据
    /usr:第二分层
    /run:内存 进程信息
    /boot:引导文件存放目录,内核文件(vmlinuz)、引导减速器 (bootlader,group)都存放在此目录。
    /bin:工作由用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序
    /sbin:管理类基本命令;不能关联至独立分区,OS启动即会用到的程序。
    /lib:启动程序依赖的基本共享库文件以及内核模块文件
    (lib/modules)
    /lib64:专用于x86_64系统上的辅助共享库文件存放位置
    /etc:配置文件目录
    /home/UsERNAME:用户家目录
    /root:管理员的家目录
    /media:便携式移动目录挂载点
    /mnt:临时文件挂载点

    文件名规则

    文件名最长255个字节

    包括路径在内文件名称最长4095个字节

    蓝色-----》目录
    绿色-----》可执行文件
    红色-----》压缩文件
    浅蓝的---》链接文件
    灰色-----》其他文件
    黄色------》设备文件

    ​ 出了斜杠和NUL,所有的字符都有效。但使用特殊字符的目录名和文件不推荐使用
    有些字符需要用引导号来引用他们。
    标准的Linux文件系统(如ext4),文件名称大小写敏感。

    linux 上的应用程序的组成部分:

    二进制程序:/ban, /sbin, /usr/bin, /usr/sbin,

    /usr/local/bin, /usr/local/sbin

    库文件:/lib, /lib64, /usr/lib, /usr/lib64,

    /usr/local/lib, /usr/local/lib64

    配置文件:/etc, /etcDIRECTORY, /usr/local/etc

    帮助文件:/usr/share/man, /usr/share/doc,

    /usr/local/share/man, /usr/local/share/doc

    linux下的文件类型:

    -:普通文件

    d:目录文件

    c:字符设备

    l:符号链接文件

    p:管道文件pipe

    s:套接字文件socket

    常用命令:

    ls:

    列出当前目录的内容或指定目录:

      Ls [optiaons][file_or_dirs]
    

    例子
    ls -a 包含隐藏文件
    ls -l 显示额外的信息
    la -R 目录递归通过
    ls -ld 目录和符号连接信息
    ls -1 文件分行显示
    ls -S 按从大到小排序
    ls -t 按mtime 排序
    ls -u 配合-t选项,显示并按atime从新到旧排序
    ls -U 按目录存放顺序显示
    ls -X按文件后缀排序

    pwd:

    显示当前工作目录

    显示当前shell CWD的绝对路径

    pwd:printing working dirctory

    ​ -P:显示真实物理路径

    ​ -L:显示连接路径(默认)

    rename

    批量修改文件名

    lsof

    查看目标文件正在被谁访问

    lsof /phth/to/file 
    

    删除

    rm:

    [root@CentOS6 app]#ll
    total 8
    drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
    -rw-r--r--. 1 root root   23 Jul 19 21:00 f2
    [root@CentOS6 app]#rm /app/f2
    rm: remove regular file `/app/f2'? y
    [root@CentOS6 app]#ll
    total 4
    drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
    

    >:

    **用户通过下达命令删除文件,实质上是删除了文件的元信息,在物理磁盘中文件实质上没有被立即清除,相应的空间可以被覆盖。**
    

    立即删除大批量文件,立即清空磁盘空间

    > /poth/to/file
    

    shred:

    shred   -zuvn5  /path/to/file
    

    安全删除,反复填充文件

    cd

    改变路径,使用绝对或者相对路径:

    cd /home/wang

    cd home/wang

    切换至当且用户主目录:cd

    切换至父目录:cd。。

    切换至以前的工作目录:

    相关环境变量:

    PWD: 当前目录路径

    OLDPWD:上一次目录路径

    stat

    查看文件状态。

    [root@CentOS6 ~]#stat f1
      File: `f1'
      Size: 91        	Blocks: 8          IO Block: 4096   regular file
    Device: 802h/2050d	Inode: 2098593     Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-07-16 17:00:32.779001103 +0800
    Modify: 2017-07-16 16:53:14.550997432 +0800
    Change: 2017-07-16 17:00:25.533997712 +0800
    

    三个时间戳:

    ​ access time:访问时间,atime,读取文件内容

    ​ modify time:修改时间,mtime,改变文件时间

    ​ change time:改变时间,ctime,元数据发生改变

    mv

    移动重命名文件:

    [root@CentOS6 ~]#mv f2 /app/
    [root@CentOS6 ~]#cd /app/
    [root@CentOS6 app]#ll
    total 8
    drwxr-xr-x. 3 root root 4096 Jul 19 16:38 f1
    -rw-r--r--. 1 root root   23 Jul 19 21:00 f2
    

    mkdir

    创建目录:

    参数:-p 若所要创建的新目录的上层目录不存在,则一并创建。

    后边加路径则将目录创建至目标目录,如果命令之后不指定目录则将目录创建至当前工作目录。

    例题

    1,如何创建/testdir/dir1/x, /testdir/dir1/y,

    ​ /testdir/dir1/x/a, /testdir/dir1/x/b

    ​ /testdir/dir1/y/a, /testdir/dir1/y/b

    [root@CentOS6 ~]#mkdir -p /testdir/dir1/{x,y}/{a,b}
    [root@CentOS6 ~]#tree /testdir/
    /testdir/
    └── dir1
        ├── x
        │   ├── a
        │   └── b
        └── y
            ├── a
            └── b
    

    2,如何创建/testdir/dir2/x, /testdir/dir2/y,

    ​ /testdir/dir2/x/a , /testdir/dir2/x/b

    [root@CentOS6 ~]#mkdir -p /testdir/dir2/{x/{a,b},y}
    [root@CentOS6 ~]#tree /testdir/
    /testdir/
    └── dir2
        ├── x
        │   ├── a
        │   └── b
        └── y
    
    5 directories, 0 files
    

    rmdir

    删除空目录

    -p:递归删除父空目录

    rm -r :递归删除目录树

    touch

    touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件。

    cp

    复制:

    不存在的 存在且为文件 存在且为目录
    一个文件 新建DEST并将SRC内容填充至DEST中 将SRC中的内容覆盖至DEST中 在DEST下新与源文件同名的文件,并将SRC中内容填充在新文件中
    多个文件 提示错误 提示错误 在DEST下新建于源文件同名的文件,并将原文件内容复制进新文件中
    目录-r 创建指定DEST同名目录,复制SRC目录中左右文件至DEST下 提示错误 在DEST下新建于源文件同名的目录,并将SRC中内容复制到新目录中

    例题:

    1.定义别名命令abketc,每天将/etc/目录下所有文件,备份到/testdir独立的子目录下,并要求子目录格式为backupyyyy-mm-dd,备份过程可见:

    [root@CentOS6 ~]#mkdir testdir
    [root@CentOS6 ~]#alias "baketc=cp -av /etc testdir/backup`date +%F`"[root@CentOS6 ~]#baketc 
    `/etc' -> `testdir/backup2017-07-20'
    `/etc/auto.master' -> `testdir/backup2017-07-20/auto.master'
    `/etc/ImageMagick' -> `testdir/backup2017-07-20/ImageMagick'
    `/etc/ImageMagick/mime.xml' -> `testdir/backup2017-07-20/ImageMagick/mime.xml'
    `/etc/ImageMagick/colors.xml' -> `testdir/backup2017-07-20/ImageMagick/colors.xml'
    ......
    

    2.创建/testdir/rootdir目录,并复制/root下所有文件到该目录中,要求保留原有权限。

    mkdir -p 创建不存在上层目录的目标

    cp -a 备份该文件,保留文件所有信息

    文件通配符

    • *:匹配任意字符
    • ?:匹配任意单个字符
    • [wang] :匹配括号内任何一个字符
    • [^wang] : 匹配括号内所有字符以外的字符
    • [:digit:] :任意数字,等于0-9
    • [:lower:] :任意小写字母
    • [:upper:] :任意大写字母
    • [:alpha:] :任意大小写字母

    例题

    1,显示/var目录下所有以字母l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录

    [root@CentOS6 ~]#ll -ad /var/l*[[:digit:]]*[a-z]
    -rw-r--r--. 1 root root    0 Jul 20 10:07 /var/lost1111a
    -rw-r--r--. 1 root root    0 Jul 20 10:07 /var/lost1111aaa
    -rw-r--r--. 1 root root    0 Jul 20 10:06 /var/lost1a
    drwxr-xr-x. 2 root root 4096 Jul 20 10:12 /var/lost2dircd
    

    2,显示/etc目录下以任意一位数字开头,且以非数字结尾的目录或文件

    [root@CentOS6 ~]#ls  /etc/[0-9]*[^[:digit:]]
    /etc/720day
    [root@CentOS6 ~]#ls  /etc/[0-9]*[^0-9]
    /etc/720day
    

    3,只显示/root下的隐藏文件和目录

    [root@CentOS6 ~]#ls -ad /root/.*
    /root/.              /root/.dbus            /root/.kde
    /root/..             /root/.esd_auth        /root/.lesshst
    /root/.abrt          /root/.gconf           /root/.local
    /root/.bash_history  /root/.gnome2          /root/.nautilus
    /root/.bash_logout   /root/.gnote           /root/.pulse
    /root/.bash_profile  /root/.gnupg           /root/.pulse-cookie
    /root/.bashrc        /root/.gtk-bookmarks   /root/.ssh
    /root/.cache         /root/.gvfs            /root/.tcshrc
    /root/.config        /root/.ICEauthority    /root/.viminfo
    /root/.cshrc         /root/.imsettings.log
    

    4,只显示/etc下的非隐藏目录

    [root@CentOS6 ~]#ls -d /etc/*/
    /etc/abrt/               /etc/ntp/
    /etc/acpi/               /etc/obex-data-server/
    /etc/akonadi/            /etc/oddjob/
    /etc/alsa/               /etc/oddjobd.conf.d/
    /etc/alternatives/       /etc/openldap/
    /etc/audisp/             /etc/opt/
    /etc/audit/              /etc/PackageKit/
    ...
    

    软硬链接:

    创建硬链接:

    ln filename [linkname]

    特性:

    • 不能跨分区跨设备建立
    • 不支持对目录创建
    • 创建硬链接以后连接数会加一

    为什么创建硬链接?

    作用与windows里边的快捷方式比较相似。
    对于硬链接来讲路径可以是相对路径或绝对路径。 其中相对路径可以是
    相对于当前工作目录的相对路径,也可以是相对于硬链接的相对路径。

    ln -s filename [linkname]

    软链接本质上与源文件不是同一个文件 两个文件的节点号不同
    如果删除原始文件那么软链接不能访问原因是路径被删除。
    可以跨设备、跨分区建立。
    可以对目录创建软链接。
    软链接依赖于原始文件,如果删除原始文件那么软链接不能访问。
    其中路径必须是绝对路径或者是相对于新文件名的相对目录。
    命令当中最后的文件名称之后加不加/ 在软链接当中产生差异。查看软连接时如果目标文件是一个目录,那么文件名之后加/将进入该目录当中。如果不加/则仅仅查看该目标文件。

    链接命令和复制命令不针对特殊文件(设备文件)。

    file

    file 命令查看文件类型。
    linux操作系统不依靠文件后缀分辨文件。
    file命令依靠文件的magic number来分辨文件。
    file命令实质上已经读了文件,所以文件的Atime会发生改变。

    reset 命令重置工作环境。

    五、I/O重定向和管道

    程序: 指令+数据
    读入数据:Input
    读出数据:Output
    标准输出重定向用法:

    COMMAND > /path/to/file.out
    COMMAND > /path/to/file.out
    

    错误输出重定向用法:

    COMMAND  2> /path/to/file.out
    

    STDOUT和STDERR可以被重定向到文件:
    命令 操作符号 文件名
    支持的操作符号包括:

    把 STDOUT重定向到文件
    2>把STDERR重定向到文件
    &>把所有输出重定向到文件

    >:文件内容会被覆盖
    #set  -C:禁止将内容覆盖到已有文件,
    但是可以追加强制覆盖 :>|
    # set +C允许覆盖
    >>:原有内容上追加覆盖
    

    2>:覆盖重定向错误输出数据流;
    2>>:追加重定向错误数据流;
    标准输出和错误输出各自定向至不同位置:

    COMMAND > /path/to/file.out 2> /path/to/error.out
    

    合并标准和错误输出各自为同一个数据流进行重新定向:

    COMMAND > /path/to/file. 2>&1  (顺序很正要)
    

    (): 合并多个程序的STDOUT

    (cal 2007 ; cal 2008) > all.txt (">"的优先级大于“;”)
    

    标准输入重定向用法

     COMMAND  <  /path/to/file 
    

    管道的用法:

     COMMAND1 | COMMAND2  将第一个命令的正确结果作为第二个命令的标准输入
     cmd1 |& cmd2 或者  cmd1 2>&1 | cmd2   
    

    linux用户管理

    安全3A:linux的安全模型:

    Authentication:确认当前用户身份(通过用户名配合密码)

    Authozation:授予权限

    Accouting|Audition:审计,记录监控

    用户:

    管理员:root , UID =0

    普通用户 的UID=1-65535

    • 系统用户:1-499,1-999(CENTOS7)
    • 登录用户:500+,1000+(CENTOS7)

    组:建立用户的意义在于便于分配权限。

    • 管理员组:root,GID=0
    • ​ 普通组:

    ​ 系统组:1-499,1-999(CENTOS7)

    ​ 普通组:500+,1000+(CENTOS7)

    用户和组的主要配置文件:

    /etc/passwd:用户及属性信息(名称、UID、主的ID)

    /etc/group:组以及属性信息

    /etc/shadow:用户密码及相关属性

    /etc/gshadow:组密码以及相关属性

  • 相关阅读:
    应用默认编码不对的问题定位
    以http server为例简要分析netty3实现
    用qemu+gdb tcp server+CDT调试linux内核启动-起步
    用virtualbox+模拟串口+CDT调试linux内核 TCP/IP协议栈-起步
    【转】常见容错机制
    python文档注释参数获取
    scrapy爬取图片
    xpath语法
    python爬虫爬取赶集网数据
    爬虫小总结
  • 原文地址:https://www.cnblogs.com/qige2017/p/7212317.html
Copyright © 2020-2023  润新知