常用操作
1.linux下批处理脚本
- 新建一个空白文档test,将其后缀改为sh,得到一个test.sh文件
- 在其内写命令,模板如下
1
2
3
4
5
6
7#! /bin/bash
命令1
命令2
... - 终端执行以下命令给test执行权限
1
chmod +x test.sh
- 之后使用以下命令即可执行sh脚本了
1
2
3
4sh test.sh
# 用sh -x test.sh执行可以看到执行细节
# 也可以用./test.sh来执行
2.awk操作
- 输出file1的第1行和第4行
1
awk '{print $1, $4}' file1
- 将file1中的第1行和第4行的内容以”,”分割并打印
1
2awk -F "," '{print $1, $4}' file1
# -F表示分割,后面接以什么字符分割
Ubuntu常用命令
常用命令
命令 | 含义 |
---|---|
sudo apt install 软件名 | 安装软件命令(有root权限) |
sudo apt remove 软件名 | 删除软件命令(有root权限) |
sudo nautilus | 打开文件(有root权限) |
su root | 切换到“root” |
ls | 列出当前目录文件(不包括隐含文件) |
ls -a | 列出当前目录文件(包括隐含文件) |
ls -l | 列出当前目录下文件的详细信息 |
cd … | 回当前目录的上一级目录 |
cd - | 回上一次所在的目录 |
cd ~ 或 cd | 回当前用户的宿主目录 |
kill 进程ID或进程名 | 终止该进程 |
mkdir 目录名 | 创建一个目录 |
rmdir 空目录名 | 删除一个空目录 |
rm 文件名 文件名 | 删除一个文件或多个文件 |
rm -rf 非空目录名 | 删除一个非空目录下的一切 |
mv 路径/文件 /路径/文件 | 移动相对路径下的文件到绝对路径下 |
mv 文件名 新名称 | 在当前目录下改名 |
df -h | 查看硬盘剩余空间 |
free -m | 查看当前的内存使用情况 |
ps -A | 查看当前有哪些进程 |
其它命令
命令 | 含义 |
---|---|
find 路经 -name “字符串” | 查找路经所在范围内满足字符串匹配的文件和目录 |
fdisk -l | 查看系统分区信息 |
fdisk fdisk /dev/sdb | 为一块新的SCSI硬盘进行分区 |
chown chown root /home | 把/home的属主改成root用户 |
chgrp chgrp root /home | 把/home的属组改成root组 |
Useradd | 创建一个新的用户 |
Groupadd 组名 | 创建一个新的组 |
Passwd 用户名 | 为用户创建密码 |
Passwd -d用户名 | 删除用户密码也能登陆 |
Passwd -S用户名 | 查询账号密码 |
Usermod -l 新用户名 老用户名 | 为用户改名 |
Userdel–r 用户名 | 删除用户一切 |
tar -c | 创建包 |
tar –x | 释放包 |
tar -v | 显示命令过程 |
tar –z | 代表压缩包 |
tar –cvf benet.tar /home/benet | 把/home/benet目录打包 |
tar –zcvf benet.tar.gz /mnt | 把目录打包并压缩 |
tar –zxvf benet.tar.gz | 压缩包的文件解压恢复 |
tar –jxvf benet.tar.bz2 | 解压缩 |
make | 编译 |
make install | 安装编译好的源码包 |
reboot | 重启LINUX系统 |
poweroff | 关闭LINUX系统 |
uname -a | 查看内核版本 |
cat /etc/issue | 查看ubuntu版本 |
lsusb | 查看usb设备 |
sudo ethtool eth0 | 查看网卡状态 |
cat /proc/cpuinfo | 查看cpu信息 |
lshw | 查看当前硬件信息 |
sudo fdisk -l | 查看磁盘信息 |
Linux下编程
安装开发环境
1 | sudo apt install yum |
1 | sudo apt install g++ |
Vim的使用
1 | vim xxx.cpp |
表示打开当前工作目录下的xxx.cpp文件,若不存在则新建
编写得到xxx.cpp文件后
1 | g++ xxx.cpp |
进行编译会生成一个a.out文件
执行
1 | ./a.out |
会运行xxx.cpp,若改成./xx &会后台执行,在任意时刻按下Ctrl+C可终止当前运行的代码
Vim有三种模式
- 命令模式,可控制光标移动进行复制、粘贴、删除和查找等工作(按下a或i或o进入输入模式,按下:进入末行模式)
- 输入模式:正常文本输入,即手敲代码模式
- 末行模式:保存或退出vim编辑
(任意模式下按ESC进入命令模式)
命令模式下的常用命令
命令 | 含义 |
---|---|
dd | 删除光标所在整行 |
5dd | 删除从光标处开始的5行 |
yy | 复制光标所在整行 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步的操作 |
p | 将之前dd或yy的数据粘贴到光标处 |
Makefile的使用
make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序
make工作的流程
- make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
- 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。
- 如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比 edit 这个文件新,那么,他就会执行后面所定义的命令来生成 edit 这个文件。
- 如果 edit 所依赖的 .o 文件也不存在,那么make会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。(这有点像一个堆栈的过程)
- 当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生成make的终极任务,也就是执行文件 edit 了。
Makefile文件格式
1 | target ... : prerequisites ... |
- target:可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对于标签这种特性,在后续的“伪目标”章节中会有叙述
- prerequisites:生成该target所依赖的文件和/或target
- command:该target要执行的命令(任意的shell命令)
Ubuntu问题
1.无法上网
- 网络连接图标消失,network设置里只有vpn选项
- 依次执行以下命令
1
2
3
4
5
6
7
8sudo service network-manager stop
sudo rm /var/lib/NetworkManager/NetworkManager.state
sudo service network-manager start
# 把manage=false的false改成true
sudo gedit /etc/NetworkManager/NetworkManager.conf
sudo service network-manager restart
- 依次执行以下命令