切换至高级用户 sudo -s -H 以管理员权限打开终端 sudo -i 以管理员权限打开文件夹 sudo nautilus

清屏 clear 终止当前任务 ctrl+c 修改文件名 rm xxx xxx 忽略挂断信号 nohup <命令> & (防止关闭终端后程序停止,在终端输入exit退出,不可使用右上角关闭键) 关闭使用nohup的程序,先用 top 命令查看相应进程号,之后在终端输入 kill <进程号>

查看启动的端口 sudo ufw status 开启指定端口 sudo ufw allow 关闭指定端口 sudo ufw delete allow

启用开机启动 sudo systemctl start XXX.service 开启已经开启的服务 sudo systemctl enable XXX.service 查看已打开的开机启动项 systemctl list-unit-files |grep enabled 停止已经开启的服务 sudo systemctl stop XXX.service 禁用开机启动 sudo systemctl disable XXX.service

进入文件夹目录 cd 回到上一级目录 cd.. 回到主文件夹 cd~ 查找文件夹 find / -name +文件名 删除文件夹 rm -rf 文件夹名 自动补全 Tab (需先打出文件的几个字母) 查看当前目录下所有文件 ls 查看当前目录下隐藏文件 ls -a 在当前目录下创建新文件夹 mkdir

创建PY文件 vim XXX.py 运行PY文件 sudo python3 XXX.py ("a"开始编辑 ESC退出编辑 ":wq" 保存 "q:"不保存并退出) 创建命令执行文件 gedit XXX.sh 执行文件命令 source XXX.sh

更新源 sudo apt-get update 更新软件 sudo apt-get upgrade 清理所有软件缓存 sudo apt-get clean 清理旧版本的软件缓存 sudo apt-get autoclean 删除系统不再使用的孤立软件 sudo apt-get autoremove 临时使用清华源下载 pip install to XXX -i https://pypi.tuna.tsinghua.edu.cn/simple

文件目录内容

  • lib 库文件
  • etc 配置文件
  • dev 设备文件
  • var 可变文件
  • tmp 临时文件
  • sbin 管理命令
  • home 用户目录
  • root 管理员目录
  • bin 可执行文件,用户命令
  • media 挂载点目录, 移动设备
  • mnt 挂载点目录,临时文件系统
  • proc 伪文件系统,内核映射文件
  • opt 可选目录,第三方程序安装目录
  • boot 系统启动相关文件(内核、引导 、initrd)
  • sys 伪文件系统,和硬件相关的属性映射文件(进程)

文件操作

  • mv 移动,改名
  • ls 展示文件目录 -a 显示隐藏文件 -l 以长列表显示详细信息
  • cd 切换文件目录 ~ 返回根目录 .. 返回上级目录
  • cp 拷贝文件,使用 -r 移动文件夹
  • rm -f 删除文件,使用 -r 删除文件夹
  • pwd 查看当前目录
  • ll 展示文件详细信息 第一个字母代表类型 普通文件- 目录d 块b 字符c 管道p 套接字s 符号l(快捷方式) 文件权限共9位,三位一组,每组 r读 w写 x执行 创建者组u 创建者所属的用户组的组g 其它组的组o 文件硬件的连接次数 文件的属主 文件的属组 文件大小,单位字节 最近一次修改时间
  • stat 获得文件更加详细的信息
  • touch 新建文件,更改文件时间戳
  • file 查看文件格式和使用的进制
  • du 文件夹下的子文件内存占用情况
  • df 展示分区信息,使用 -h 以GB显示
  • mkdir 创建文件夹,使用 -p 可创建嵌套文件夹,空格创建多个文件夹
  • ln 创建硬链接,修改一个文件时,其它连接的文件也会同步修改
  • ln -s 创建软连接,类似于快捷方式(另一文件的路径名的指向)

文本命令

  • cat 查看文件内容
  • tail 监控文件数据修改情况
  • head -行数 查看前n行的数据
  • >> 在文件末尾追加,配合echo使用
  • more 分页查看文件内容 空格前翻 B后翻
  • less 可前后翻页查看文件内容 空格前翻 B后翻 Enter逐行前
  • | 管道,获取指定文件的指定行 head -5 XXX | tail -1 获取前5行,取最后一行,也就是取第五行 若无法获取输出流则在管道后加入 xargs 命令进行强制转换
  • cut 去除文件中部分内容 -d指定分隔符 -f指定列 cut -d ' ' -f1 XXX 将XXX文件中的内容以空格分割取第一列
  • sort 按特定规则进行排序 -n 按数值排序 -r 倒序 -t 自定义分隔符 -k 选择排序列 -u 合并相同行 -f 忽略大小写
  • wc 显示行数 列数 字节大小

进程操作

  • ps -ef 获取进程及进程号
  • kill 杀死进程,使用 kill -9 为立刻强制执行

命令操作

  • man 查看命令帮助文档,使用q退出
  • whereis 查看命令所处位置,type也能够显示位置
  • type 查看是否为系统命令,若显示为 shell builtin 则为系统内部命令

注意:shell中创建数组时各元素间使用空格分开,外部为()且无空格,使用${arr[]}调用单个元素

VIM操作

vi 进入编辑模式 +X 可指定光标在第X行,处于编辑模式时按下

  • . 重复上一步操作
  • u撤销 Ctrl r撤销撤销
  • rq 替换光标位置字符为q
  • Ctrl f后翻屏 b前翻屏
  • w可跳转到下一个单词词首
  • b可跳转到上一个单词词首
  • e可跳转到下一个单词词尾
  • h左 j下 k上 l右 光标移动
  • x删除字符 3x删除3个连续字符
  • dd删除当前行 dw删除当前单词
  • g跳转到文件结尾 gg开头 3g第三行
  • 0行首 $行尾 ^行首第一个非空白字符
  • yw复制当前单词 yy复制当前行
  • p行下方粘贴 P行上方粘贴

vi 进入输入模式

  • i从当前光标前方进入输入模式
  • a从当前光标后方进入输入模式
  • A从当前光标行尾进入输入模式
  • o在当前行下方新建一行进入输入模式
  • O在当前行上方新建一行进入输入模式

vi 使用ESC退出输入模式进入编辑模式,再按 : 进入末行模式

  • w保存
  • q退出
  • w!强制保存
  • q!强制退出
  • wq保存并退出
  • Shift ZZ 保存并退出set nu开启行号显示
  • 0,$y 复制所有行
  • 2,4d 删除二到四行
  • $-1d 删除倒数第二行
  • .,+2d 删除当前行和下两行
  • set nu打开行号显示
  • set nonu关闭行号显示
  • set readonly设置只读
  • /XXX查找XXX n向下查找 N向上查找
  • ?XXX查找XXX n向上查找 N向下查找
  • !免退出执行外部命令,可用于查找外部文件位置
  • %s/after/before/g全文查找after并替换为before
  • s/after/before在当前行查找首个after并替换为before
  • s/after/before/g在当前行查找全部after并替换为before
  • s/after/before/g在当前行忽略大小写查找全部after并替换为before
  • .,+2s/after/before/g在当前行和下两行查找全部after并替换为before

SED操作

以行为单位将数据进行替换、删除、新增选取(不会真正修改文件中的数据除非用-i) sed -n "3p" XXX 显示第三行内容

参数说明:

  • -e 以选项中指定的script来处理输入的文本文件。
  • -f 以选项中指定的script文件来处理输入的文本文件。
  • -n 仅显示处理后的结果,不显示内存读取的数据
  • -i 直接修改源文件

动作说明:

  • a :指定行后添加新行
  • c :修改替换
  • d :删除符合条件的行
  • i :指定行前添加新行
  • p :显示符合条件的行
  • s :查找并替换 sed "s/查找内容/替换内容/" XXX

AWK操作

格式化文本,对文本进行较复杂格式处理 awk -F ':' '{print $1}' XXX 打印XXX文件中以:为分隔的第一列

  • FS(Field Separator):输入字段分隔符, 默认为空白字符
  • OFS(Out of Field Separator):输出字段分隔符, 默认为空白字符
  • RS(Record Separator):输入记录分隔符(输入换行符), 指定输入时的换行符
  • ORS(Output Record Separate):输出记录分隔符(输出换行符),输出时用指定符号代替换行符
  • NF(Number for Field):当前行的字段的个数(即当前行被分割成了几列)
  • NR(Number of Record):行号,当前处理的文本行的行号。
  • FNR:各文件分别计数的行号
  • ARGC:命令行参数的个数
  • ARGV:数组,保存的是命令行所给定的各参数

正则表达式

grep 打印符号匹配规则的行 参数使用 “ ”

{}为扩展正则表达式,使用时需 \{XXX\} 前加入斜杠,或使用 grep -E

操 作 符说 明正 则 表 达 式 样 例
.匹配任何字符(换行符除外)b.b
[...]匹配字符组里出现的任意一个字符[abcd]
*匹配前面出现的正则表达式零次或多次abc*
+匹配前面出现的正则表达式一次或多次abc+
匹配前面出现的正则表达式零次或一次abc?
|匹配左或右任意一个正则表达式re1 | re2
{A}匹配前面出现的正则表达式A次[0-9]{5}
{A, B}匹配前面出现的正则表达式A-B次(含B)[0-9]{1, 5}
^匹配字符串的开始^abc
$匹配字符串的结束abc$
[...a-b...]匹配从字符a-b中的任意一个字符[0-9],[A-Za-z]
[^...]不匹配此字符集中出现的任何一个字符,包括范围[^abc],[^a-z]
(...)匹配封闭括号中的正则表达式,并保存为子组([1-3]{2})
\d匹配任何数字\d.txt
\w匹配任何数字字母字符(包括_),\W与\w作用相反\w?
\s匹配任何空白符,等价于[\n\s\r\v\f],\S与\s作用相反\s?
\b匹配单词边界,\B与\b作用相反\bMonkey\b

用户和权限

普通用户登录显示$ 管理员登录显示#

文件权限共9位,三位一组,每组 r读 w写 x执行 创建者组u 创建者所属的用户组的组g 其它组的组o

  • 创建用户 useradd XXX
  • 删除用户 userdel XXX 完全删除还需要到 home 和 var/spool/mail 目录下删除对应的文件夹
  • 设置密码 passwd XXX
  • 查看用户所属组 id XXX
  • 创建用户组 groupadd XXX
  • 删除用户组 groupdel XXX
  • 将用户放入用户组 usermod -G 组 用户
  • 将文件夹和用户组关联 chown chown 属主:属组 文件或文件夹名
  • 修改组权限 chmod g+w 文件属组/ chmod g+w XXX 给属组增加写权限 chmod o-r share/ 给属之外的组去除读权限
  • 切换用户 su XXX
  • 数字授权 rwx 1为有0为无 一共有三组,需将对应二进制转为十进制 chmod 764 文件名 764对应 rwx rw- r--

软件安装

使用Yum下载rpm包会更快(自动解决软件依赖问题,相当于软件管家,可以配置源)

  • 软件安装 rpm XXX -ivh显示进度 -prefix设置路径,不写则为默认路径
  • 软件卸载 rpm -e XXX
  • 查询已安装包 rpm -qa 模糊查找 rpm -qa | grep XXX
  • 查询包是否已经安装 rpm -q XXX
  • 查询安装帮助文件 rom -qd XXX
  • 查询文件是由哪个包安装生成的 rpm -qf XXX
  • Yum安装 yum install XXX

编译过程

  • 直接生成 gcc Hello.c -o Hello.o
    1. 预处理 gcc - E Hello.c -o Hello.i
    2. 翻译成汇编 gcc -S Hello.i -o Hello.s
    3. 翻译成机器码 gcc -c Hello.s -o Hello.o
    4. 绑定环境(链接)gcc Hello.o
  • 多个源文件的编译和链接 gcc Hi.c Hello.c -o main.o
    • 生成二进制文件 gcc -c Hi.c Hello.c
    • 链接两个文件 gcc Hi.o Hello.o
  • GDB调试
    • 生成带有调试信息的文件 gcc Hi.c Hello.c -g
    • 进入调试器 gdb a.out
      • 查看程序 l
      • 打断点 b 行号或函数名字
      • 运行程序 r
      • 执行当前指令并显示下一行 n
      • 显示变量内容 p 变量名
      • 进入复合函数 s
      • 退出调试 q