快速上手几个Linux命令
用户与密码
当我们打开一个新系统的时候,第一件要做的事就是登录。系统默认有一个 Administrator 用户,也就是系统管理员,它的权限很大,可以在这个系统上干任何事。Linux 上面也有一个类似的用户,我们叫 Root。同样,它也具有最高的操作权限。
对于 Windows 来讲,在你安装操作系统的过程中,会让你设置一下 Administrator 的密码;对于 Linux,Root 的密码同样也是在安装过程中设置的。
在 Windows 里,除了 Administrator 之外,我们还可以创建一个以自己名字命名的用户。那在 Linux 里可不可以创建其他用户呢?当然可以了,我们同样需要一个命令useradd。
Linux 里是“命令行 + 文件”模式。对于用户管理来说,也是一样的。咱们通过命令创建的用户,其实是放在 /etc/passwd 文件里的。这是一个文本文件。我们可以通过 cat 命令,将里面的内容输出在命令行上。组的信息我们放在 /etc/group 文件中。
# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
......
cliu8:x:1000:1000::/home/cliu8:/bin/bash
# cat /etc/group
root:x:0:
......
cliu8:x:1000:
在 /etc/passwd 文件里,我们可以看到 root 用户和咱们刚创建的 cliu8 用户。x 的地方应该是密码,密码当然不能放在这里,不然谁都知道了。
/bin/bash 的位置是用于配置登录后的默认交互命令行的,不像 Windows,登录进去是界面,其实就是 explorer.exe。而 Linux 登录后的交互命令行是一个解析脚本的程序,这里配置的是 /bin/bash。
浏览文件
Linux 的文件系统和 Windows 是一样的,都是用文件夹把文件组织起来,形成一个树形的结构。这一点没有什么差别。只不过在 Linux 下面,大多数情况,我们需要通过命令行来查看 Linux 的文件。
在 Windows 下也有命令行,例如cd就是 change directory,就是切换目录;cd . 表示切换到当前目录;cd .. 表示切换到上一级目录;使用 dir,可以列出当前目录下的文件。Linux 基本也是这样,只不过列出当前目录下的文件我们用的是ls,意思是 list。
我们常用的是 ls -l,也就是用列表的方式列出文件。
# ls -l
drwxr-xr-x 6 root root 4096 Oct 20 2017 apt
-rw-r--r-- 1 root root 211 Oct 20 2017 hosts
第一个字段的第一个字符是文件类型。如果是“-”,表示普通文件;如果是 d,就表示目录。当然还有很多种文件类型,咱们后面遇到的时候再说,你现在先记住我说的这两个就行了。
第一个字段剩下的 9 个字符是模式,其实就是权限位(access permission bits)。3 个一组,每一组 rwx 表示“读(read)”“写(write)”“执行(execute)”。如果是字母,就说明有这个权限;如果是横线,就是没有这个权限。
这三组分别表示文件所属的用户权限、文件所属的组权限以及其他用户的权限。例如,上面的例子中,-rw-r–r-- 就可以翻译为,这是一个普通文件,对于所属用户,可读可写不能执行;对于所属的组,仅仅可读;对于其他用户,也是仅仅可读。如果想改变权限,可以使用命令 chmod 711 hosts。
第二个字段是硬链接(hard link)数目
第三个字段是所属用户,第四个字段是所属组。第五个字段是文件的大小,第六个字段是文件被修改的日期,最后是文件名。你可以通过命令chown改变所属用户,chgrp改变所属组。
安装软件
在 Windows 下面,在没有类似软件管家的软件之前,我们其实都是在网上下载 installer,然后再进行安装的。
在 Linux 下面,凭借rpm -qa和dpkg -l就可以查看安装的软件列表,-q 就是 query,a 就是 all,-l 的意思就是 list。
如果真的去运行的话,你会发现这个列表很长很长,很难找到你安装的软件。如果你知道要安装的软件包含某个关键词,可以用一个很好用的搜索工具 grep。
如果要删除,可以用rpm -e和dpkg -r。-e 就是 erase,-r 就是 remove。
Linux 也有自己的软件管家,CentOS 下面是 yum,Ubuntu 下面是 apt-get。
你可以根据关键词搜索,例如搜索jdk、yum search jdk和apt-cache search jdk,可以搜索出很多很多可以安装的 jdk 版本。如果数目太多,你可以通过管道 grep、more、less 来进行过滤。
选中一个之后,我们就可以进行安装了。你可以用yum install java-11-openjdk.x86_64和apt-get install openjdk-9-jdk来进行安装。
安装以后,如何卸载呢?我们可以使用yum erase java-11-openjdk.x86_64和apt-get purge openjdk-9-jdk。
Windows 上的软件管家会有一个统一的服务端,来保存这些软件,但是我们不知道服务端在哪里。而 Linux 允许我们配置从哪里下载这些软件的,地点就在配置文件里面。
其实无论是先下载再安装,还是通过软件管家进行安装,都是下载一些文件,然后将这些文件放在某个路径下,然后在相应的配置文件中配置一下。
在 Windows 里面,最终会变成 C:\Program Files 下面的一个文件夹以及注册表里面的一些配置。对应 Linux 里面会放的更散一点。例如,主执行文件会放在 /usr/bin 或者 /usr/sbin 下面,其他的库文件会放在 /var 下面,配置文件会放在 /etc 下面。
Linux 上面有一个工具 wget,后面加上链接,就能从网上下载了。
下载下来后,我们就可以进行解压缩了。Windows 下可以有 winzip 之类的解压缩程序,Linux 下面默认会有 tar 程序。如果是解压缩 zip 包,就需要另行安装。
yum install zip.x86_64 unzip.x86_64
apt-get install zip unzip
如果是 tar.gz 这种格式的,通过 tar xvzf jdk-XXX_linux-x64_bin.tar.gz 就可以解压缩了。
对于 Windows 上 jdk 的安装,如果采取这种下载压缩包的格式,需要在系统设置的环境变量配置里面设置JAVA_HOME和PATH。
在 Linux 也是一样的,通过 tar 解压缩之后,也需要配置环境变量,可以通过 export 命令来配置。
vim 就像 Windows 里面的 notepad 一样,是我们第一个要学会的工具。
如果想要编辑,就把光标移动到相应的位置,输入i,意思是 insert。进入编辑模式,可以插入、删除字符,这些都和 notepad 很像。要想保存编辑的文本,我们使用esc键退出编辑模式,然后输入“:”,然后在“:”后面输入命令w,意思是 write,这样就可以保存文本,冒号后面输入q,意思是 quit,这样就会退出 vim。如果编辑了,还没保存,不想要了,可以输入q!。
运行程序
我们都知道 Windows 下的程序,如果后缀名是 exe,双击就可以运行了。
Linux 不是根据后缀名来执行的。它的执行条件是这样的:只要文件有 x 执行权限,都能到文件所在的目录下,通过./filename运行这个程序。当然,如果放在 PATH 里设置的路径下面,就不用./ 了,直接输入文件名就可以运行了,Linux 会帮你找。
nohup command >out.file 2>&1 &。这里面,“1”表示文件描述符 1,表示标准输出,“2”表示文件描述符 2,意思是标准错误输出,“2>&1”表示标准输出和错误输出合并了。合并到哪里去呢?到 out.file 里。
ps -ef 可以单独执行,列出所有正在运行的程序,grep 上面我们介绍过了,通过关键字找到咱们刚才启动的程序。
awk 工具可以很灵活地对文本进行处理,这里的 awk ‘{print $2}‘是指第二列的内容,是运行的程序 ID。我们可以通过 xargs 传递给 kill -9,也就是发给这个运行的程序一个信号,让它关闭。如果你已经知道运行的程序 ID,可以直接使用 kill 关闭运行的程序。
在 Windows 里面还有一种程序,称为服务。这是系统启动的时候就在的,我们可以通过控制面板的服务管理启动和关闭它。
Linux 也有相应的服务,这就是程序运行的第三种方式,以服务的方式运行。例如常用的数据库 MySQL,就可以使用这种方式运行。
在 Ubuntu 中,我们可以通过 apt-get install mysql-server 的方式安装 MySQL,然后通过命令systemctl start mysql启动 MySQL,通过systemctl enable mysql设置开机启动。之所以成为服务并且能够开机启动,是因为在 /lib/systemd/system 目录下会创建一个 XXX.service 的配置文件,里面定义了如何启动、如何关闭。
通过命令yum install mariadb-server mariadb进行安装,命令systemctl start mariadb启动,命令systemctl enable mariadb设置开机启动。同理,会在 /usr/lib/systemd/system 目录下,创建一个 XXX.service 的配置文件,从而成为一个服务。
shutdown -h now是现在就关机,reboot就是重启。