Linux学习使用笔记

参考了这篇文章

1、常用命令

在这里插入图片描述

1、目录操作在这里插入图片描述

# 创建目录和父目录a,b,c,d
mkdir -p a/b/c/d

# 拷贝文件夹a到/tmp目录
cp -rvf a/ /tmp/

# 移动文件a到/tmp目录,并重命名为b
mv -vf a /tmp/b

# 删除机器上的所有文件
rm -rvf /

ls 命令能够看到当前目录的所有内容。ls -l能够看到更多信息,判断你是谁。
pwd 命令能够看到当前终端所在的目录。告诉你你在哪。
cd 假如你去错了地方,cd命令能够切换到对的目录。
find find命令通过筛选一些条件,能够找到已经被遗忘的文件。

2、文本处理

cat
最常用的就是cat命令了,注意,如果文件很大的话,cat命令的输出结果会疯狂在终端上输出,可以多次按ctrl+c终止。

# 查看文件大小
du -h file

# 查看文件内容
cat file

grep
grep用来对内容进行过滤,带上–color参数,可以在支持的终端可以打印彩色,参数n则输出具体的行数,用来快速定位。
比如:查看nginx日志中的POST请求。

grep -rn --color POST access.log

推荐每次都使用这样的参数。

如果我想要看某个异常前后相关的内容,就可以使用ABC参数。它们是几个单词的缩写,经常被使用。A after 内容后n行B before 内容前n行C count? 内容前后n行
就像是这样:

grep -rn --color Exception -A10 -B2   error.log

3、压缩与解压

.tar 使用tar命令压缩或解压
.bz2 使用bzip2命令操作
.gz 使用gzip命令操作
.zip 使用unzip命令解压
.rar 使用unrar命令解压

最常用的就是.tar.gz文件格式了。其实是经过了tar打包后,再使用gzip压缩。

创建压缩文件

tar cvfz  archive.tar.gz dir/

解压

tar xvfz. archive.tar.gz

快去弄清楚它们的关系吧。

4、运维

chown

chown 用来改变文件的所属用户和所属组。
chmod 用来改变文件的访问权限。

这两个命令,都和linux的文件权限777有关。
示例:

# 毁灭性的命令
chmod 000 -R /

# 修改a目录的用户和组为 xjj
chown -R xjj:xjj a

# 给a.sh文件增加执行权限(这个太常用了)
chmod a+x a.sh

systemctl
当然,centos管理后台服务也有一些套路。service命令就是。systemctl兼容了service命令,我们看一下怎么重启mysql服务。 推荐用下面这个。

service mysql restart
systemctl restart  mysqld 

对于普通的进程,就要使用kill命令进行更加详细的控制了。kill命令有很多信号,如果你在用kill -9,你一定想要了解kill -15以及kill -3的区别和用途。

su
su用来切换用户。比如你现在是root,想要用xjj用户做一些勾当,就可以使用su切换。

su xjj
su - xjj

5、系统状态概览

uname

uname命令可以输出当前的内核信息,让你了解到用的是什么机器。

uname -a

ps

ps命令能够看到进程/线程状态。和top有些内容重叠,常用。

# 找到java进程
ps -ef|grep java

top

top系统状态一览,主要查看。cpu load负载、cpu占用率。使用内存或者cpu最高的一些进程。下面这个命令可以查看某个进程中的线程状态。

top -H -p pid
free

top也能看内存,但不友好,free是专门用来查看内存的。包括物理内存和虚拟内存swap。

df

df命令用来查看系统中磁盘的使用量,用来查看磁盘是否已经到达上限。参数h可以以友好的方式进行展示。

df -h

ifconfig

查看ip地址,不啰嗦,替代品是ip addr命令。

ping

至于网络通不通,可以使用ping来探测。

6、其他

export

很多安装了jdk的同学找不到java命令,export就可以帮你办到它。export用来设定一些环境变量,env命令能看到当前系统中所有的环境变量。比如,下面设置的就是jdk的。

export PATH=$PATH:/home/xjj/jdk/bin

wget

你想要在服务器上安装jdk,不会先在本地下载下来,然后使用scp传到服务器上吧(有时候不得不这样)。wget命令可以让你直接使用命令行下载文件,并支持断点续传。

wget -c http://oracle.fuck/jdk2019.bin

2、 CMake && Makefile

1. 可执行文件

cpp文件是我们的代码文件,是不能直接执行的,需要编译源码生成可执行文件

g++ -o demo demo.cpp
./demo

2. 链接第三方库

编译代码时如果用到了第三方库(非c++标准库),我们需要告诉编译器第三方库的头文件(.h .hpp)和库文件(.so .a)的位置

安装第三方库一般有两种方式

apt
sudo apt-get install xxxx

直接在终端输入以上命令即可安装,apt默认情况下,头文件放在==/usr/include下,库文件放在/usr/lib下,可执行文件放在/usr/bin==下

从源码编译安装
在对应库的官网下载源码安装,如opencv等,默认情况下头文件放在==/usr/local/include下,库文件放在/usr/local/lib下,可执行文件放在/usr/local/bin==下
(就相当于下一个cpp文件的源码,自己在自己的机器上编译)

3. Makefile

Makefile 可以简单的认为是一个工程文件的编译规则,描述了整个工程的编译和链接等规则。 其中包含了那些文件需要编译,那些文件不需要编译,那些文件需要先编译,那些文件需要后编译,那些文件需要重建等等

以下是一段makefile的代码

hello:hello.c
    gcc -I${HOME}/incl -c hello.c
    gcc -o hello hello.o
    rm -f hello.o
    mv hello ${HOME}/bin

有了makefile文件,我们只需要在终端输入

make

即可自动编译整个工程

不同的系统(linux,mac,windows)cpp文件生成可执行文件的过程可能不通,makefile文件也可能不同。不同的Make工具遵循着不同的规范和标准,makefile的格式也不同,其可移植性比较差

4.CMake

CMake是一个 跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装 (编译过程)

在工程文件夹中编写CMakeLists.txt文件,执行

cmake

即可自动生成Makefile文件,再执行

make

即可自动编译整个工程,生成一个可执行文件,比如hello,然后运行一下

./hello

以下是一段链接opencv的CMakeLists.txt文件

cmake_minimum_required(VERSION 3.5)
project(opencv_test)
find_package(OpenCV  REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(opencv_test main.cpp)
target_link_libraries( opencv_test ${OpenCV_LIBS})

但是执行cmake之后整个文件夹会比较乱,多出一些乱七八糟的文件,所以一般在.cpp文件和cmakelist同目录下新建一个build文件夹,编译在这个build文件夹里进行

cmake .. # 因为cmakelists在上一级文件夹里面,所以到上一级去找,一个点是在同级找
make # 因为makefile直接就在build文件夹里面所以直接make就行了
# 用了cmake之后要发给别人只需要吧build文件夹删去就可以了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值