美文网首页
01.C(Linux命令)

01.C(Linux命令)

作者: 任振铭 | 来源:发表于2018-03-30 11:00 被阅读29次

    (创建于2017/8/13)

    system命令(命令行)

    1.calc 打开计算器
    2.control 打开控制面板
    3.system("start calc");//执行打开计算器的动作(这些命令都可以这样调用)
    4.%x 代表用十六进制打印整数
    5.gcc -o b a.c -o用于指定文件名,执行后生成的文件名为b
    6.POSIC 编译规范,windows和linus同样代码编译结果可能不同,导致程序移植问题,所以
    用linux系统,代码移植性良好
    
    7.c语言编译过程
    预编译 .c文件  
    编译            
    链接 可执行程序
    
    gcc -E -o a.e a.c -E预编译a.c文件生成名字为a.e的文件 E表示预编译
    预编译的功能
    1把头文件内容原封不动包含进来,同时将代码中没用的部分删除
    
    8.使用头文件
    \#include<XX>表示让编译器去系统目录下找头文件,调用系统头文件
    \#include“XX”表示让编译器去当前目录下找头文件,调用自己写的头文件
    
    9.gcc -S -o a.e a.c -S表示汇编 将c语言转化为汇编语言 
    c语言代码
    int a;
    int b;
    int c;
    a=1;
    b=2;
    c=a+b;
    转换为汇编语言就是
    __asm
    {
        mov a,1;  //把1放入a
        mov b,2;  //把2放入b
        mov eax,a; //把a值放入cpu寄存器中
        mov eax,b;//把b值放入cpu寄存器中和a值相加后继续放入寄存器中
        mov c,eax; //把寄存器中值放入c
    }
    
    10. gcc -c -o a.e a.c  -c表示编译,将代码编译为二进制的机器指令
    11. gcc没有任何参数,代表就是链接,将库和目标文件打包
    12.RISC :精简指令集
      CISC :复杂指令集
      x86架构的cpu都是复杂指令的 Linux就是基于x86的操作系统
      20%的指令为常用指令,在一个程序执行的时候会调用比例达到80%
      但80%指令为不常用指令,在一个程序执行的时候调用比例为20%
    
    

    文件管理

    1)查看文件信息 ls

    ls -a :a就是all的简写,这样会打印出所有文件包括隐藏文件.xx
    
    ls -h :h是human的简写,意思就是以人类可读的方式打印,通常只文件大小的显示格式,比如加上-h会以KB的形式显示而不是可读性差的字节显示
    
    ls -l :l是list的简写,指以列表的形式显示文件信息
    
    ls和通配符结合使用可以指定查找条件
    ls ?.c :显示当前文件夹下所有以.c为结尾,前边只有一个字符的文件,?表示一个字符
    
    ls [1-9].c :表示查找.c结尾,前边只有一个数字并且这个数字是1到9之间任意数字的文件
    

    2)输出重定向>,一般和其他文件操作命令结合使用

    ls > a.txt:表示将当前目录文件信息输出到a.txt文件中,如果文件存在,覆盖原有文件中的内容,如果文件不存在,则创建文件
    
    ls >> a.txt: 和单个>的区别在于,这个操作不会覆盖原有文件内容,而是追加在后边
    

    3)more 分屏显示

    查看文件内容时,在信息过长无法在一屏上显示时,会出现快速滚屏
    ,导致无法看清文件,使用more命令,每次只显示一页,按下空格键
    可以显示下一页,按q键退出显示,按h键可以获取帮助
    
    如查看index.html文件
    more index.html
    
    1. 管道 |:一个命令的输出通过管道作为另一个命令的输入,通俗来说,可以理解为管子,在管子的一头放入东西,在另一头取出来使用
    ls | grep  std :命令表示将当前目录的文件信息放入管道,另一端对这些
    信息进行筛选,得到列出来以std开头的文件,std不是命令,只是筛选
    关键字
     
    

    5)清屏:clear

    clear作用为清楚终端上的显示,类似dos的cls清屏功能,也可以使用快捷键:Ctrl+l(l是字母L不是1)
    

    6)切换目录cd

    cd /home :进入根目录home,前边加/表示根目录,绝对路径
    cd home:进入当前目录中的home文件夹,相对路径
    cd  直接输入cd什么都不加,会切换到当前用户主目录,用户登陆的时候默认的目录就是用户主目录
    cd ~ 也是切换到用户的主目录
    cd . 切换到当前目录
    cd .. 切换到上级目录
    cd - 进入上一个进入的目录
    

    7)当前目录pwd

    输入pwd会打印出当前路径
    

    8)创建目录 mkdir

    mkdir ren 在当前目录创建文件夹ren
    mkdir ren/ren  注意这样写必须是当前目录下已经有了一个ren,然后才可以在这个ren里边创建一个ren,如果当前目录没有ren会创建失败,这时候可以使用-p递归创建目录
    mkdir -p ren/ren
    

    9)删除目录rmdir,只能删文件夹

    rmdir ren 注意如果ren不是个空目录则会删除失败
    

    10)rm删除,可以删文件或者文件夹

    rm -i ren.txt 以进行交互的方式执行删除命令,会有提示
    rm -f ren.txt  强制删除,忽略不存在的文件,无需提示
    rm -r  ren 递归的删除目录下的内容,删除文件夹必须加-r标志
    rm * -rf 这是一个非常危险的命令,会删除所有的东西并且没有提示,注意小心使用
    

    11)建立链接文件:ln

    Linux链接文件相当于Windows下的快捷方式
    软链接:
    1.类似Windows的快捷方式,软链接依赖于源文件存在
    2.如果源文件删除,软链接没有意义
    硬链接:
    1.给某个文件拷贝一份,这两个文件独立占用内存,
    2.改变其中一个文件,会影响到另一个文件
    3.删除某一个硬链接文件,不会影响另一个
    
    ln 源文件 链接文件(硬链接)
    ln ren.txt a.txt
    
    ln -s 源文件 链接文件(软链接)
    ln -s ren.txt a.txt 
    

    12)cat 文件名 查看一个文件内容

    cat ren.txt 会显示ren.txt中的内容
    

    13)grep 文本搜索(在一个文本中搜索关键字),查找过滤

    grep a ren.txt 从ren.txt文件中查找含有a的东西,比如单词句子等,列出来,这样是大小写敏感的
    grep a ren.txt -i 大小写不敏感,会将大小写都查出来
    grep '1 2 3' ren.txt -ni   把1 2 3当作一个整体查找,显示行号,大小写敏感,如果不加引号,不会把它当作整体
    

    14)find 查找文件,在一个目录中查找文件的名字

    find ./ -name ren.txt :./表示当前目录 -name表示查找文件名
    
    find ./ -name '*.txt' :查找当前目录下所有后缀为.txt的文件
    (目前在mac上尝试的结果是搜索的关键词加上‘’或者“”和不加引号的效果是差别非常大的
      不加引号,会搜索当前同一目录下符合条件的文件,但是如果加上单引号或者双引号,会
      搜索党当前目录下和当前目录下的子目录下的所有符合条件的文件,会遍历所有的文件)
    
    
    find ./ -name "[A-Z]*" :查找当前目录下所有大写字母开头的文件
    find /tmp -size 2M :查找tmp目录下等于2M的文件
    find /tmp -size +2M :查找tmp目录下大于2M的文件
    find /tmp -size -2M :查找tmp目录下小于2M的文件
    find /tmp -size +4k -size -5M :查找tmp目录下大于4k小于5M的文件(k是小写,M是大写)
    find ./ -perm 0777 :查找当前目录下权限为777 的文件或目录(0777中0表示八进制)
    
    

    15)拷贝文件cp
    cp命令功能是将给出的文件或目录复制到另一个文件或目录中,相当于DOS下的copy命令

    (在mac中测试发现 -a -r 等要放在cp后边 文件前边)
    cp -a ren/ ren2/ :将目录ren拷贝到ren2中,复制目录时使用-a选项,可以保留链接,文件属性,并递归的复制目录,简而言之,保持文件原有属性
    cp -f ren.txt ren2.txt  :删除已经存在的目标文件而不提示,当目标文件ren2.txt存在时,直接覆盖,不提示用户
    cp ren.txt ren2.txt : 覆盖文件时提示用户确认
    cp -r  ren ren2 :若给出的原文加是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
    cp -v ren.mp4 ren2.mp4 :显示拷贝进度
    命令组合使用
    cp -ivr ren ren2  : 拷贝目录ren到ren2中(包括ren这个目录,会在ren2目录下重新创建一个ren文件夹),提示用户是否覆盖显示拷贝进度,递归的复制
    

    16)移动文件mv
    移动文件同样具有三个常用选项
    -f 覆盖不提示
    -v 显示进度
    -i 覆盖要提示

    mv ren.txt ren :移动文件ren.txt到目录ren下
    mv ren.txt ming.txt :移动ren.txt到当前目录下并重命名为ming.txt
    
    1. file查看文件类型
      Linux系统文件类型不是根据文件扩展名分类的,通过file可以查看文件类型
    格式:file 文件名
    会告诉你这个文件是可执行文件还是普通文本文件
    

    17)归档管理:tar(常用选项可以不加- 如 tar cvf xxx)
    tar命令可以把一系列文件归档到一个大文件中,也可以把档案文件解开恢复数据,相当于备份和恢复,注意归档没有压缩的操作,也不存在解压缩

    打包:tar -cvf xxx.tar yyy(需要打包的文件,可以是多个 空格隔开,-c表示打包,-v表示显示进度,-f表示后边的是文件)
    解包:tar -xvf xxx.tar(要被解包的文件)    不指定路径,默认解包到当前路径
    解包并指定解包路径:tar -xvf xxx.tar -C ../dir    指定路径必须在前边加-C(大写)
    

    18)压缩:gzip

    gzip aaa.tar :压缩aaa.tar 在当前路径得到aaa.tar.gz (这个后缀是不是很熟悉)
    

    19)查看目录大小:du

    du -h ./jni    查看jni目录大小,以可读方式显示
    

    20)解压:gzip -d

    gzip -d xxx.tar.gz :解压缩在当前目录得到xxx.tar
    

    21)压缩打包

    tar -czvf xxx.tar.gz xxx(所需文件)(f一定是放在最后边,加了个z就可以压缩了)
    

    22)解压解包

    tar -xzvf xxx.tar.gz        到当前目录
    

    23)文件压缩打包bzip2(和gzip一样都是压缩)

    tar 与 bzip2命令结合使用实现文件打包压缩(用法和gzip一样)
    tar只负责打包文件,不压缩,用bzip2压缩tar打包后的文件,其扩展名一般用xxx.tar.bz2
    用tar命令增加一个选项(-j)可以调用bzip2实现一个压缩功能,实现一个先打包后压缩的功能
    
    压缩:tar -jcvf 压缩包包名 文件 (tar -jcvf bk.tar.bz2 *.c)
    解压:tar -jcvf 压缩包包名 (tar jxvf bk.tar.bz2)
    

    24)文件压缩解压:zip unzip

    通过zip压缩文件的目标文件不需要指定扩展名,默认扩展名zip
    压缩文件:zip -r (必须加此参数) 目标文件(没有扩展名) 源文件
    解压文件: unzip -d 解压后目录文件 压缩文件
    

    25)which 查看命令位置

    which ls : 输出命令ls的命令位置 /bin/ls
    

    用户管理

    01)查看当前系统账户用户名 whoami
    02)查看登录过的用户who / w 显示登录过的用户的时间等信息
    03)退出登录 exit

    如果是图形界面,退出当前终端
    如果是使用ssh远程登录,退出登录账户
    如果是切换后的登录用户,退出则返回上一个登录账号
    

    04)切换用户su

    可以通过su命令切换用户,su后面可以加“-”,su和su - 命令不同之处
    在于,su - 切换到对应的用户时会将当前的工作目录自动转换到切
    换后的用户主目录
    
    su : 切换到root用户
    su root : 切换到root用户
    su - :切换到root用户,同时切换到目录/root
    su 普通用户 切换到普通用户
    su -普通用户 切换到普通用户,同时切换到 普通用户所在目录
    
    切换差别.png

    05)添加删除组账号:groupadd groupdel

    groupadd 新建组账号
    groupdel 删除组账号
    cat /etc/group 查看用户组
    

    06)修改用户所在组

    使用方法:usermod -g 用户组 用户名
    sudo usermod -g admin ren :sudo以管理员权限执行
    

    07)添加用户useradd或者adduser

    adduser命令是指向useradd命令的一个链接,因此使用完全一样
    useradd [参数] 新建用户账号
    
    -d <指定的用户主目录>  如果不使用这个参数系统自动在/home目录下建立与用户名相同的目录为主目录
    -m 自动建立目录 
    -g 指定组名称
    
    useradd -d /home/user adc -m :添加用户adc 并且设置abc的主目录为/home/user,-m表示的意思就是如果user不存在,自动创建
    

    08)删除用户userdel

    sudo userdel hello
    userdel adc 删除abc但不会删除用户的主目录
    userdel -r abc 删除用户的同时删除用户主目录
    

    09)last查看用户最后登录时间
    10)修改文件权限:chmod

    有两种使用格式:字母法与数字法
    字母法:chmod u/g/o/a +/-/= rwx 文件
    u:user表示该文件的所有者
    g:group 表示与该文件的所有者同属于一组者,即用户组
    o:表示其他以外的任
    a: all表示这三者都是
    +:增加权限
    -:撤销权限
    =:设定权限
    
    chmod u+x 1.c :表示给u(user)增加执行的权限
    chmod g-x 1.c:表示撤销组内成员执行的权限
    chmod o=rwx 1.c : 给其他设置可读可写可行执行的权限
    
    数字法:
    ---  
    000  0 表示没有任何权限
    
    r--
    100 4 表示有读的权限
    
    -w- 
    010 2 表示有写的权限
    
    --x 
    001 1 表示有执行权限
    
    rw-
    110 6 表示有读写权限
    
    rwx 
    111 7 表示有读写执行权限
    
    文件夹权限说明:
    x:文件夹如果没有此权限,不允许用户进入
    r: 文件夹如果没有此权限,无法查看文件夹内容,无法ls
    w:没有这个权限,无法新建或删除文件
    

    11)修改文件所有者:chown

    使用方法:chown 用户名 文件或目录名
    chown edu 1.txt 修改1.txt文件的所有者为edu ,如果不被允许,可以加上sudo 执行
    

    11)修改文件所属组:chgrp

    sudo chgrp root 1.c :修改1.c所属组为root
    

    系统管理

    01)查看当前日历:cal

    cal 命令用于查看当前日历,-y显示整年日历 
    

    02)显示或设置时间:date

    1. 查看进程信息:ps
    -a 显示终端上所有进程
    -u 显示进程的详细状态
    -x 显示没有控制终端的进程
    -w 显示加宽,以便显示更多的信息
    -r 只显示正在运行的进程
    
    ps -aux | grep gedit : 显示gedit进程信息
    

    04)动态显示进程: top
    05)终止进程:kill

    kill -9 4173 :强制关闭id为4173的进程
    

    06)后台程序 & jobs fg

    用户可以将一个前台程序调入后台执行,方法为:命令 &,比如hello 是一个可执行程序,我将它调用后台 hello &
    如果程序已经在执行,ctrl+z可以将它调入后台
    jobs查看后台运行程序
    fg编号(编号为通过jobs查看的编号)将后台程序调出到前台
    

    07)关机重启:reboot shutdown init

    reboot :重启操作系统
    shutdown -r now 重启操作系统,shutdown会给别的用户提示
    shutdown -h now 立刻关机,其中now相当于时间为0的状态
    shutdown -h 20:23 系统将在20:25关机
    shutdown -h +10 系统十分钟后关机
    init 0 关机
    init 6 重启
    

    08)检测磁盘空间:df

    -a 显示所有文件系统的磁盘使用情况
    -m 以1024字节为单位显示
    -h 以K M G为单位,提高信息可读性
    

    09)检测目录所占磁盘空间:du

    du [选项] 目录或文件名
    -a 递归显示指定目录中个文件和子目录中文件占用的数据块
    -s 显示指定文件或目录占用的数据块
    -b 以字节为单位显示占用情况
    -h 以K M G为单位,提高信息可读性
    

    10)查看或配置网卡信息:ifconfig(和Windows中ipconfig类似)
    11)测试远程主机连通性:ping ip地址

    编辑器vi

    vi是Linux中最常用的编辑器,vim是vi的升级版,公认的vi中最好的一个
    01)打开文件 vi filename

    打开或新建文件,并将光标置于第一行行首,如果文件不存在会创建
    

    02)保存文件:shift + zz(其实就是按两次大写Z)(编辑模式下按esc退出到命令模式,然后按这个)

    新建一个文件如果什么都不写,是无法保存的
    03)编辑文件,命令模式下,按i进入编辑模式
    04)强制退出不保存:

    :q!
    

    05)退出保存

    :wq
    

    06)vi的一些常用快捷键

    F9:显示侧栏
    \p< :头文件
    \im :生成一个main函数
    \ip :生成一个printf
    ctrl+n:显示历史写的代码
    

    07)vi的set指令

    :set ic 搜索时忽略大小写
    :set noic 搜索时不忽略大小写
    :set nu 显示行号
    :set nonu 不显示行号
    

    远程操作

    。。。。

    t

    相关文章

      网友评论

          本文标题:01.C(Linux命令)

          本文链接:https://www.haomeiwen.com/subject/megbcftx.html