Linux实践学习的一些归纳

一、零碎知识点

可执行文件一般软链接到/usr/bin/<dirname>下面,下载的软件一般安装在 /usr/local,VM设置的共享文件夹在路径/mnt/hgfs/<share name>上(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行

三、bash光标移动快捷键

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

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

ctrl+l 刷新终端界面

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

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

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

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

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

四、配置环境变量

永久性的

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

重启后就消失的

export <var>=<value>

五、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

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

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

命令式划分窗口

tmux split-window #上下
tmux split-window -h #左右
  • 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之前的调试窗口。

也可以直接: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 #自动缩进

九、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>

关闭代理,直接放空就行

export https_proxy=;
export http_proxy=;

十、修改文件权限

文件调用权限分三级: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

执行命令 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

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

十一、Last

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值