现在工作中会用到四种编程语言,分别是 R、Python、Shell、SQL,这就需要操作不同的 IDE 工具。关于操作系统也涉及三种,工作用本地电脑是 UOS,个人用电脑是 Windows,工作中经常需要登录 Linux 服务器。因为使用的工具太杂,许多时候快捷键会弄混(ps或者想不起来的时候干脆乱试一通),基于这个简单的原因,这里整理一些常用的快捷键和命令。
快捷键 🔗
Rstudio 🔗
- 执行代码块:
Ctrl + Enter - 代码格式化:
Ctrl + Shift + A - 加注释:
Ctrl + Shift + C
Pycharm 🔗
- 分段执行:
shift + alt + E - 代码格式化:
ctrl + alt + L - 加注释:
ctrl + /
Jupyter notebook 🔗
- 切换块(Cell):选中后,按
M切换为 markdown,Y切换为代码; - 执行块(Cell):选中后,按
Enter键进行编辑;按Shift+Enter进行渲染或执行单元格代码; - 批量加注释:
Ctrl + / !是 Jupyter/IPython 的魔法语法,表示把后面的内容当作 shell 命令执行,而不是 Python 代码。
UOS & Windows 🔗
| 功能 | UOS 系统快捷键 | Windows 系统快捷键 |
|---|---|---|
| 呼出终端 | Ctrl + Alt + T |
Windows + R再输入 cmd |
| 打开文件夹 | Windows + E |
Windows + E |
| 回到桌面 | Windows + D |
Windows + D |
| 临时锁屏 | Windows + L |
Windows + L |
对于 UOS、Windows 这种有图形界面的系统,Ctrl + C(复制)、Ctrl + V(粘贴)、Ctrl + S(保存)这三个是通用的。但是在 Shell 终端,Ctrl + C代表中断进程。
注释符号 🔗
| 语言 | 单行注释符号 | 多行注释符号 |
|---|---|---|
| R | # |
每行行首加上# |
| Python | # |
多行收尾加上'''或""" |
| SQL | -- |
多行首尾加上/*和*/ |
| Shell | # |
每行行首加上#,或者多行收尾加上:'和' |
常用 Linux 命令 🔗
Linux 命令给我的感觉就是操纵文件,不同权限操作不同目录下的文件,有时要查看、移动文件,有时要搜索、查找文件,有时压缩文件后移动,或是解压缩文件。
权限 🔗
sudo:superuser do ,以超级管理员的权限去执行。
比如sudo mv /data/datafile2/2454984/07 /data/datafile2/data/07,我要把/data/datafile2/2454984/07目录下所有文件夹都转移到/data/datafile2/data/07目录下,此时我是用 hadoop 用户登录的,直接执行转移命令会报错“Permission denied”,加上 sudo 命令就不报错了。
chown: change owner,修改文件/目录的所属用户。
比如sudo chown -R hadoop:hadoop /data/datafile2/yf/ImageClass,/data/datafile2/yf/ImageClass目录现在属于 root 用户,而使用 hadoop 用户时只能看到,没权限对文件做其他操作,这里将文件改到hadoop用户下,就可以后续进行解压、转移等操作了。
chmod: change mode,改变r(read,读)、w(write,写)、x(execute,执行)的权限。
目录 🔗
cd: change directory,切换目录。
比如cd /home/yuanfan,指切换到/home/yuanfan的目录下。
mkdir: make directory,创建新目录。
比如 mkdir /tmp/uv/env,指创建/tmp/uv/env这个新目录,其实就是创建一个新文件夹。
-
rmdir: remove directory,删除目录。 -
..: 比如cd ..指回到上一级目录,cd ../..指回到上两级目录。 -
pwd: print working directory,打印工作目录。
查看 🔗
ls:list,列出当前目录下的文件清单。
其中,加上-l(long)表示列出详细清单,而加上-a(all)表示列出隐藏文件,使用ls -al表示列出所有包含隐藏文件的详细清单。
ll: 等同于ls -l。
[yuanfan@DCG1JNYC2-R730 ~]$ ll
total 16
-rw-rw-r-- 1 yuanfan yuanfan 784 Jul 15 14:43 Dockerfile
drwxrwxrwx 13 yuanfan yuanfan 4096 Sep 1 13:58 ImageClass
-rw-rw-r-- 1 yuanfan yuanfan 2381 Jul 7 17:08 index.html
[yuanfan@DCG1JNYC2-R730 ~]$ ls
Dockerfile ImageClass index.html
查找 🔗
which:查找某命令或工具的可执行文件安装目录。
比如which python、which nano vim等。
find: 在指定目录按照指定条件进行搜索。
比如find /data/datafile2/yf/ImageClass/data -name "267532464.jpg",在指定目录/data/datafile2/yf/ImageClass/data按照文件名进行匹配。
grep: global regular expression print,按照正则表达式进行匹配。
移动 🔗
-
cp:copy ,复制。 -
mv:move ,移动。 -
rm: remove,删除。
压缩和解压缩 🔗
-
tar: tape archive,磁带归档,用来打包或解包的工具。 -
gzip:GNU zip,单个文件的压缩。
以tar -zxvf R-4.2.2.tar.gz为例,表示把 R-4.2.2.tar.gz 这个文件解压到当前目录下。.tar.gz文件是指,多个文件用 tar打包成一个整体,然后用 gzip 压缩。因此使用对应的解压缩、解包的方式就是z(gzip,解压.gz文件)、x(extract,提取)、v(verbose,输出详细过程)、f(file,文件名)。
对应tar -czvf R-4.2.2.tar.gz R-4.2.2,指把 R-4.2.2 这个目录整个打包压缩,其中c(create,创建)表示打包。
pigz:Parallel Implementation of GZIP,可以并行的 gzip,用于高效压缩或解压大量文件。
以pigz -dc -p 35 ./04.tar.gz | tar -xvf - -C /data/datafile2/yf/ImageClass/data为例,用|作为管道连接了解压和解包两个步骤。前半部分d(decompress,解压)、c(cat)、p(parallel,并行),合起来-dc -p 35就是用35个线程并行解压,解压后进入管道。后半部分加上的C(change directory)是指解包到指定目录下。
在实际工作中,用hadoop用户登录,压缩包04.tar.gz放在/data/datafile1/images目录下,解压后应该放到/data/datafile2/yf/ImageClass/data目录下,以下是三个步骤。
# 切换到压缩包所在目录
cd /data/datafile1/images
# 给当前用户赋权指定目录的更高权限
sudo chown -R hadoop:hadoop /data/datafile2/yf/ImageClass
# 并行解压到指定目录
pigz -dc -p 35 ./04.tar.gz | tar -xvf - -C /data/datafile2/yf/ImageClass/data
特殊符号 🔗
-
-:单横线,通常作为命令的功能开关,比如ls -l、tar -xvf。 -
--:双横线,通常写长选项,比如gcc --version表示查看 gcc 的版本。 -
./:常用语执行当前目录下的脚本或程序,比如./R代表打开R程序,./script.sh代表执行这个.sh脚本。 -
&&- A && B,表示若执行 A 成功则执行 B,若执行 A 失败则 B 跳过。
- A ; B,表示执行 A 无论成败都执行 B。
- A || B,表示若执行 A 失败才执行 B,若执行 A 成功则 B 跳过。
-
|,管道符,和 R 中一样,管道前的输出可作为管道后的输入。
其他 🔗
-
history:查看历史命令,比如history 100查看最近执行过的100条命令。 -
ssh: secure shell,远程连接,比如本地 shell 终端执行ssh -p 22 hadoop@xx.xx.x.xx可以登录服务器上的 hadoop 用户。 -
free -h:查看剩余内存。 -
df -h:查看剩余磁盘空间(disk free)。