Technical Summary —— Common Command
近期致力于总结科研或者工作中用到的主要技术栈,从技术原理到常用语法,这次查缺补漏当作我的小百科。主要技术包括:
- ✅数据库常用:MySQL, Hive SQL, Spark SQL
- ✅大数据处理常用:Pyspark, Pandas
- ⚪ 图像处理常用:OpenCV, Matplotlib
- ⚪ 机器学习常用:SciPy, Sklearn
- ✅ 深度学习常用:Pytorch, Numpy
- ✅ 常用命令: Shell, Git, Vim
以下整理错误或者缺少的部分欢迎指正!!!
Linux
Linux 的目录中有且只有一个根目录 / 。Linux 是以文件的形式管理我们的设备,因此 linux 系统一切皆为文件。Linux命令严格区分大小写。
1 | ifconfig # 查询当前网卡信息 |
文件处理命令
- 显示目录文件
ls 选项[-ald] [文件或目录]-a显示所有文件,包括隐藏文件-l详细信息显示(可简略为ll)-d查看目录属性-h人性化显示 - 创建新目录
mkdir -p [目录名]-p递归创建 - 切换目录
cd [目录]cd ..返回上一级目录 - 显示当前目录
pwd - 删除空目录
rmdir [目录名] - 复制
cp -rp [原文件或目录] [目标目录]-r复制目录-p保留文件属性 - 删除文件
rm -rf [文件或目录]-f强制执行 - 创建空文件
touch [文件名] - 显示文件内容
cat [文件名]-n显示行号 - 分页显示文件内容
more [文件名](空格)或f翻页(Enter)换行q或Q退出/搜索 - 分页显示文件内容(可向上翻页)
less [文件名] - 显示文件前面几行
head -n [文件名] - 显示文件后面几行
tail -n [文件名]-f动态显示文件末尾内容 - 生成链接文件
ln -s [原文件] [目标文件]-s创建软连接
软链接的作用和Windows中的快捷方式差不多,是指向源文件安装路径的符号链接,大小很小,真正拥有的权限是源文件所决定的权限 。
硬链接就是把源文件拷贝到目标位置,与cp -p最大区别是可以同步更新,源文件有变化硬链接文件会同时变化,如果源文件丢失或被删除,硬链接并不会消失。可以通过i节点来区分,源文件和硬链接文件的i节点是一样的,所以他们会同步更新,但是不能跨分区放置硬链接,且不能对目录使用。
权限管理命令
用户有三类:u所有者(只有一个)、g所属组、o其他人、a所有人
权限有三类:r、w、x
| 代表字符 | 对文件的含义 | 对目录的含义 |
|---|---|---|
| r:read | 可以查看文件内容 可以cat/more/head/tail/less | 可以列出目录中的内容 可以ls |
| w:write | 可以修改文件内容 可以vim | 可以在目录中创建、删除文件 可以touch/mkdir/rmdir/rm |
| x:execute | 可以执行文件 可以script(脚本) command(命令) | 可以进入目录 可以cd |
- 改变文件或目录权限
chmod [{ugoa}{+-=}{rwx}] [文件或目录]-R递归修改,即修改包括文件下目录的权限 - 改变文件或目录的所有者
chown [用户] [文件或目录] - 改变文件或目录的所属组
chgrp [用户组] [文件或目录] - 显示、设置文件的缺省权限
umask [-S]-S以rwx形式显示新建文件缺省权限
新建文件默认没有 x 权限
umask 指令直接输入之后会显示 0022,其中 0 代表特殊权限,022代表 777 与 022 之间异或逻辑关系
文件搜索命令
- 文件搜索
find [搜索范围] [匹配条件]
-name文件名匹配,*匹配任意字符,?匹配任意一个字符
-iname不区分大小写文件名匹配
-size指定文件大小,size后接的数据只能为数据块
+n大于,-n小于,n等于 1个数据块=512字节=0.5K
-user根据所有者查找
-group根据所属组查找
-type根据文件类型查找,f文件,d目录,l软链接
-a同时满足,-o满足任意一个 - 在文件资料库中查找文件
locate [文件名]updatedb更新资料库 - 搜索命令所在目录及别名信息
which [命令名] - 搜索命令所在目录及帮助文档路径
whereis [命令名] - 在文件中搜寻字串匹配的行并输出
grep -iv [指定字串] [文件]-i不区分大小写-v排除指定字串
帮助命令
- 获得帮助信息
man [命令或配置文件] - 获得命令的简单介绍信息
whatis 命令名 - 查询简短的配置文件的作用
apropos [配置文件名称] - 获得Shell内置命令的帮助信息
help 命令名
用户管理命令
- 添加新用户
useradd 用户名 - 设置用户密码
passwd 用户名 - 查看登录用户信息
who - 查看登录用户详细信息
w
压缩解压命令
- .gz格式压缩
gzip [文件]
解压缩gunzip [压缩文件]
只能压缩文件不能压缩目录 - 打包解包目录,压缩后文件格式为.tar.gz
tar 选项[-zxcf] [压缩后文件名] [目录]-c打包-x解包-v显示详细信息-f指定文件名-z打包同时压缩/解压缩 - .zip格式压缩
zip 选项[-r] [压缩后文件名] [文件或目录]
解压缩unzip [压缩文件]
压缩文件后保留原文件-r压缩目录 - .bz2格式压缩
bzip2 选项 [-k] [文件]
解压缩bunzip2 选项 [-k] [压缩文件]-k产生压缩文件后保留原文件
可与tar结合使用
网络命令
- 给用户发信息,以Ctrl+D保存结束
write <用户名> - 发广播信息
wall [message] - 测试网络连通性
ping 选项 IP地址 - 查看和设置网卡信息
ifconfig 网卡名称 IP地址 - 查看发送电子邮件
mail [用户名] - 列出目前与过去登入系统的用户信息
last - 检查某特定用户上次登录时间
lastlog - 显示数据包到主机间的路径
traceroute - 显示网络相关信息
netstat [选项]-tTCP协议-uUDP协议-l监听-r路由-n显示IP地址和端口号
查看本机监听的端口netstat -tlun
查看本机的所有网络连接netstat -an
查看本机路由表(网关)netstat -rn - 配置网络(Red Hat专有)
setup - 设备挂载
mount [-t文件系统] 设备文件名 挂载点
关机重启命令
在服务器上重启需要先停掉服务,否则物理内存会坏。且远程服务器只能重启,关机后需要管理员手动开机
- 关机重启
shutdown [选项] 时间-c取消前一个关机命令-h关机-r重启
其他关机命令haltpoweroffinit 0
其他重启命令rebootinit6 - 系统运行级别
0 关机
1 单用户,进入选项菜单 只有root用户登陆进去 相当于Windows安全模式F8,只不过没有图形界面
2 不完全多用户,不含NFS服务,无图形界面、NFS网络文件系统,Linux之间文件传输共享方式,除了NFS服务,和3一样。
3 完全多用户
4 未分配
5 图形界面
6 重启 - 查询系统运行级别
runlevel - 退出登录
logout
Shell
Xshell是连接远程服务器工具的一种,常用命令如下:
1 | ssh 服务器ip # 连接服务器 |
Shell脚本的执行方式
- echo输出命令
echo [选项] [输出内容]-e支持反斜线控制的字符转换 - 执行脚本的三种方式:
./xxx.sh需要先赋予执行权限chmod 755 xxx.sh. xxx.shbash xxx.sh - 注意事项
- 脚本第一行的
#!/bin/Bash不是注释,是标识下面的语句为Shell脚本 - ctrl+c终止当前命令;ctrl+d退出当前终端
- 脚本第一行的
Bash的基本功能
- 历史命令
history [选项] [历史命令保存文件]-c清空历史命令-w把缓存中的历史命令写入历史命令保存文件~/.bash_history
默认保存1000条,可在环境变量配置文件/etc/profile中进行修改 - 命令别名
alias 别名='原命令'
查询命令别名alias
删除别名unalias 别名
系统别名文件/root/.bashrc ,修改后永久生效
输入输出重定向
标准输入输出
设备 设备文件名 文件描述符 类型 键盘 /dev/stdin 0 标准输入 显示器 /dev/sdtout 1 标准输出 显示器 /dev/sdterr 2 标准错误输出 输出重定向
类型 符号 作用 标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输 出到指定的文件或设备当中 标准输出重定向 命令 >> 文件 以追加的方式,把命令的 正确输出输出到指定的文 件或设备当中 标准错误输出重定向 错误命令 2>文件 以覆盖的方式,把命令的 错误输出输出到指定的文 件或设备当中 标准错误输出重定向 错误命令 2>>文件 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 正确输出和错误输出同时保存 命令 > 文件 2>&1 以覆盖的方式,把正确输 出和错误输出都保存到同 一个文件当中 正确输出和错误输出同时保存 命令 >> 文件 2>&1 以追加的方式,把正确输 出和错误输出都保存到同 一个文件当中 正确输出和错误输出同时保存 命令 &>文件 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 正确输出和错误输出同时保存 命令 &>>文件 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 正确输出和错误输出同时保存 命令 >> 文件1 2>>文件2 把正确的输出追加到文件1中,把错误的输出追加到文件2中
Bash的变量
本地变量
变量调用echo $name
查看当前系统全部变量set
变量删除unset nam e环境变量
声明变量export 变量名=变量值
查询变量env
删除变量unset 变量名
Shell编程
- cut命令
cut [选项] 文件名-f列号,提取第几列-d分隔符,按照指定分隔符分割列
eg:cut -d ":" -f 1,3 /etc/passwd以:为分隔符提取第一第三列
当文件以空格分隔而不是\t分隔时cut会提取出错 - printf命令
printf ’输出类型输出格式’ 输出内容
输出类型:
%ns输出字符串。n是数字指代输出几个字符
%ni输出整数。n是数字指代输出几个数字
%m.nf输出浮点数。m和n是数字,指代输出的整数 位数和小数位数。如%8.2f代表共输出8位数, 其中2位是小数,6位是整数
输出格式:
\a输出警告声音
\b输出退格键,也就是Backspace键
\f清除屏幕
\n换行
\r回车,也就是Enter键
\t平输出退格键,也就是Tab键
\v垂直输出退格键,也就是Tab键 - awk命令
awk ‘条件1{动作1} 条件2{动作2}…’ 文件名
条件(Pattern):
一般使用关系表达式作为条件,x >= 10 判断变量 x是否大于等于10
动作(Action):
格式化输出 ,流程控制语句
BEGIN
END
FS内置变量
关系运算符 - sed命令
sed [选项] ‘[动作]’ 文件名
sed 是一种几乎包括在所有 UNIX 平台(包括 Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令
-n一般sed命令会把所有数据都输出到屏幕 , 如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。
-e允许对输入数据应用多条sed命令编辑
-i用sed的修改结果直接修改读取数据的文件, 而不是由屏幕输出
动作:
a \追加,在当前行后添加一行或多行。添加多行时,除最后 一行 外,每行末尾需要用“\”代表数据未完结
c \行替换,用c后面的字符串替换原数据行,替换多行时,除最 后一行外,每行末尾需“\”代表数据未完结
i \插入,在当期行前插入一行或多行。插入多行时,除最后 一行外,每行末尾需要“\”代表数据未完结
d删除,删除指定的行
p打印,输出指定的行。
s字串替换,用一个字符串替换另外一个字符串。格式为“行范 围s/旧字串/新字串/g”(和vim中的替换格式类似)
流程控制
if语句
1 | # 1.单分支if条件语句 |
case语句
1 | case $ 变量名 in |
for循环
1 | for 变量 in 值1 值2 值3 |
while循环与until循环
1 | # 条件成立时进入循环 |
函数
1 | [ function ] funname [()]{ |
Git
1 | 项目提交 |
公司开发分支为develop,员工个人开发分支为personal_develop。员工每次开发需要将develop分支merge到自己分支,在此基础上开发。开发后再提交merge develop request
1 | 切换到主分支develop |
Vim
进入文件,如果没有则新建文件vim file_name
写入模式
i进入写入模式并插入之前I行首插入a插入之后
A行尾插入o下行插入O上行插入w光标向下移动一个词b光标向上移动一个词
命令模式(normal模式)
:w保存:w new_filename另存为指定文件:q退出:q!不保存修改退出:wq保存并退出ZZ:wq!保存修改并退出(文件所有者及root可使用)
visual模式
v进入viual模式从当前位置开始选中- :normal A.jpg 选中的行尾全部加上.jpg后缀
- ctrl+v 选中块
<operation> <motion>d ←→ 删除光标 (d+6→删除右边6个字符)y ←→ 复制光标 (y+3←复制左边3个字符)
复制粘贴剪切
yy复制当前行nyy复制当前行一下n行p粘贴在当前行上P粘贴在当前行下dd删除一行(其实是剪切)ndd删除当前行一下n行D删除光标所在行到文件末尾的内容x删除光标后一个字符c删除并进入写入模式ciw词中删除一个词并进入写入模式 (change in word)yi"复制双引号中的内容并进入写入模式(yank in “”)
替换和取消
r取代光标所在处字符R从光标所在处开始替换字符,按Esc结束u撤销
查找及替换
f查找/搜索n下一条结果N上一条结果:%s/old/new/g全文替换指定字符串:n1,n2s/old/new/g在一定范围内替换指定字符串
移动
0回到行首$移到行尾:1或gg跳到第一行:$或G跳到最后一行25gg或25G跳到第25行jkhl上下左右
刷新分屏
:source $MYVIMRC刷新vim:split上下分屏:vsplit左右分屏
使用技巧
- 导入命令执行结果
r !命令 - 连续行注释
:n1,n2s/^/#/g:n1,n2s/^#//g:n1,n2s/^/\/\//g
环境搭建
1 | 查看python版本 |






