本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1 为PATH变量添加路径
export PATH=$PATH:新增路径 (临时型办法,仅在当前terminal起作用
如果想为为当前用户永久修改则要进入~目录,编辑.bashrc文件,将本命令添加在最后一行。
可以直接运行source .bashrc(.命令)使之生效。为了避免每次ssh连接后都需要运行,可以在~/.bash_profile中添加:
if test -f .bashrc ; then
source .bashrc
fi
2 一些命令
cat: 在file后附加一些内容,换成>就是覆写
- cat >> file
- 输入内容(可以换行)
- CTRL+D(结束输入)
find:查找文件
find / (待查找目录) -name 文件名(可用正则) -type d(目录)/f(普通文件)
tar :解压
tar -C(解压到的目标目录) -xzf (压缩包名)
其中 -x:--extract(从备份文件中还原 和) -c:--create(创建备份文件)对立
-z表示解压的是gzip,即tar.gz后缀,如果是tar.bz2则是bzip2解压,需要-j命令,如果是xz后缀则直接不用加此项 -xf即可
最后-f指定操作对象
加-t:--list可以列出压缩包包含的文件
pwd:查看当前路径
netstat -anp | grep :查看port被谁占用
ip addr show: 查看本机ip
ldd sth:查看sth都依赖(链接)了哪些库,sth一般是个编译好的应用程序
grep -r 目录或文件:在某目录中递归查找pattern在文件中的出现情况,如果没有提供目录或文件,则从标准输入读入内容
pattern前加一个 -w 表示要精确匹配这个pattern
stat file:查看file的访问、修改时间等
touch file:修改文件的修改时间为当下,如果原本不存在文件,则创造名为file的空文件
3 杀进程
查看各个进程占用资源情况 top <-p 指定进程号> 或者ps -aux
jobs 可以查看后台进程
kill (-9 强制杀)%<进程号>
如果想批量删除某些进程:
pidof 关键字 可以返回所有具有关键字的进程的进程号,然后kill -9 $(pidof 关键字)即可
ps -ef | grep keyword | awk '{print $2}' | xargs kill
其中awk后引号内跟的是动作,即打印该行第二个部分(进程号),默认空格分界
4 scp
将sth下载到local目录:scp -r username@host:sth local
将sth上传到远程path:scp -r sth username@host:path
5 调试cmake项目
在CMakeLists.txt中添加
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
再编译即可通过gdb调试该C++程序
6 /boot空间不足
由于Ubuntu自动更新内核导致,只需要我们
uname -a 查看当前使用内核版本
dpkg --get-selections |grep linux-image 查看已安装的所有版本
sudo apt purge 没有在使用的版本
df -h 查看清理后空间情况(另:du -sh:查看当前路径下文件占用空间总和
du -s(只显示总和) -h(带单位) file(无表示当前路径)
)
7 查看系统信息
arch #架构
lsb_release -a #查看系统版本
cat /proc/info #查看cpu信息
cat /proc/cpuinfo| grep 'processor' | sort -u |wc -l 查看核心数量
其中sort -u:排序并剔除相同行 sort用法
8. ssh相关
ifconfig #Ubuntu查看本机ip
设置ssh公钥并重启服务
cat 从主机复制过去的id_rsa.pub >> ~/.ssh/authorized_keys systemctl restart sshd.service
主机登录server的命令(username一定注意大小写)
ssh username@host -i ~/.ssh/id_rsa
vscode
安装ssh插件(IdentityFile中填主机私钥)
编辑config文件
9 pip更换源
有点跑题(
pip install something -i pypi.douban.com/simple/ --trusted-host pypi.douban.com
10 修改默认python版本(用户级)
$ ls /usr/bin/python* #查看所有python版本
输出例如:
编辑
然后修改.bashrc文件,在最后一行添加
alias python='/usr/bin/python3.8'
然后更新
$ . ~/.bashrc
再查看当前python版本
$ python --version
11 gcc命令相关
C++编译用g++,否则若想使用cout需要加编译选项 -lstdc++
12 统计代码行数
find src/ -name "*.cpp" | xargs wc -l
wc:
wc -clw(分别是字节数、行数、词数)file1 file2.. (若不给文件名或者为-,那么从stdin读入)
13 vim相关
撤销:u (恢复:ctrl+r)
删除当前(接下来多)行:(num)dd
交换当前行和下一行:ddp(删除当前行并暂存+粘贴)
从下一行插入:o 当前光标后:a
修改vim tab和缩进长度
- 创建配置文件:cd ~ vim .vimrc
- 文件中输入:
set tabstop=4
set shiftwidth=4
- 退出,更新:source .vimrc
光标快速移动:
- 向上翻整页:CTRL+b
- 向下翻整页:CTRL+f
- 向上(up)翻半页:CTRL+u
- 向下(down)翻半页:CTRL+d
查找:insert模式下
输入/ + pattern
n/N 跳转下一个/上一个
14 文件权限相关
查看linux文件的权限:ls -l 文件名称
查看linux文件夹的权限:ls -ld 文件夹名称
chmod 777 file
15 yum命令
yum是centos中常用的软件包管理器
显示已安装的软件包:yum list installed
查找可以安装的软件包:yum list sth
安装软件包:yum install sth
卸载软件包:yum remove sth
列出软件包的依赖:yum deplist tomcat
查看某软件包信息:yum info sth
升级所有的(或某个)软件包:yum update (sth)
检查可更新的程序:yum check-update
16 Ubuntu桌面相关
添加目录到侧边栏(bookmark current location):快捷键ctrl+D
17 swap分区
编译llvm内存不够用时,可以通过设置swap分区来增加内存。注意如果是在docker中编译,需要在宿主机中设置
free -m 查看内存使用情况,如果swap分区大小为0可以选择创建
1、使用dd命令创建一个swap分区,在这里创建一个4G大小的分区
dd本身也是很好用的截断文件的命令,if/of指定输入输出文件名,bs指定块大小,count指定块的个数,skip指定跳过多少块
dd if=/dev/zero of=/root/swapfile bs=1M count=4096bs * count 为拷贝的文件大小,即swap分区大小
2、格式化新建的分区文件
mkswap /root/swapfile3、将新建的分区文件设为swap分区
swapon /root/swapfile4、设置开机自动挂载swap分区
echo "/root/swapfile swap swap defaults 0 0" >> /etc/fstab最后再free -m 去查看分区情况
18 wget下载失败
ctrl+z转入后台并暂停,然后再wget -c url(断点续传),即可下载成功
19 后台执行任务相关
linux后台运行和关闭、查看后台任务 - jihite - 博客园
nohup cmd 1>/dev/null 2>&1 & #后台运行cmd,如果不重定向,默认在本目录下创建nohup.out,写入运行时标准输出信息
20 软链接的使用
创建:ln -s /usr/bin/xx xx #在当前目录创建一个xx的快捷方式
删除:rm -rf xx
修改:ln -snf /usr/bin/xx1 xx
21 core文件查看
gdb <之前运行崩溃的程序> core.xx
即可查看出错的位置,再使用gdb命令bt(backtrace)即可看调用栈
22 cut命令截取字符串
cut -d -f [file] # 按照char将file或标准输入的内容分段,取第num段
例子:name=1 | cut -d. -f1) # 输入参数是一个文件名,提取它不包括后缀的部分
如果目的是为了字符串替换,可以参考Shell字符串的替换_DYY^O^的博客-CSDN博客_shell 字符串替换
23 timeout限时执行
timeout -s 信号名或者整数值 时间(例如5s) 命令
表示这个命令如果在输入时间内没有结束运行,就杀死该进程并发送信号值给它
24 objdump
-d:看汇编代码
-s:看各个段的16进制表示
-j seg:指定查看seg段的内容
25 避免ssh连接超时
在/etc/ssh/sshd_config中修改ClientAliveInterval 0和ClientAliveCountMax 3,改为两个较大的数字即可,例如60,300
26 apt
apt-get
update:根据 /etc/apt/sources.list更新软件源
upgrade:检查软件是否可以升级
apt-cache
policy :查看某软件信息
27 sed
s模式为替换功能(s/pattern/replacement/flags)
例子:ls输出目录的绝对路径 ls | sed "s:^:
pwd/:" 用:作分隔符