Linux基础命令操作

文件目录类命令

  1. 浏览目录命令:ls pwd
  • ls
    语法:ls 选项[-ald] [文件或目录]
    -a 显示所有文件,包括隐藏文件
    -l 详细信息显示
    -d 查看目录属性
  • pwd:显示当前所在的工作目录。
  1. 目录操作命令:cd mkdir rmdir
  • cd
    语法:cd [目录]
    cd / 切换到根目录
    cd … 回到上一级目录
  • mkdir
    语法:mkdir [目录名]
  • rmdir
    语法:rmdir [目录名]
    说明:只能删除空目录
  1. 浏览文件命令:cat more less head tail
  • cat
    语法:cat [-选项] 文件名
    选项:-E 在每一行的末尾显示$
    -n 为显示行添加行号
  • more
    语法:more [文件名]
    说明:可以分页显示
    (空格) 或f 显示下一页
    (Enter) 显示下一行
    q或Q 退出
    less命令的用法与more命令类似,也可以用来浏览超过一页的文件。所不同的是less命令除了可以按空格键向下显示文件外,还可以利用上下键来卷动文件。
  • head
    显示前几行内容。
    head [参数] <文件名>
    -n:显示前n行,不指定此参数显示前10行
  • tail
    显示后几行内容
    tail [参数] <文件名>
    -n:显示后n行,不指定此参数显示后10行
    +n:从第n行显示到文件尾
    -F:用于跟踪显示不断增长的文件结尾内容(通常用于显示日志文件)。
  1. 文件操作命令:cp rm mv find grep tar
  • cp
    格式:cp [参数] <源文件路径> <目标文件路径>
    -p :连同文件的属性一起复制,而非使用默认方式,常用于备份
    -i :若目标文件已经存在时,在覆盖时会先询问操作的进行
    -r :递归持续复制,用于目录的复制行为
    -u :目标文件与源文件有差异时才会复制
  • rm
    格式:rm [参数] <目标文件路径>
    -f :就是force的意思,忽略不存在的文件,不会出现警告消息
    -i :互动模式,在删除前会询问用户是否操作
    -r :递归删除,最常用于目录删除,它是一个非常危险的参数
  • find
    格式:find 路径 [参数]
    -name filename :找出文件名为filename的文件
    -size [±]SIZE :找出比SIZE还要大(+)或小(-)的文件
    -tpye TYPE :查找文件的类型为TYPE的文件,
    TYPE的值主要有:一般文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
    -perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
  • grep:查询字符命令
    格式:grep[参数] <要找的字串> <要寻找字串的源文件>
    -a :将binary文件以text文件的方式查找数据
    -c :计算找到“查找字符串”的次数
    -i :忽略大小写的区别,即把大小写视为相同
    -v :反向选择,即显示出不包含‘查找字符串’内容的那一行
  • tar :打包命令
    格式:tar [参数] <文件>
    -c :新建打包文件
    -t :查看打包文件的内容含有哪些文件名
    -x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同
    一条命令中
    -j :通过bzip2的支持进行压缩/解压缩
    -z :通过gzip的支持进行压缩/解压缩
    -v :在压缩/解压缩过程中,将正在处理的文件名显示出来
    -f filename :filename为要处理的文件
    -C dir :指定压缩/解压缩的目录dir

进程命令

  • 程序是一个包含可执行代码的文件,它放在磁盘等介质上。
  • 当程序被操作系统装载到内存并分配给它一定资源后,此时可称为进程。
  • 程序是静态概念,进程是动态概念。
    在这里插入图片描述
  • 此图为进程的几种状态之间的转换图。
  1. 查看进程命令
  • ps
    格式:ps [参数]
    l 长格式输出
    u 按用户名和启动时间的顺序来显示进程
    j 用任务格式来显示进程
    f 用树形格式来显示进程
    a 显示所有用户的所有进程(包括其它用户)
    x 显示无控制终端的进程
    r 显示运行中的进程
  • top:动态的监控
    格式:top [参数]
    -b 以批量模式运行,但不能接受命令行输入
    -c 显示命令行,而不仅仅是命令名
    -d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒
    -i 禁止显示空闲进程或僵尸进程
    -n NUM 显示更新次数,然后退出。比如 -n 5,表示top更新5次数据就退出
    -p PID 仅监视指定进程的ID;PID是一个数值
    -q 不经任何延时就刷新
    -s 安全模式运行,禁用一些效互指令
    -S 累积模式,输出每个进程的总的CPU时间
  1. 控制进程命令
  • kill:
    格式是:kill –signal PID,常用的signal参数如下:
    1:SIGHUP,启动被终止的进程
    2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
    9:SIGKILL,强制中断一个进程的进行
    15:SIGTERM,以正常的结束进程方式来终止进程
    17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行
  • killall:使用进程的名称杀死进程
    用法:killall [参数] <正在运行的进程名>
    -e:对长名称进行精确匹配;
    -I:忽略大小写的不同;
    -p:杀死进程所属的进程组;
    -i:交互式杀死进程,杀死进程前需要进行确认;
    -l:打印所有已知信号列表;
    -q:如果没有进程被杀死。则不输出任何信息;
    -r:使用正规表达式匹配要杀死的进程名称;
    -s:用指定的进程号代替默认信号“SIGTERM”;
    -u:杀死指定用户的进程。
  • nice:
    格式:nice [参数] <command [arguments…]>
    command 是系统中任意可执行文件的名称
    -n, --adjustment 指定程序运行优先级的调整值 优先级的调整值范围为-20 ~ 19 ,其中数值越小优先级越高,数值越大优先级越低 若 nice命令未指定优先级的调整值,则以缺省值10来调整程序运行优先级,既在命令通常运行优先级基础之上增加10
  • renice:改变正在运行的进程nice值
    格式:renice [参数]
    -n:指定程序运行优先级的调整值
  1. 进程后台命令 &
  2. 进程挂起和恢复
    • 进程的中止(挂起)和终止
      挂起(Ctrl+Z)
      终止(Ctrl+C)
    • 进程的恢复
      恢复到前台继续运行(fg)fg [n]
      恢复到后台继续运行(bg)bg [n]
    • 查看被挂起的进程(jobs)

用户及权限管理类命令

  1. 用户管理类命令:
  • useradd
    功能:新建用户帐号(超级用户可用)
    格式:useradd [参数] <用户名>
    -d 指定用户登入时的主目录
    -e 账号终止日期
    -g 指定账户所属的用户组
    -G 指定账户所属的附加组
    -s 指定账户登录后所使用的shell
    -u 指定用户ID号
    举例:新建一个用户zhangsan,用户组为net04
    useradd –g net04 zhangsan
  • passwd
    功能:设置或修改用户的口令以及口令的属性
    格式:passwd [参数] <用户>
    -d 删除用户的口令
    -l 暂时锁定指定的用户帐号
    -u 解除指定用户帐号的锁定
    -s 显示指定用户帐号的状态
  • usermod
    功能:修改用户的属性(超级用户可用)
    格式:usermod [参数] <用户名>
    -d 指定用户登入时的主目录
    -e 账号终止日期
    -g 指定账户所属的用户组
    -G 指定账户所属的附加组
    -s 指定账户登录后所使用的shell
    -u 指定用户ID号
    -l 新用户名(用于修改用户名)
    举例:将zhangsan改为zhangs
    usermod –l zhangs zhangsan
  • userdel
    - 如果删除用户属于私人组群,而该组群没有其他用户,组群也一并删除。
    - 正在使用系统的用户不能删除。
    功能:删除指定的用户帐号(超级用户可用)
    格式:userdel [参数] <用户名>
    -r:不仅删除此用户帐号,而且删除用户主目录及本地邮件存储的目录或文件
    -f:删除用户登入目录以及目录中所有文件
  • su
    功能:切换用户身份
    格式:su <用户名>
    超级用户可以切换为任何普通用户,而不需要输入口令;
    普通用户转换为其他用户时需要输入被转换用户的口令;
    使用exit可以返回到本来的用户身份;
  • id
    功能:查看用户的UID、GID和用户所属用户组的信息,如果不指定用户,则显示当前用户的相关信息。
    格式:id <用户名>
  • whoami
    功能:查看当前用户名
  • w
    功能:查看当前登录系统用户和详细信息
  • finger:显示用户信息
    语法 finger [options] user[@address]
    -l  多行显示。
    -s  单行显示。这个选项只显示登入名称、真实姓名、终端机名称、闲置时间、登入时间、办公室号码及电话号码。如果所查询的使用者是远端服务器的使用者,这个选项无效。
  1. 用户组管理类命令:
  • groupadd
    功能:新建组群(超级用户可用)
    格式:groupadd [参数] <用户组名>
    -g:指定用户组ID
    -o:允许组ID号不唯一
  • groupmod
    功能:修改指定用户组的属性(超级用户可用)
    格式:groupmod [参数] <用户组名>
    -g:指定新的用户组ID
    -n:指定新的用户组名字
    -o: 允许组ID号不唯一
  • groupdel
    功能:删除指定的用户组(超级用户可用)
    格式:groupdel <用户组名>
    注意:在删除指定用户组之前必须保证该用户组不是任何用户的主要组群,否则要先删除以此用户组为主要组群的用户才可以删除该用户组
  1. 文件权限管理类命令
  • chmod:修改文件的访问权限
    格式:chmod <模式> <文件>
    对象:u 文件所有者 、g 同组用户、o 其他用户
    操作符:+增加、-删除、=赋予
    权限:r 读、w 写、x 执行、s设置用户ID
    举例:
    - 取消同组用户对file文件的写入权限
    chmod g-w file
    - 将pict目录的访问权限设置为775
    chmod 775 pict
    - 设置file文件的设置用户ID位
    chmod u+s file
  • chown:将指定文件的拥有者改为指定的用户或用户组
    格式:chown [选项] <所有者/组> <文件>…
    -c 显示更改的部分的信息
    -f 忽略错误信息
    -h 修复符号链接
    -R 处理指定目录以及其子目录下的所有文件
    -v 显示详细的处理信息
    -deference 作用于符号链接的指向,而不是链接文件本身
    - 用户是用户名或者用户ID,用户组可以是组名或者组ID
    - 文件是以空格分开的要改变权限的文件列表,支持通配符
    - 举例:将ex1的所有者由root 改为hellen
    chown hellen ex1
  • chgrp:功能:改变文件的所属用户组
    格式:chgrp [选项] <组> <文件>
    -c 当发生改变时输出调试信息
    -f 不显示错误信息
    -R 处理指定目录以及其子目录下的所有文件
    -v 运行时显示详细的处理信息
    –dereference 作用于符号链接的指向,而不是符号链接本身
    –no-dereference 作用于符号链接本身
    - 用户组可以是组名或者组ID
    举例:将ex1文件所属的用户组由root改为staff
    chgrp staff ex1

调试命令

在这里插入图片描述

  • 上图为C语言的编译处理过程。

  • 命令:gcc命令格式:gcc [选项] <文件名>
    -o filename :指定输出文件为filename.该选项不在乎gcc产生什么输出,无论是可执行文件,目标文件,汇编文件还是预处理后的C代码
    - 如果没有使用”-o”选项,默认的输出结果是:可执行文件为”a.out”,编译后产生的目标文件是”sourcename.o”,汇编文件是 “sourcename.s”,而预处理后的C源代码送往标准输出
    -D: 宏定义选项,等同于代码中的#define MACRO但-D定义的宏作用于所有的源文件。
    范例:
    #define PI 3.14159(如果程序用到PI则用3.14159代替)
    gcc -DPI=3.14159 main.c(但如果没有定义宏的话,就可以直接在编译的时候赋值再运行)
    -I 头文件的搜索路径:如果用户的头文件不在gcc的搜索路径中,可以用此选项指定额外搜索路径。
    范例:
    gcc helloworld.c –I /usr/include –o helloworld(将/usr/inlcude加入到文件头文件的搜索路径中)

  • 警告选项

    • 警告是针对程序结构的诊断信息,程序不一定有错误,而是存在风险,或者可能存在错误。
    • 所有以-W开头的选项基本上均可使用-Wno-option来关闭该警告信息,如-Wunused在某个局部变量除了声明就没再使用,或者声明了静态函数但是没有定义,或者某条语句的运算结果显然没有使用时, 编译器就发出警告。使用Wno-unused可禁止该警告信息。
      -w :禁止所有警告信息.
      -Wall:打开所有警告选项,输出警告信息
    • 通常建议打开-Wall,这样至少可以看出你的代码里有哪些地方可能存在问题。
    • 把 ‘.c’编译成 ‘.o’
      gcc –c increase.c –o increase.o
    • 把 ‘.o’归档成 静态库‘.a’
      ar –r libincrease.a increase.o
    • 静态库和其它源文件链接成可执行文件
      gcc main.c –L –static –o main
    • 生成动态链接库
      gcc -shared -fPIC -o libinc.so increase.c
      • 动态链接库的名字必须以lib开头 .so结束,这是linux系统上的强制约束,否则无法使用该共享库
        -shared 生成共享文件
        -f PIC 生成位置独立的代码,此类代码可以在不同进程间共享。
        -l library名字为library的动态链接库。事实上此动态链接库在文件系统中的名字为liblibrary .so。连接器会自动加上lib*.so。
        -L dir 共享库搜索目录。gcc除了会在自定义的目录中搜索共享库外,用户也自定义目录让gcc搜索。
        gcc main.c -o main -linc -L./
  • gdb:功能:断点设置命令break(缩写 b),当gdb执行到该断点时会让程序暂停运行。此时程序员可以查看运行中程序的情况。
    格式:break [LOCATION] [thread THREADNUM] [if CONDITION]
    [LOCATION]:
    linenum(行号)
    function name(函数名)
    filename:linenum
    filename:function
    class:function(c++)
    b 123 b main b increase:main b increase:123
    [thread THREADNUM] 调试多线程程序时,切换到哪个线程或者在那个线程中设置断点。
    break frik.c:13 thread 28
    [if CONDITION]: 当条件满足时,断点才生效。一般称为条件断点。CONDITION跟C语言一样
    b 123 if index==2 当index为2时,程序在123行停下。

    • watchpoint称为观察点,当观察对象的值有变化时,程序立即停止执行。
      watch :为表达式(变量)expr设置一个观察点。一旦表达式值有变化时,马上停住程序。
      rwatch :当表达式(变量)expr被读时,停住程序。
      awatch :当表达式(变量)的值被读或被写时,停住程序。

      info watchpoints :列出当前所设置了的所有观察点。

    • clear [linenum] [function name] 清除所有断点,不会清除watchpoints。
      delete 清除编号为num的断点或者watchpoint。
      disable 禁止某个断点。
      enable 开启某个断点。

      • step 单步调试命令,一次执行一行程序。

      • next 单步调试命令,但跳过函数调用。

      • finish 单步调试时直接从一个函数中返回

      • disassemble 显示汇编代码。

      • backtrace或者bt 查看目前程序的堆栈情况。

      • where查看当前位置。

      • up/down 向上或者向下移动一个堆栈。

      • frame或者f 移动到第num个堆栈。

      • 当移动到某个堆栈时,便可以用gdb命令查看在那个堆栈中的局部变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值