对于 Linux
,普通开发者不必像运维工程师那样掌握大量复杂的操作命令,更不用像 Linux
内核工程师那样了解精深的 Linux
内核,但是掌握一些 Linux
的基本概念和常用的命令,能够大幅度地提高开发效率,尤其是对于数据工程师而言, Shell
更是构建数据管道重要的一环,是不可或缺的一项技能。本篇文章将介绍和总结一些我在日常开发中用到的Linux基本命令。
ls
命令用于显示文件的相关信息,默认情况下, ls
用来打印当前目录清单。同时, ls
命令还可以查看目录中包含的文件、子目录、文件权限
用法:
ls [选项][参数]
显示包含隐藏文件在内的所有文件
cp
命令用于复制文件和目录,将一个或多个文件或目录复制到目标目录
用法:
cp[选项][源][目的目录]
复制时保留源文档的所有属性,或者叫创建备份
rm
命令用于删除文件或目录,也可以将某个目录及其下的所有文件和子目录都删除。对于链接文件,只是删除链接,原有文件保持不变。这个命令在使用的时候要特别小心。尤其是在生产环境中,使用 rm-rf*
命令是禁忌。
rm[选项][文件]
忽略不存在的文件且不提示,强制删除
mkdir
命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
语法
mkdir[选项][目录]
建立多级目录
cat
命令用于连接文件或标准输入并打印。常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
语法
cat[选项][文件]
展示所有,等价于 -vET
Linux 中的环境变量主要分为系统级和用户级,系统级环境变量是每个登录到系统的用户都要读取的变量,而用户级的环境变量则是用户使用系统时加载的个人环境变量。
/etc/profile
文件:当用户登录 Shell 时执行的第一个文件,用来完成一些初始化工作,通常是调用 /etc/bash.bashrc
文件来完成具体工作。/etc/environment
文件:系统级别的环境变量,并不是一个脚本,内容为一些环境变量赋值语句,用来给不从 Shell 启动的程序设置环境变量。/home
目录下)~/.profile
:每个用户都可以调用来输入自己使用的 shell
信息,用户登录时,该文件只执行一次。~/.bashrc
:包含登录用户的专用 bash shell
的 bash
信息。也就是说每开一个 shell
,该文件都会被读取一次。shell
的环境变量。简而言之,环境变量就是指定一个目录,软件在运行的时候,相关程序会按照该目录来查找相关文件。
前面是从系统和用户级来划分环境变量。如果按照变量的生存周期来划分,那么变量就可以分为:
export
命令来声明,变量在关闭 shell
的时候自动失效。用 vim 编辑器编辑 /etc/profile
文件来增加变量,将会作用于 Linux 下所有用户,且具有永久性。(此方法谨慎使用!)
这种方法较为安全,可以把使用这些环境变量的权限控制到用户级别,主要是针对某一特定的用户,如果需要给某个用户权限使用这些环境变量,只需要修改其个人用户主目录下的 .profile
文件就可以了。
export
命令定义环境变量(临时的)在控制台中设置,不赞成这种方式,这种设置只对当前的 shell 起作用,换一个 shell 设置就无效了。在 shell 的命令行下直接使用 [export 变量名=变量值] 来定义变量。
eg : 添加一个自定义的变量
[root@VM_0_17_centos ~]# export HADOOP_USER_NAME=hdfs
[root@VM_0_17_centos ~]# echo $HADOOP_USER_NAME
hdfs
使用 echo
输出变量时需要在变量名前面加 $
符号
echo
命令例如,我们查看 PATH
环境变量
[root@VM_0_17_centos ~]# echo $PATH
/usr/local/R/bin:/usr/local/apache-maven-3.6.3/bin:/usr/java/jdk1.8.0_171/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
可以用来显示与当前用户相关的环境变量,还可以让命令在指定环境中运行。
[root@VM_0_17_centos ~]# env
XDG_SESSION_ID=117261
HOSTNAME=VM_0_17_centos
HARDWARE_PLATFORM=x86_64
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
可以用来显示当前 Shell 中的所有变量,包括其内建环境变量(与 Shell 外观等相关)、用户自定义变量及导出的环境变量。
vimdiff
直观查看环境变量对于刚才讲到的三种环境变量的查看 :export
、 env
、 set
我们还可以通过 vimdiff
工具来直观的比较它们之间的差别:
[root@VM_0_17_centos ~]# temp=soundhearer
[root@VM_0_17_centos ~]# export temp_env=soundhearer
[root@VM_0_17_centos ~]# env|sort>env.txt
[root@VM_0_17_centos ~]# export|sort>export.txt
[root@VM_0_17_centos ~]# set|sort>set.txt
[root@VM_0_17_centos ~]# vimdiff env.txt export.txt set.txt
修改环境变量
变量的修改有以下几种方式:
从头向后开始匹配,删除符合匹配字串的最短数据
删除环境变量
unset
可以用来删除指定的环境变量
[root@VM_0_17_centos ~]# unset temp
[root@VM_0_17_centos ~]# echo $temp
[root@VM_0_17_centos ~]#
source
命令用来让配置的文件立即生效,避免每次修改配置脚本文件后,还需要退出终端甚至重启之后才能生效。