以下是系统的一级目录,这些目录在Linux系统中都有着不同的用处。
为了节省服务器资源,在选择安装centOS时,一般不安装桌面,开发人员必须熟练使用Linux的常用命令来管理服务器。首先我们需要进入命令行模式。
方法一:单机桌面左上角Application—>System Tools—>Terminal命令进入Linux命令行模式,如下图所示:
方法二:安装好虚拟机VMware Tools 之后,生成快捷键CTRL+alt+T 直接进入Linux命令行模式。
在Linux系统中的目录路径或者文件路径分为绝对路径和相对路径。绝对路径指的是文件从根目录开始一直追踪到文件位置的路径,相对路径指的是相对于当前目录的路径。例如:/usr/local/tomcat/webapp/test.war 为绝对路径,webapp/test.war 为相对路径。Linux下所有目录或者文件的操作命令,既可以用绝对路径作为参数,也可以用相对路径作为参数。
注意:
1. 查看当前目录命令 pwd
语法:pwd
指的是当前命令行所在的路径位置。
2. 打开文件命令 cd(重要,常用)
语法:cd[选项][参数]
cd 命令常用的选项
序号 | 取值 | 说明 |
1 | -p | 如果目录是符号链接,则进入实际的目录 |
2 | -L | 如果目录时符号链接,则进入连接的目录 |
3 | - | 单独的“-”表示返回进入本目录之前 |
cd 命令常用的参数
序号 | 取值 | 说明 |
1 | / | 打开根目录 |
2 | 文件夹名称1 | 打开当前目录下的名称为“文件夹名称1”的文件夹 |
3 | ../ | ./代表上级目录,..代表上两级目录 |
cd 命令常见的使用方式:
3. 浏览目录下的文件列表命令 ls(重要、常用)
语法:ls[选项]
ls 命令常用的选项
序号 | 取值 | 说明 |
1 | -a | 查看目录下全部的文件或目录,包含隐藏文件 |
2 | -l | 将文件列表以列表的方式展示出来,一行显示一个文件 |
ls 命令常见的使用方式
4. 创建文件目录命令mkdir(重要、常用)
语法:mkdir[选项]目录名称
mkdir 命令的常用选项
序号 | 取值 | 说明 |
1 | -m | 设定文件的权限,后边可以跟权限标识 |
2 | -p | 帮助用户直接将所需要的目录递归建立起来 |
3 | 缺省 | 直接创建文件目录 |
mkdir命令常见的使用方式
样例1:在jackliang桌面上创建一个文件夹test
$> mkdir ~/桌面/test
语法2:mkdir -p 路径
-p :递归创建路径
样例2:在桌面上创建 test1/test2/test3
$>mkdir -p ~/桌面/test1/test2/test3
5. 删除文件目录命令行 rmdir
语法:rmdir[选项] 目录名称
rmdir 命令常用的选项
序号 | 取值 | 说明 |
1 | -p | 递归将所有层级目录都删除 |
2 | 缺省 | 删除指定的目录 |
rmdir 命令常见的使用方式
6. 删除文件或者目录命令rm(重要、常用)
语法:rm [选项] 文件或目录
rm 命令常用选项
序号 | 取值 | 说明 |
1 | -f | 强制删除制定的文件 |
2 | -i | 互动模式,在删除前会询问使用者是否删除 |
3 | -r | 递归删除 |
rm 命令常见的使用方式
样例:
a)删除 桌面 test1 目录
$>rm -r ~/桌面/test1
b)删除 桌面 oa.sql文件
$>rm -r ~/桌面/oa.sql
c)常用
$>rm -rf 路径
7. 复制文件或目录命令cp
语法:cp [选项] [目录1名称] [目录2名称]
cp 命令的常用选项
序号 | 取值 | 说明 |
1 | -r | 递归持续复制,用于目录的复制行为 |
2 | -f | 为强制(force)的意思,当有重复或其他疑问时, 不会询问使用者,而是强制复制 |
3 | -p | 保存源文件和目录的属性 |
4 | -i | 覆盖既有目录之前询问用户 |
cp 命令常见的使用方式
8. 移动文件、修改文件名命令 mv
语法:mv [选项] 源文件或者目录目标文件或者目录
mv 命令常用选项
序号 | 取值 | 说明 |
1 | -b | 若需覆盖文件,则覆盖前先备份 |
2 | -f | 若已经存在目标文件,则强制覆盖 |
3 | -i | 若目标文件已经存在,则会询问是否覆盖 |
4 | 缺省 | 直接移动文件 |
mv 命令常见的使用方式
但是我个人在使用中发现移动和更改文件名称可以合并使用,比较经典,如下面的示例3:
样例:
1.移动文件:
[jackliang@localhost 桌面]$ mv ~/桌面/abc.txt ~/桌面/test/
2.更改名字:
[jackliang@localhost 桌面]$ mv test/new\ 12.txt test/new.txt
3.将桌面的文件(new\ 12.txt)移动到桌面文件夹(test/test1/)下并改名为(bbb.txt)的复合语句:
[jackliang@localhost 桌面]$ mv new\ 12.txt test/test1/bbb.txt
1. 创建文件命令 touch
语法:touch 文件名称
2. 查看、编辑文件命令vi(重要、常用)
vi命令为unix操作系统或者类UNIX操作系统都具有的功能强大的文件编辑命令,用户输入vi+文件名,便可以进入vi模式进行文件内容查看和编辑。如果文件已经存在,则直接打开文件;如果文件不存在,则系统将打开一个全新的空文件。
vi命令的3中模式:
(1)命令模式
当用户使用vi命令打开文件后,则进入命令模式,用户可以输入命令来执行很多功能。
vi命令模式的常用命令
序 号 | 取 值 | 说 明 |
1 | L | 光标移至屏幕最后一行 |
2 | space | 光标右移一个字符 |
3 | backspace | 光标左移一个字符 |
4 | N+ | 光标向上移动N行 |
5 | n+ | 光标向下移动n行 |
(2)输出模式
如果用户要对文件做修改,则可以键入以下命令进入输入模式 I(i)、A(a)、O(o)。用户进入输入模式可以随意修改文件。除Esc键外,用户输入的任何字符都会被作为内容写入文件,用户输入Esc可以对文件内容进行相关操作。
vi 输入模式下的常用命令
序 号 | 取 值 | 说 明 |
1 | a , i , r , o , A , I , R , O | 编辑模式 |
2 | dd | 删除光标当前行 |
3 | ndd | 删除n行 |
(3)末行模式
如果用户完成文件编辑,则可以按下Esc+“:”组合键进入末行模式,可以对文件内容继续进行搜索,也可以输入“:wq!”进行文件保存并退出,或者输入“:q!”强制退出文件编辑。
vi 末行模式下相关命令
序号 | 取 值 | 说 明 |
1 | :wq! | 保存并退出 |
2 | :q! | 强制退出 |
3 | :s/字符串1/字符串2 | 将文件中出现的字符串1替换成字符串2 |
4 | :set nu | 显示所有的行号 |
vi 总结:
vi(记事本)
3. 查看、编辑文件命令cat
cat命令用于显示文件的全部内容,如果文件较大,则会翻屏显示,所以cat命令适合打开内容较少的文件。当使用[cat 文件名称]打开文件后,可以输入相应的内容,系统将自动保存文件内容。按下CTRL+D组合键将退出文件编辑。
语法:cat [- 参数选项] 文件名称
cat 命令选项说明
序号 | 取值 | 说明 |
1 | > | 创建并打开一个新的文件 |
2 | 缺省 | 展示文件内容 |
cat 命令常见的使用方式
4. 查看文件开头内容命令 head(重要、常用)
head 命令用于显示指定文件开头的内容(默认显示10行)。
语法:head [参数] [文件]
head 输入模式下的选项命令
序号 | 取值 | 说明 |
1 | -n | <行数>显示的行数 |
2 | 默认 | 默认显示文件前10行数据 |
例如:使用head命令显示某个文件开始的n行数据:head -n 文件名称
语法: head -n 文档路径
作用:查看文档的前n行
样例:查看 1.txt 前5行
[jackliang@localhost 桌面]$ head -5 1.txt
5. 查看文件结尾内容命令 tail(重要、常用)
tail 命令用于显示指定文件结尾内容(默认显示10行)。
语法:tail [- 参数选项] 文件名称
tail 输入模式下的选项命令
序 号 | 取 值 | 说 明 |
1 | -f | 该参数用于监视File文件的增长,文件内容更新后,终端显示也将动态更新 |
2 | -n Number | 从倒数第Number行位置读取指定文件的全部内容 |
tail 命令常见的使用方式
语法:tail -n 文档路径
作用:查看文档的后n行
样例:查看1.txt 后5行
[jackliang@localhost 桌面]$ tail -5 1.txt
Linux的用户和用户组
用户:简写u,用户用于登陆,一个用户在 /home/ 下有一个同名对应的目录。用户是指一个操作系统中一系列权限的集合体。操作人员通过用户名和口令可以在系统中执行某一些被允许的操作,不同的用户可以具有不同的权限。Linux系统中每个用户都具有唯一的标识UID。当使用命令创建用户时,不指定用户的UID,则系统将自动为其分配UID。
用户组:简写g,一个或多个用户,按照不同应用规划成一组。用户必须在一个用户组中。用户组就是具有相同特征的用户的集合体。在Linux系统中,每个用户都属于至少一个用户组。Linux操作系统中的每个用户分组都具有唯一标识GID。当用命令创建用户组时,如果没有指定用户组的GID,则系统将自动为其分配GID。
注意:
当使用-u指定用户id时,用户id应尽量大于500,以免冲突。因为Linux操作系统安装后,会默认建立一些用户,所以可能会占用500之内的id号。
Linux权限机制有以下特点:
1. 切换用户命令 su
语法: su [用户名] 或 su -[用户名]
注意:su [用户名] 和 su -[用户名] 都可以用于切换用户。su [用户名]类似于临时切换用户,当使用该命令切换新用户时,仍然沿用原来的用户配置,如环境变量、系统设置等。而使用su -[用户名]进行用户切换时,环境变量、系统设置等全部切换成新用户的用户配置。
2. 查看当前登陆用户命令 whoami
语法:whoami
3. 查看当前用户所属分组命令 groups
语法:groups
4. 退出当前用户登陆的命令 exit
语法:exit
5. 查看当前用户UID 和 GID命令 id
语法:id
查看当前登陆用户的信息(uid 、gid)
uid:是用户组的唯一标识(就是我们说的id)
gid:是用户组的唯一标识(group id)
6. 添加新用户命令 useradd(root权限)
语法: useradd [选项] [用户名]
useradd 相关选项说明
序号 | 取值 | 说明 |
1 | -c | 代表comment,表示一段注释性描述 |
2 | -d | 指定用户主目录 |
3 | -g | 指定用户所属的用户组 |
4 | -G | 指定用户所属的附加组 |
5 | -u | 指定用户的用户号 |
6 | 缺省 | 直接添加用户 |
useradd 命令常见的使用方式
样例:新建用户 test1(没有密码的账户)
$>useradd test1
[jackliang@localhost javaEE]$ su root
密码:
[root@localhost javaEE]# useradd test1
[root@localhost javaEE]# ls ~/
anaconda-ks.cfg install.log install.log.syslog
[root@localhost javaEE]# ls /home/
jackliang test1
[root@localhost javaEE]# passwd test1
更改用户 test1 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost javaEE]#
语法: useradd -g 已有组名 新用户名
样例: 在hadoop用户组下新建用户test2
$>useradd -g hadoop test2
7. 修改用密码命令passwd(root权限)
语法:passwd [选项] [参数]
passwd 修改用户密码命令选项说明
序号 | 取值 | 说明 |
1 | -d | 删除密码,仅有系统管理员才能使用 |
2 | -f | 强制执行 |
3 | -k | 设置只有密码过期后才能更新 |
4 | -l | 锁住密码 |
5 | -s | 列出密码的相关信息,仅有系统管理员才能使用 |
6 | -u | 解开以上锁的账号 |
样例:更改test1 用户名密码为123456
$>passwd test1
[jackliang@localhost ~]$ su test1
密码:
[test1@localhost jackliang]$ id
uid=501(test1) gid=501(test1) 组=501(test1) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[test1@localhost jackliang]$
注意:在添加用户之后,只有为其设置密码,用户才能登陆。
8. 添加用户组命令 groupadd(root权限)
语法:groupadd [选项] [组名称]
groupadd 添加用户组选项说明
序号 | 取值 | 说明 |
1 | -g | 指定工作组的id |
2 | -r | 创建系统工作组 |
3 | -o | 允许添加组ID不唯一的工作组 |
4 | 缺省 | 添加用户分组 |
样例: 新建用户组hadoop 组
$> groupadd hadoop
groupadd 命令常见的使用方式
9 删除用户命令 userdel(root权限)
语法:userdel [选项] [用户名]
语法:userdel 现有用户名
样例:删除用户test1
$>userdel test1
小知识:1.如果用户已经登陆了,不能删除 2.删除后/home/用户目录还存在
userdel 删除用户选项说明
序号 | 取值 | 说明 |
1 | -r | 删除用户及其登陆日志等信息 |
2 | -f | 强制删除用户,即使用户已经登陆 |
3 | 缺省 | 直接删除用户 |
userdel 命令常见使用方式
10. 修改用户信息命令 usermod (root权限)
语法:usermod [选项][参数][用户名]
usermod 修改用户信息选项说明
序号 | 取值 | 说明 |
1 | -c | 修改用户账号的备注文字 |
2 | -d | 修改用户登录时的目录 |
3 | -e | 修改账户的有效期 |
4 | -f | 修改密码过期后多少天关闭账号 |
5 | -g | 修改用户所属的群组 |
6 | -G | 修改用户所属附加组 |
7 | -l | 修改用户账号名称 |
8 | -L | 锁定用户密码,是密码无效 |
9 | -u | 修改用户id |
10 | -U | 解除密码锁定 |
usermod 命令常见的使用方式
语法:usermod -g 现有组名 现有用户名
样例:将test1用户组更改为hadoop
$>usermod -g hadoop test1
概念
Linux操作系统为文件定义了读、写、执行3种权限,不同的用户或者用户组可以具有不同的权限。系统采用了“r” “w" "x" 来分别表示文件的读、写、执行权限。使用之前学习的ls -l 命令可以查看到用户在当前目录或者文件的操作权限。
如上图所示,首字母代表文件类型(d代表目录,-代表文件),接下来的9位字符每三位分别代表文件拥有者、同组用户、其他用户的权限。
示例:
d rwx r-x r-x. 2 root root 4096 Sep 23 2001 bin
从左至右分别代表如下含义:
常用的变更权限命令为 chmod(重要、常用)
语法: chmod [选项] [参数]
chmod 变更权限选项说明
序号 | 取值 | 说明 |
1 | -c | 显示指令执行过程,但只返回更改的部分 |
2 | -f | 不显示错误信息 |
3 | -r | 递归授权 |
4 | -v | 显示指令执行过程 |
chmod 的参数可以分为两种,分别是字母权限模式和数字权限模式。
(1)字母权限模式:权限模式使用 u(1-3位)、g(4-6位)、o(7-9位)分别代表拥有者、同组用户、其他组用户,使用 + 和 - 代表赋予和收回权限,使用 r、w、x 代表读、写、执行的权限。
示例:
(2)数字权限模式:为了简化授权步骤,用户也可以采用数字模式进行授权,使用二进制的形式代表r、w、x 三种权限
数字权限码的组合:---(0);--x(1);-w-(2);-wx(3);r--(4);r-x(5);rw-(6);rwx(7)
示例:
> chmod 753 -r f01
> chmod 777 -r f01
在Linux的应用进程中,我们需要对进程进行管理,如查看某个进程是否启动,以及在必要的时刻杀掉某个进程。
1. 查看进程命令 ps
ps命令是Linux操作系统查看进程的命令。通过ps命令我们可以看到Linux操作系统中正运行的进程,可以获得进程的PID(进程的唯一标识)。通过PID可以对进程进行相应的管理。
语法:ps -ef|grep[进程关键词]
[root@localhost jackliang]# ps -ef|grep sshd
root 2125 1 0 09:13 ? 00:00:00 /usr/sbin/sshd
root 5152 4844 0 20:38 pts/0 00:00:00 grep sshd
[root@localhost jackliang]#
如上所示:第一列表示开启的进程的用户;第二列表示进程唯一标识PID;第三列表示父进程PPID;第四列表示CPU占用的资源比例;最后一列表示进程所执行程序的具体位置。
2. 杀掉进程命令 kill
当系统中有进程进入死循环,或者需要被关闭时,可以使用kill命令对其进行关闭。
语法:Kill -9 [PID]
PID为Linux操作系统中进程的标识。
1. 清屏命令 clear
语法:clear
2. 查询命令详细参数的命令 man
语法:man [命令名称]
样例:查看 chown 命令语法
$> man chown
3. 挂载命令 mnt
语法:mnt [设备名称] [挂载点]
4. 终止当前的操作
快捷键:CTRL+z
以上是我学习Linux系统操作入门的命令及详解,用于项目开发,常用的Linux操作命令有cd、mkdir、cp、rm、vi、ps、chmod、kill、tail、head等。
练习:——Linux操作系统下用户的赋权操作
//由当前用户切换到root用户。
[jackliang@localhost ~]$ su root
密码:
//使用root用户新建test用户。
[root@localhost jackliang]# useradd test
//查看home下的用户
[root@localhost jackliang]# ls /home/
jackliang test test1 test2
//给test用户新建密码
[root@localhost jackliang]# passwd test
更改用户 test 的密码 。
新的 密码:
无效的密码: 过于简单化/系统化
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
//切换到test用户
[root@localhost jackliang]# su test
//查看test用户的用户组、用户、UID、GID
[test@localhost jackliang]$ id
uid=503(test) gid=503(test) 组=503(test) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
//打开test用户主目录
[test@localhost jackliang]$ cd /home/test
//在test用户下新建test.info文件,在文件中输入I am a tester 并保存文件
[test@localhost ~]$ vi test.info
//查看文件权限。确定当前用户、用户组、其他用户对test.info文件的权限
[test@localhost ~]$ ll test.info
-rw-rw-r--. 1 test test 14 12月 18 21:28 test.info
//将文件的读、写权限赋给组用户,将文件的读、执行权限赋给其他用户(这里采用的是数字码权限)
[test@localhost ~]$ chmod 665 test.info
//修改完后再次查看文件权限
[test@localhost ~]$ ll test.info
-rw-rw-r-x. 1 test test 14 12月 18 21:28 test.info
//切换到root用户
[test@localhost ~]$ su root
密码:
//将test用户加入root组
[root@localhost test]# usermod -g root test
[root@localhost test]# su test
//查看test用户对test.info文件的权限
[test@localhost ~]$ ll test.info
-rw-rw-r-x. 1 test test 14 12月 18 21:28 test.info
//切换到root用户
[test@localhost ~]$ su root
密码:
//新建test2用户组
[root@localhost test]# groupadd test2
//将root用户组所属分组修改为test2
[root@localhost test]# usermod -g test2 root
//删除test用户
[root@localhost jackliang]# userdel test
//查看当前用户下的文件
[root@localhost jackliang]# ls
test 公共的 模板 视频 图片 文档 下载 音乐 桌面
//查看当前用户/home下的用户信息(注意:test用户已经删除,但是删除后/home/用户目录还存在)
[root@localhost jackliang]# ll /home/
总用量 16
drwx------. 24 jackliang jackliang 4096 12月 18 22:09 jackliang
drwx------. 4 503 503 4096 12月 18 22:07 test
drwx------. 4 test1 test1 4096 12月 18 16:20 test1
drwx------. 4 test2 hadoop 4096 12月 18 16:31 test2
[root@localhost jackliang]#