• Linux实践学习的一些归纳


    一、零碎知识点

    可执行文件一般软链接到/usr/bin/下面,下载的软件一般安装在 /usr/local,VM设置的共享文件夹在路径/mnt/hgfs/上(mnt就是mount挂载)。

    在shell里export的环境变量将在shell执行结束后失效。要持续生效就需要source xxx.sh

    二、基础命令

    man <program name> #查看对应程序的手册,比如看gdb手册就 man gdb
    ps -elf | grep <string> # 查找占用端口h
    netstat -anpt #显示所有tcp连接
    pwd #查看当前所在目录
    rm -rf <filename> #删除文件
    mv <path1> <path2> #将path1移动到path2,自动覆盖
    cp <path1> <path2> #将path1复制到path2
    mkdir <dirname> #创建文件夹
    #创建文件
    touch <filename> #如果不存在则自动创建
    vi <filename> #如果不存在就自动创建
    #----
    ln -s <source> <target> #生产软链接,相当于windows的快捷方式
    tar -xzvf <filename.tar.gz> -C <target path> #tar解压
    arch #查看cpu架构
    uname -a #linux信息
    screenfetch -p #查看linux信息(美观),需要install screenfetch
    su <username> #切换用户
    passwd <username> #修改用户密码
    find <查找范围> <查找的文件名> # 查找文件位置
    whereis <文件名> # 查找文件的位置
    ncdu #查看磁盘占用情况
    <command> 2>&1 | tee out.txt #将命令输出的stdout和stderr导出到out.txt
    top #类似windows任务管理器
    #输出格式,放在管道符后面
    awk -F ' ' '{print $4}' #以空格分隔,第4列
    head -n 2 #取得前2行
    
    • 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

    三、bash光标移动快捷键

    alt+b 光标移动到前一个单词

    alt+f 光标移动到后一个单词

    ctrl+l 刷新终端界面

    ctrl+u 删除光标前的所有字符

    ctrl+k 删除光标后的所有字符

    ctrl+w 删除光标前一个单词

    ctrl+a 光标移动到首个字符位置

    ctrl+e 光标移动到尾字符位置

    四、配置环境变量

    永久性的

    vi /etc/profile #在底部增加即可
    
    • 1

    重启后就消失的

    export <var>=<value>
    
    • 1

    五、Linux特殊符号

    1. & 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
    2. && 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ‘1’ && echo ‘2’
    3. | 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
    4. || 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
    5. >> 向尾部追加。
    6. > 覆盖掉原来的内容(重定向)
    7. 2>&1 将标准错误输出重定向到标准输出

    5.1 文件描述符fd (File Descriptor)

    名称代码操作符Java中表示Linux 下文件描述符(Debian 为例)
    标准输入(stdin)0< 或 <<System.in/dev/stdin -> /proc/self/fd/0 -> /dev/pts/0
    标准输出(stdout)1>, >>, 1> 或 1>>System.out/dev/stdout -> /proc/self/fd/1 -> /dev/pts/0
    标准错误输出(stderr)22> 或 2>>System.err/dev/stderr -> /proc/self/fd/2 -> /dev/pts/0

    六、tmux操作

    进入tmux模式

    tmux
    
    • 1

    进入tmux模式后快捷键大多都是以ctrl+B为前缀

    划分窗口:左右排布ctrl+B松开后再按 " ,上下排布则是 %

    命令式划分窗口

    tmux split-window #上下
    tmux split-window -h #左右
    
    • 1
    • 2
    • ctrl+b松开后再按 上、下、左、右键 ,将光标移动到对应的子窗口。
    • ctrl+b不松+方向键调整窗口大小
    • ctrl+d 关闭当前窗口(exit命令也行)

    开启普通导航模式

    • ​ ctrl+b松开后按 [
    • 滚动:方向键即可

    七、GDB操作

    若要调试程序,编译时还需要加上-g选项让编译生成的可执行文件中包含足够的调试信息,包含代码、栈、局部变量等,若还需查看更多信息如宏定义则需添加-g3选项,这样就可以通过print命令打印宏定义信息;如:

    gcc -g test.c -o test、 gcc -g3 test.c -o test

    layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法: 
    layout src:显示源代码窗口 
    layout asm:显示汇编窗口 
    layout regs:显示源代码/汇编和寄存器窗口 
    layout split:显示源代码和汇编窗口 
    layout next:显示下一个layout 
    layout prev:显示上一个layout 
    Ctrl + L:刷新窗口 
    Ctrl + x,再按1:单窗口模式,显示一个窗口 
    Ctrl + x,再按2:双窗口模式,显示两个窗口 
    Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    也可以直接:gdbtui hanoi-w 打开gdb的tui源代码窗口

    Command:

    starti 从程序的第一条指令开始执行

    n 下一步(next step)

    s 单步执行(single step)可以进入函数内

    b 设置断点(break point)

    ni/si 都是汇编级别的断点定位。si会进入汇编和C函数内部,ni不会。

    x 查看地址中的数据

    八、Vim操作

    Linux vi/vim | 菜鸟教程 (runoob.com)

    8.1 上下不能换行?

    表面看起来显示多行(一行太长就显示成多行了),实际上换行是根据换行符来定位,需要换行符才能换行。

    在这里插入图片描述

    8.2 命令模式

    初始模式,其他模式切换到该模式按ESC即可

    gg 光标移动到首字符

    G 光标移动到尾字符

    按v(字符选取)或V(行选取)进入可视模式

    : 进入底线命令模式

    i 进入insert模式

    ctrl+q 块选取模式

    w 光标移动到下一单词

    b 光标移动到上一单词

    / 加上字符串快速定位到字符串位置,再按n移动到下一个,N移动到上一个

    8.3 可视模式

    按v(多字符选取)或V(多行选取)进入可视模式

    复制:y(yank)复制选取的文本入缓存区

    粘贴:p(paste)粘贴缓存的文本

    删除:d 剪切选取的文本

    撤销:u(undo)

    全选:ggvG gg是到首行,G到尾行

    8.4 insert模式

    i 或 I 进入模式

    ctrl+d tab缩进

    8.5 底线命令模式

    按 : 进入,后面输入命令即可

    !gcc % -o a.out 在vim里面进行gcc编译,并输出a.out

    8.6 other

    批量注释:ctrl+q 块选择(列模式)选出所有要注释的行,然后大写I在行首输入注释符(#或//),接着按ESC,vim就会自动把所有选中的行添加注释符。

    批量取消注释:ctrl+q 块选择(列模式),选住所有注释符按d删掉即可

    tab键改为4个空格

    vi ~/.vimrc
    #插入以下内容
    syntax on
    set number
    set tabstop=4 #tab空格长度
    set softtabstop=4 #退格空格长度
    set shiftwidth=4 #每一级长度
    set expandtab #缩进用空格表示,noexpandtab 则是用制表符
    set autoindent #自动缩进
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    九、WSL配置代理

    前提是clash要开启7890端口并打开system proxy。

    ## 获取主机 IP
    ## 主机 IP 保存在 /etc/resolv.conf 中
    export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
    export https_proxy="http://${hostip}:7890";
    export http_proxy="http://${hostip}:7890";
    #验证
    curl google.com
    #有以下返回说明成功
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://www.google.com/">here</A>.
    </BODY></HTML>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    关闭代理,直接放空就行

    export https_proxy=;
    export http_proxy=;
    
    • 1
    • 2

    十、修改文件权限

    文件调用权限分三级:u表示当前用户、g表示当前用户组、o表示不同用户组。

    File Type:-表示普通文件,d为目录。

    r可读(4)、w可写(2)、x可执行(1)。

    #example 1,为当前用户增加对a.sh的执行权限,-x则为去掉执行权限,r和w同理
    chmod u+x a.sh 
    #example 2,当前用户有所有权限(4+2+1),用户组有可读+可执行(4+1),其他用户有可读(4)
    chmod 754 a.sh
    
    • 1
    • 2
    • 3
    • 4

    执行命令 l l ll ll 后,出现以下信息

    -rw-r--r--. 1 root root       25 Jul  9 00:06 a.out
    drwxr-xr-x. 2 root root        6 May  9 19:41 Desktop
    
    • 1
    • 2

    信息解析图
    在这里插入图片描述
    - 表示普通文件,d 表示文件夹

    十一、Last

    在这里插入图片描述

  • 相关阅读:
    微服务SpringCloud(Bus 消息总线)整合十九
    【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 30 日论文合集)
    网络安全概述——常见网络攻击与网络病毒、密码体制、安全协议等
    Mysql高级——索引创建和使用
    VD6283TX环境光传感器驱动开发(2)----获取光强和色温
    第三章-内存管理
    SQL Server 2012下载和安装配置详细教程手册
    【数据结构】数组和广义表
    Win11开机提示音要怎么改?
    零基础入门金融风控之贷款违约预测挑战赛——简单实现
  • 原文地址:https://blog.csdn.net/hys__handsome/article/details/126311866