切换至高级用户 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
- 预处理 gcc - E Hello.c -o Hello.i
- 翻译成汇编 gcc -S Hello.i -o Hello.s
- 翻译成机器码 gcc -c Hello.s -o Hello.o
- 绑定环境(链接)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
Comments NOTHING