c笔记01---扩展名简介,linux 常用命令,vi 设置

1.    gcc 扩展名简介:
    .c        c语言
    .cc        c++语言
    .C        c++语言
    .cpp    c++语言
    .h        头文件
    .i        预处理过的c语言
    .ii        预处理过的c++语言
    .o        编译后的目标文件,二进制
    .s        汇编语言代码
    .a        静态库(多个 .o 文件打包,就形成 .a)
    .so        共享库(动态库)

2.    linux GCC 常用命令 (终端输入)
    注意:该目录下有好多命令都是以后课程才学到的;
    
    whoami    可以知道当前使用的帐号
    who        查看用户名和终端类型
    uname    查看内核版本
            -a
    date    查看系统时间
    umask    查看当前系统权限掩码
    cal        显示日历
    bc        计算器
    locale    查看系统字体
    df        显示文件系统
            -h
    mount    列出所有分区
    pwd        查看当前目录的绝对路径
    clear    把当前屏幕上的所有内容清除
    cd        切换目录命令
            cd /usr/include/c++
    ls        查看目录内容命令
            ls    命令支持 -a 和 -l 选项,
            -a    选项可以把所有内容都显示在屏幕上,不显示每个文件的详细信息
            -l    选项可以显示每个文件或目录的详细信息;
            -a    选项和 -l 选项可以合并成 -al。
            -i    文件 i 节点
             ls /sys/bus    查看系统总线
    touch    新建文件,如果文件已经存在,则会修改文件时间
    mkdir    新建文件夹
            用 -p 命令可以同时创建多个具有父子关系的目录(循环创建)
    rmdir    删除空文件夹
    rm        删除文件或空文件夹
            rm -r aa 强制删除 aa 非空文件夹
    mv        移动或更名文件
            mv a.c aa.c 把 a.c 改名为 aa.c
            mv a.c /c 把 a.c 移动到 c 文件夹
            mv *.c /c 把所有 .c 文件移动到 c 文件夹
    cp        复制
            cp a.c aa.c 同文件夹下,a.c 复制为 aa.c
            cp *.c /c 所有 .c 文件复制到 c 文件夹下
            cp -r xxx xxxxx 文件夹复制
            cp -a xxx 当有软链接的时候,需要加 -a
    ln        命令可以制作链接文件,分为硬链接和软链接
            硬链接:        
            # ln 文件 硬链接名
            软链接:
            ln -s 文件/目录 软链接名
    more    显示文件内容
    clare    清屏
    ps        可以察看当前终端窗口中运行的所有程序,每个程序都有一个进程 ID
            # ps -efl
            # ps -efl | grep 10086        // 查看具体某一个进程
            # ps -efl | grep a.out
            # ps -efl | more            // 按页显示;回车查看;
            (详情参见《UC笔记》DAY07)
    pstree    以树状图显示程序
    ipcs    查看共享内存/消息队列
            # ipcs -m                    // 显示共享内存 (m: memory)
            # ipcs -q                    // 显示消息队列 (q: queue)
            # ipcs -s                    // 显示信号量 (s: semphore)
            # ipcs -a                    // 显示所有 IPC 对象 (a: all)
    ipcrm    删除共享内存/消息队列
            # ipcrm -m ID                // 删除具体某一个共享内存;
            # ipcrm -q ID
            # ipcrm -s ID
    kill    可以强制终止一个程序的运行,需要使用那个程序的进程 ID,可以使用 -9 选项强制终止
            kill -2 xxxxxxx,相当于 <Ctrl+C>,终止某一个进程;
    jobs    查看后台暂停程序
    top        查看后他程序,每两秒更新一次,相当于 windows 的资源管理器
    fg        将后台程序调到前台
    bg        让工作在后台进行
    free    显示内存状态
    uptime    显示目前系统开机时间
    netstat 显示网络状态
    echo    查看环境变量/显示指定文本
            $ echo hello word ! 1>xxx.txt    // 把 hello word! 字符串写入 xxx.txt 文件里(输出重定向)
            $ echo hello, word >xxx.txt        // 如果不写 1 就不能写感叹号,bashell 不识别;
    wc        查看文件信息
    cat        查看文件内容
            cat xxx.txt
            cat /dev/null>xxx.dat            // 清空 xxx.dat 文件
            cat /proc/cpuinfo               // 查看系统信息
            cat /proc/devices               // 查看正在运行的设备号
    sudo    可以使用最高权限执行某些命令
    chmod    文件权限设置
            chmod +x arr.c
    find    查找
            find ./ -name xxx
    which   查找
    file    查看文件信息
    man        系统帮助
            man rand 或者 man 2 rand
    info    和 man 一样,查看帮助手册
    yum        在线升级
    startx    进入图形界面
    tar        可以用来实现打包压缩处理,和解压缩
            压缩方法:
                tar -zcvf day03.tar.gz day03
                (这个命令可以把 day03 目录制作成 day03.tar.gz 文件)
                压缩文件名应该以.tar.gz作为扩展名
            解压缩方法:
                tar -zxvf day03.tar.gz
                tar xf day03.tar.gz
                z:调用 zip 压缩工具;
                x:解压缩的意思;
                v:显示解压缩过程;
                f:解压缩文件命令;
    nm        查看目标或者库文件
            nm xxx.o
    hexdump        十六进制查看
    diff        判断两个文件是否一样
                diff a.out b.out
    poweroff    关机
    reboot        重启
    ifconfig    显示网络设备(查看 ip 地址)
    history        历史记录
    
    insmod      加载内核模块
    rmmod       移除内核模块
    lsmod       查看运行中内核模块
    modinfo     查看具体某一个内核模块
    
    grep -R "xxxx" ./*         查找某些函数或者函数名                       /**/
    grep -R "xxxx" ./* | grep '\.h'                                        /**/
    export PS1=##              配置终端前头提示符只显示 ##
    mount -t proc proc /tmp    挂载文件系统
    mknod console c 5 1        挂载设备文件
    mkfs.ext4 /dev/sdb1        格式化硬盘
    du -hs xxx                 查看文件夹大小
    export CC=arm-linux-gcc    修改默认编译器,对当前 shell 有效
    sudo passwd root           设置超级用户密码
    sudo apt-get install xxx   在线安装软件
    dpkg -i 安装包名字          离线安装,后缀名 .deb,UBUNTU 系统
    rpm -ivh 安装包名字         离线安装,后缀名 .rpm,RED HAT 系统

    sudo /etc/init.d/tftpd-hpa restart            重启 tftp 服务
    sudo /etc/init.d/nfs-kernel-server restart    重启 nfs 服务
    
    arm-linux-readelf -d xxx   查看和 xxx 文件相关的动态库
    arm-linux-strip hello.o    减小目标文件体积
    arm-linux-objdump -S hello.o >hello.asm            反汇编
    arm-linux-objcopy -O binary hello.elf hello.bin    去掉头文件信息
    
    gcc code.c    编译
    ./a.out        执行
    ctrl + c    中断死循环
    
    编辑:  vi hello.c                -> hello.c
    预编译:gcc -E hello.c -o hello.i -> hello.i ---+
    编译:  gcc -S hello.i            -> hello.s    |  GCC
    汇编:  gcc -c hello.s            -> hello.o    |  工具链
    链接:  gcc hello.o -o hello      -> hello   ---+
    
    gcc -c code.c    只编译,不生成可执行程序。编译后生成 .o 目标文件,通常用于编译不包含主程序的子程序文件;
    gcc hello.o -o hello                给 hello.o 重命名为 hello
    gcc -x c++ code.c -lstdc++            指定 gcc 编译器用 c++ 的方式编译
        -std=c89/-std=c99                指定编译所采用的规范版本
        gcc -std=c99 xxx.c

    大型应用程序调试,一般使用 gdb 工具查看 core 文件,依次执行下面五行命令:
    ulimit -c unlimited      取消禁止生成 core 文件,该文件里保存出错信息
    gcc mian.c -g            重新编译程序,-g 允许 gdb 调试
    a.out                    重新执行错误文件,会生成 core 文件
    gdb a.out -c core        用 gdb 查看 core 文件
    (gdb) bt                 打印执行路径
    
    内核出错调试命令:
    cat /proc/kallsyms > info.txt                 内核用到的所有函数都以符号的形式列在 kallsyms 里
    arm-linux-objdump -D xxx.ko > error.txt       反汇编,根据 pc 寄存器指向地址找到出错代码
        
    终端下,不同颜色对应的文件类型:
    绿色:可执行文件
    亮蓝色:软链接
    暗蓝色:文件夹
    暗红色:套接字
    黑底黄字:设备文件(c-字符设备,b-块设备/存储设备)
    黑底红字:没有目标文件的软链接/错误软链接
        
    这些命令都是在 shell 里面输入的,那么什么是 shell 呢 ?
    1)shell 是操作系统最外面的一层,俗称壳,
    2)shell 基本上是一个命令解释器,相当于 windows 下的 cmd 命令框;管理你于操作系统之间的交互;

3.    普通模式下输入:
    :w        保存文件
    :q        退出
    :q!        强制退出,不保存
    :wq        保存退出
    :x        保存退出
    :e        刷新
    :nohls    清除标记
    :129    跳到 129 行
    /xxx    查找 xxx
    ZZ        保存退出,不需要冒号
    
    :r /root/code.c        把 code.c 文件拷贝到当前文档后面
    :%s /;/,            把所有分号换为逗号
    
    :22,28 co 29  把 22 到 28 行复制到 29 行之后;
    :22,28 mo 29  把 22 到 28 行剪切到 29 行之后;
    
    
    
4.    普通模式下键入:
    i   当前插入;
    I   当前行首插入;
    a   后移一位插入;
    A   当前行尾插入;
    o   下一行插入;
    O   上一行插入;
    r   替换当前一个字符;
    R   替换当前 n 个字符,直到按 esc 结束;
    H   屏幕首;
    M   屏幕中;
    L   屏幕尾;
    G   跳到文件尾;
    gg  跳到文件首;       // 相当于 :1
    x   删除当前字符;
    dd  剪切当前行;
    ndd 剪切n行;
    yy  复制当前行;
    nyy 复制n行;
    p   粘贴;
    u   取消上一次修改;
    U   取消所有修改;
    .   重复上一次修改;

5.    vi编译器格式设置:
    vi ~/.vimrc   进入enter
        // 常用的四个设置:
        set nu                    // 显示行号;
        set cindent                // 自动缩进;
        set shiftwidth=4        
        set tabstop=4            // 设置 tab 键
        
        // 不常用的设置:
        set nonu                // 取消行号;
        set hlsearch            // 高亮搜索;
        set backup                // 自动存档,当你改变文件时,原文件会被另存为 filename~ 的一个文件;
        set ruler                // 显示右下角状态栏;
        set showmode            // 在左下角显示 --INSERT--等字样;
        set backspace=(012)        // 为 2 的时候,backspace 键可以删除任意字符;为 0/1 时,仅可删除刚输入的字符,原字符无法删除;
        set all                    // 在保存完文件时,显示目前所有环境参数设定值;
        syntax on                // 语法高亮;
        syntax off                // 关闭语法高亮;
        set bg=light            // 设定关键字颜色(默认);
        set bg=dark                // 设定关键字颜色;
    
    vi 和 vim 的区别:
    1)多极撤销
    在 vim 里可以不限制的撤销
    2)易用性
    vi 只能运行于 unix 系统,vim 可以运行于多系统;
    3)语法加亮
    4)完全兼容 vi

6.    所有绝对路径都是以/做开头的;
    相对路径是从某一个文件夹开始描述另外一个文件夹的位置;
    .        代表当前文件夹
    ..       代表当前目录的父目录

7.    脚本文件可以包含多条操作命令,执行脚本文件就相当于按顺序执行内部的所有操作命令。
    脚本文件制作完成后需要添加执行属性,使用 chmod 命令,方法如下
    chmod <属性值>  文件路径
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值