AI智能
改变未来

学习Linux你要是不知道这些,那你可能真的都算不上入门!

日常暖暖镇楼

Linux菜鸟级入门宝典2

  • Linux权限及基础开发工具
  • 1.Linux权限
  • 1.1Linux权限的概念
  • 1.2Linux权限管理
  • 2.yum包管理器
    • 2.1什么是软件包?
    • 2.2软件包操作
  • 3.vim编辑器
    • 3.1vim的基本概念
    • 3.2vim的基本操作
    • 3.3vim命令集
    • 3.4简单vim配置
  • 4.gcc/g++编译器
    • 4.1gcc(c语言) / g++ (c++)
    • 4.2函数库
  • 5.gdb调试器
    • 5.1调试
  • 6.make/Makefile项目自动化构建工具
    • 6.1make & makefile
    • 6.2伪目标

    Linux权限及基础开发工具

    1.Linux权限

    1.1Linux权限的概念

    Linux下有两种用户:超级用户(root)、普通用户。
    超级用户:可以在linux系统下做任何事情,不受限制
    普通用户:在linux下做有限的事情。
    超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
    切换用户
    su [用户名]:切换到某个用户,当前位置还在之前的路径下
    su – [用户名]:切换到某个用户,并且回到切换用户的家目录

    exit 回到上一次的用户

    1.2Linux权限管理

    1.基本权限

    • 可读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
    • 可写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
    • 可执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
    • “—”表示不具有该项权限

    2.不同用户的简写

    用户 简写
    文件所有者 u
    组内用户 g
    其他用户 o

    3.文件权限值的表示方法
    a) 字符表示方法

    20db1

    Linux表示 解释 Linux表示 解释
    r- – 可读 -w- 可写
    –x 可执行 rw- 可读可写
    -wx 可写可执行 r-x 可读可执行
    rwx 可读可写可执行 – – – 无权限

    b) 8进制数值表示方法

    4.更改文件权限
    第一种:用户+/-字符权限的方式

    chmod [u/g/o]+/-[r/w/x][文件名或者文件夹名]

    第二种:八进制数字更改方式

    chmod [八进制数字] [文件名或者文件夹名]

    5.权限对于文件或者文件夹的影响
    1.对于文件

    可读权限: 如果用户针对文件没有可读权限, 则无法查看文件内容

    可写权限: 如果用户针对文件没有可写权限, 则无法往文件中写入内容

    可执行权限: 如果用户针对文件没有可执行权限,则无法执行文件,执行结果 取决于文件内容

    2.对于文件夹

    可读权限: 影响用户查看文件夹下的内容

    可写权限: 影响用户在文件夹创建文件或文件夹

    可执行权限:影响用户写入文件夹

    6.文件或者文件夹更改所属用户或者所属用户组
    1.更改所属用户

    chown [-R] 用户名 文件名
    -R 递归修改

    2…更改所属用户组

    chgrp 新用户名 文件名 [-R]

    2.yum包管理器

    职责:给linux操作系统安装软件,从linux操作系统中卸载软件

    2.1什么是软件包?

    在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
    软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
    yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

    注意事项
    关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!
    可以通过 ping 指令验证

    2.2软件包操作

    1.罗列yum源提供的软件 yum list

    通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包.
    yum list | grep lrzsz

    结果如下:

    lrzsz.x86_64 0.12.20-36.el7 @base

    2.下载安装

    yum install [包名称]

    3.如何卸载

    yum remove [包名称]

    //lrzsz:不能直接传递文件夹

    rz:从win系统上传文件到linux操作系统
    sz [linux中的文件]:将linux中的文件传递到win系统中

    xftp:可以直接传递文件夹

    3.vim编辑器

    vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 mac os、windows。

    3.1vim的基本概念

    关于vim编辑器的模式其实有12种,不过对于初学者来说在此没有必要知道那么多,掌握以下三种即可,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。

    使用vim编辑文件:vim[文件名]

    例: vim test

    3.2vim的基本操作

    正常模式:在正常模式下是不能往文件中写内容的,需要进入插入模式,才可以正常写文件

    插入模式:i 进入插入模式,就可以正常插入,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
    ESC:可以从任何模式回到正常模式

    [正常模式]切换至[末行模式]:「shift + ;」, 其实就是输入「:」

    退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」底行模式,例如:
    :w (保存文件)
    :wq (输入「wq」,保存并退出vim)
    :q不保存退出
    :q! (不保存强制退出vim)

    3.3vim命令集

    1.在正常模式下的快捷操作
    移删复替撤更跳
    移动光标

    上下左右键(菜鸟级) h:向左 j:向下 k:向上 l:向右
    $ :移动到光标所在行的“行尾”
    ^:移动到光标所在行的“行首”
    w:光标跳到下个字的开头
    e:光标跳到下个字的字尾
    b:光标回到上个字的开头
    #l:光标移到该行的第#个位置
    ctrl+b:屏幕往“后”移动一页
    ctrl+f:屏幕往“前”移动一页
    ctrl+u:屏幕往“后”移动半页
    ctrl+d:屏幕往“前”移动半页
    gg:快速回到第一行
    G:快速回到最后一行
    [num] G:快速跳到某一行

    删除

    1.x:向后删除光标所在位置的字符,相当于win系统下的[delete insert]键
    [num] x:向后删除num个
    2.X:向前删除字符,不包括光标所在字符
    [num] X:向前删除num个字符,不包括光标所在位置
    3.dd:剪切的功能,相当于win系统中的ctrl+x
    [num] dd:多行剪切

    复制、粘贴

    yy:复制一行
    [num] yy:复制多行
    小写p:向光标当前行的下一行进行粘贴
    大写P:向光标当前行的上一行进行粘贴

    替换:

    r:替换当前光标所在字符
    R:进行到(replace模式)进行替换,esc结束

    撤销:

    u:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次恢复。
    ctrl + r: 撤销的恢复

    更改:

    cw:替换某个单词,并从正常模式切换到插入模式

    跳转至某行

    ctrl+g 列出光标所在行的行号。
    [num]G:5G表示移动光标至文章的第5行行首。
    gg=G:整理当前代码格式

    2.常用指令
    快速进入插入模式

    o : 快速到下一行
    O : 快速到上一行
    A : 快速回到行尾
    I : 快速回到行首

    3.底行模式下
    搜索

    /:向下搜索,配合n使用

    ?:向上搜索,配合n使用

    查找

    设置行号:在底行模式下set nu
    取消行号:在底行模式下set nonu
    在底行模式下:
    :%s/[待替换的]/[要替换的]/g" % 全文替换 g:当前行所有目标字符串全部替换

    3.4简单vim配置

    1.配置文件的位置

    • 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
    • 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
    • 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
    • 打开自己目录下的.vimrc文件,执行 vim .vimrc

    2.常用配置选项,用来测试

    设置语法高亮: syntax on
    显示行号: set nu
    设置缩进的空格数为4: set shiftwidth=4

    4.gcc/g++编译器

    4.1gcc(c语言) / g++ (c++)

    1.预处理(进行宏替换)

    预处理功能主要包括宏定义,文件包含,条件编译,去注释等
    gcc/g++ -E 文件 -o 文件.i

    2.编译(生成汇编)

    语法语义检测
    gcc -S 文件.i -o 文件.s 将源代码转换为汇编代码

    3.汇编(生成机器可识别代码)

    将机器代码转化为机器代码(二进制代码)
    gcc -c 文件 -o 文件.o

    4.链接

    目标文件+库文件 生成一个可执行程序
    gcc 文件.o –o 文件

    4.2函数库

    4.1 静态库
    gcc/g++命令行中,需要增加一个参数:-static
    gcc 文件 -o 新文件 -static
    4.2 动态库
    默认的链接为动态链接
    gcc 文件 -o 新文件
    file命令:查看当前文件的详细信息
    ldd命令:查看一个可执行程序依赖的库文件

    5.gdb调试器

    gcc 文件 -o 新文件 -g (debug版本)

    5.1调试

    调试的范式:gdb 文件名

    list/l 行号:查看文件内容
    显示binFile源代码,接着上次的位置往下列,每次列10行。
    r或run:运行程序。
    b (breakpoint) 行号:在某一行设置断点

    i b(info breakpoints) :查看断点信息。

    disable 断点序号 (breakpoints):禁用断点,使失效

    enable 断点序号 (breakpoints):启用断点,使生效

    n(next)逐过程执行,相当于win系统中的F10
    s(step) 逐语句执行 win F11
    p(print) 变量名:打印变量的值,也可以打印自定义类型
    q(quit) 退出
    bt(breaktrace)**重要:查看各级函数调用及参数
    where 和bt一样,没有区别
    coredump文件:内核转储文件,保存的是进程在崩溃的一瞬间内存的映像

    6.make/Makefile项目自动化构建工具

    6.1make & makefile

    1.make 是解释器,用来解释makefile文件

    makefile 书写编译规则的文件
    make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

    2.makefile文件书写的规则

    目标对象 & 依赖对象 & 编译命令

    3.make的解释makefile文件的规则

    a.make会在当前目录下找名字叫“Makefile”或“makefile”的文件

    b.永远只为生成第一个目标对象而服务


    c.若目标对象相对于依赖对象而言, 较新, 则不生成,
    d.make在生成第一个目标对象的时候, 如果依赖对象也需要后续生成,则先生成依赖对象之后, 使用依赖对象生成目标对象

    4.makefile文件: 内置变量 & 自定义变量

    $^: 代表所有依赖对象
    $@:代表目标对象

    6.2伪目标

    .PHONY 目标对象
    .PHONY :clean 一般用于工程清理
    #注释 crtl+v j/k选中注释行 –> I(shift+i)插入注释符 –>esc
    取消注释:crtl+v l

    以上就是本篇文章的重点,今天就到此结束了哈,由于作者创作能力有限,可能总结的内容或多或少会有差错,欢迎大家及时帮我指正,本文针对的大众是刚开始学习Linux的初学者,所以有的知识我写的很浅薄很片面,如果大佬们有不同的观点欢迎大家赏光私我哈,本着相互进步的原则,希望大家能多多向我提意见,谢谢~~

  • 赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 学习Linux你要是不知道这些,那你可能真的都算不上入门!