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 [选项]
-t
TCP协议-u
UDP协议-l
监听-r
路由-n
显示IP地址和端口号
查看本机监听的端口netstat -tlun
查看本机的所有网络连接netstat -an
查看本机路由表(网关)netstat -rn
- 配置网络(Red Hat专有)
setup
- 设备挂载
mount [-t文件系统] 设备文件名 挂载点
关机重启命令
在服务器上重启需要先停掉服务,否则物理内存会坏。且远程服务器只能重启,关机后需要管理员手动开机
- 关机重启
shutdown [选项] 时间
-c
取消前一个关机命令-h
关机-r
重启
其他关机命令halt
poweroff
init 0
其他重启命令reboot
init6
- 系统运行级别
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.sh
bash 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版本 |