【笔记】Linux学习笔记

常用操作

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
    4
    sh test.sh

    # 用sh -x test.sh执行可以看到执行细节
    # 也可以用./test.sh来执行

2.awk操作

  • 输出file1的第1行和第4行
    1
    awk '{print $1, $4}' file1
  • 将file1中的第1行和第4行的内容以”,”分割并打印
    1
    2
    awk -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
2
g++ xxx.cpp
# 也可用g++ xxx.cpp -o xx来指定名字

进行编译会生成一个a.out文件

执行

1
2
./a.out
# ./xx

会运行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工作的流程

  1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
  2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。
  3. 如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比 edit 这个文件新,那么,他就会执行后面所定义的命令来生成 edit 这个文件。
  4. 如果 edit 所依赖的 .o 文件也不存在,那么make会在当前文件中找目标为 .o 文件的依赖性,如果找到则再根据那一个规则生成 .o 文件。(这有点像一个堆栈的过程)
  5. 当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生成make的终极任务,也就是执行文件 edit 了。

Makefile文件格式

1
2
3
4
target ... : prerequisites ...
command
...
...
  • target:可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对于标签这种特性,在后续的“伪目标”章节中会有叙述
  • prerequisites:生成该target所依赖的文件和/或target
  • command:该target要执行的命令(任意的shell命令)

Ubuntu问题

1.无法上网

  • 网络连接图标消失,network设置里只有vpn选项
    • 依次执行以下命令
      1
      2
      3
      4
      5
      6
      7
      8
      sudo 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