Linux 的命令

Linux 常用命令

1.基本目录结构

在这里插入图片描述

● bin (binaries)存放二进制可执行文件
● sbin (super user binaries)存放二进制可执行文件,只有root才能访问
● etc (etcetera)存放系统配置文件
● usr (unix shared resources)用于存放共享的系统资源
● home 存放用户文件的根目录
● root 超级用户目录
● dev (devices)用于存放设备文件
● lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
● mnt (mount)系统管理员安装临时文件系统的安装点
● boot 存放用于系统引导时使用的各种文件
● tmp (temporary)用于存放各种临时文件
● var (variable)用于存放运行时需要改变数据的文件

2.常用命令

2.1 打印命令

echo "hello world"

在这里插入图片描述
将hello 2覆盖到1.txt文件中

echo "hello 2" > 1.txt

将hello 3追加到1.txt文件中

echo "hello 3" >> 1.txt

2.2 ls命令

ls -la #详细查看,所有文件和目录

● -l (long)详细列表
● -a (all) 显示隐藏文件、特殊目录.和…
● ll = ls -l

2.3 man命令

查看命令的帮助

man ls #查看ls命令的使用

● ctrl+f:下一页
● ctrl+b:上一页
● :q退出

2.4 cd命令

进入目录

#绝对路径
[root@s1 ~]# cd /vagrant
[root@s1 vagrant]# ls
bootstrap.sh  centos_v1.box  centos_v2.box  centos_v3.box  lua-demo  Vagrantfile

#进入用户的宿主目录
cd ~ 

cd .. #进入上级目录

#./ 不写,都是代表当前目录

cd - 进入上一个历史目录

[root@s1 man]# cd ~
[root@s1 ~]# pwd
/root
[root@s1 ~]# cd -
/usr/local/share/man
[root@s1 man]# pwd
/usr/local/share/man
[root@s1 man]#

2.5 pwd 命令

显示当前工作目录(print working directory)
在这里插入图片描述

2.6 su 命令

切换用户

[vagrant@s1 /]$ cd /root/
-bash: cd: /root/: Permission denied #使用vagrant不能访问/root

[vagrant@s1 /]$ su root
Password:
[root@s1 /]# cd /root/

2.7. mkdir 命令

● 创建目录(make directoriy)
○ -p 父目录不存在情况下先生成父目录 (parents)

[vagrant@s1 ~]$ cd ~ #进入宿主目录
[vagrant@s1 ~]$ ll
total 0
[vagrant@s1 ~]$ mkdir /home/vagrant/java-project/src #创建目录
mkdir: cannot create directory ‘/home/vagrant/java-project/src’: No such file or directory
[vagrant@s1 ~]$ mkdir -p /home/vagrant/java-project/src #-p自动产生父目录
[vagrant@s1 ~]$ ll
total 0
drwxrwxr-x 3 vagrant vagrant 16 Jul  6 11:16 java-project
[vagrant@s1 ~]$ cd java-project/
[vagrant@s1 java-project]$ ll
total 0
drwxrwxr-x 2 vagrant vagrant 6 Jul  6 11:16 src
[vagrant@s1 java-project]$

2.8 tree命令

以树列表目录

su root #切换管理员
yum install -y tree

[root@s1 vagrant]# su vagrant
[vagrant@s1 ~]$ tree java-project
java-project
├── resources
│   └── db
└── src

2.9 touch 命令

创建空文件
在这里插入图片描述

2.10 cp 命令

拷贝文件,目录
● -r:递归拷贝

[vagrant@s1 ~]$ cp java-project/src/Hello.java ./java-project/src/main/java/
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
└── src
    ├── Hello.java
    ├── main
    │   └── java
    │       └── Hello.java
    └── test

递归拷贝

[vagrant@s1 ~]$ cp -r  java-project/resources/ java-project/src/main/
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
│       └── jdbc.properties
└── src
  ├── main
  │   ├── java
  │   │   └── Hello.java
  │   └── resources
  │       └── db
  │           └── jdbc.properties
  └── test

8 directories, 3 files

2.11 rm命令

删除文件或者目录
● -r:递归删除
● -f:强制删除

[vagrant@s1 ~]$ rm java-project/src/Hello.java
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
└── src
    ├── main
    │   └── java
    │       └── Hello.java
    └── test

2.12 mv

移动文件和目录

[vagrant@s1 ~]$ mv  java-project/resources/ java-project/src/main/
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── Hello.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files

mv可以修改文件名

[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── Hello.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files
[vagrant@s1 ~]$ mv java-project/src/main/java/Hello.java java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── HelloWorld.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files

2.13 cat命令

显示文本文件内容 (catenate)

cat hello.java

2.14 more、less

分页显示文本文件内容

more OAuth2Config.java
less OAuth2Config.java

2.15 head

● -n:显示前几行内容

[vagrant@s2 javademo]$ head -n 10 OAuth2Config.java
package com.lxs.oauth2.config;

import org.bouncycastle.util.encoders.Base64Encoder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer;
import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer;

2.16 tail

● -n 显示后几行数据
● -f b.log 循环读取(fellow,即时读取)

tail -n 10 OAuth2Config.java

场景1
启动两个session
在其中一个session追加内容

[vagrant@s1 ~]$ echo "hello 1111" >> OAuth2Config.java
[vagrant@s1 ~]$ echo "hello aaaaa" >> OAuth2Config.java
[vagrant@s1 ~]$ echo "hello bbbbb" >> OAuth2Config.jav

在另一个session中,可以刷新最新的日志

tail -n 20 -f OAuth2Config.java

3. 压缩打包命令

3.1 gzip

把文件和目录压缩成gz格式

gzip OAuth2Config.java #压缩
gzip -d OAuth2Config.java.gz #解压

3.2 bzip2

以bzip2格式压缩和解压

 bzip2 OAuth2Config.java
 bzip2 OAuth2Config.java.bz2 -d

3.3 tar(推荐)

● 打包目录成tar文件
● 整合gzip和bzip2压缩
● -c 建立一个压缩文件的参数指令(create)
● -x 解开一个压缩文件的参数指令(extract)
● -z 是否需要用 gzip 压缩
● -j 是否需要用 bzip2 压缩
● -v 压缩的过程中显示文件(verbose)
● -f 使用档名,在 f 之后要立即接档名(file)

3.3.1 打包
tar -cvf java-project.tar ./java-project/ #打包java-project目录
rm -rf java-project #删除java-project
tar -xvf java-project.tar
3.3.2 以gzip方式压缩
tar -czvf java-project.tar.gz ./java-project #z表示已gz格式压缩
tar -zxvf java-project.tar.gz #解压
3.3.3 以bzip2方式压缩
#压缩
tar -cjvf java-project.tar.bzip2 ./java-project
#解压
tar -xjvf java-project.tar.bzip2

4. vim命令

vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大。

4.1 vim 的模式

在这里插入图片描述

4.2 底行命令

● :wq保存退出
● :q! 不保存退出
● :q 退出,如果内容有改变不能退出
● :set number 显示行号
● :set nonumber 隐藏行号
● :w filename 另存为文件
● :e!撤销所有操作
● :行号:调到指定的行

4.3 移动命令

● w b 下一个,上一个单词
● 0, $ 行首,行尾
● gg 第一行
● G 最后一行
● xG到x行

4.4 替换命令

● :1, s / p r i v a t e / p u b l i c / g 将第一行到追后一行的 p r i v a t e 替换为 p u b l i c ● : 1 , s/private/public/g 将第一行到追后一行的private替换为public ● :1, s/private/public/g将第一行到追后一行的private替换为public:1,s/public/protected/c 将第一行到追后一行的public替换为protected(有提示)

4.5 编辑命令

● x删除一个字符
● dd 删除一行
● yy复制一行
● p粘贴
● 输入v进入选择模式,选择内容,输入y复制,调到要黏贴的位置输入p粘贴
● 输入u 撤销操作
● 在一般模式中输入/8080查找8080,输入n查找下一个
● 在一般模式输入r+替换的字符,执行替换

5 用户管理

linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰

5.1 用户管理的配置文件

● 保存用户信息的文件:/etc/passwd
● 保存密码的文件:/etc/shadow
● 保存用户组的文件:/etc/group
● 保存用户组密码的文件:/etc/gshadow
● 用户配置文件:/etc/default/useradd

5.2 /etc/passwd格式

在这里插入图片描述
在这里插入图片描述
用户的分类
● 超级用户:(root,UID=0)
● 普通用户:(UID在1000以上)
● 伪用户:(UID在1到999)
○ 系统和服务相关的:bin、daemon、shutdown等
○ 进程相关的:mail、news、games等
○ 伪用户不能登陆系统,而且没有宿主目录

5.3 /etc/shadow格式

密码配置文件

在这里插入图片描述

5.4 用户的组

● 每个用户至少属于一个用户组
● 如果创建用户,没有指定组,此用户指定跟用户名同名组
● 每个用户组可以包含多个用户
● 同一个用户组的用户享有该组共有的权限
在这里插入图片描述

5.5 用户和组管理命令

5.5.1 用户管理命令

● useradd:添加用户
○ -u 指定组ID(uid)
○ -g 指定所属的组名(gid)
○ -G 指定多个组,用逗号“,”分开(Groups)
○ -c 用户描述(comment)
○ -e 失效时间(expire date)
● usermod:修改用户
○ -l 修改用户名 (login)usermod -l a b(b改为a)
○ -g 添加组 usermod -g sys tom-G添加多个组 usermod
○ -G sys,root tom–L 锁定用户账号密码(Lock)
○ –U 解锁用户账号(Unlock)
● userdel:删除用户
○ -r 删除账号时同时删除目录(remove)

5.5.2 组管理的命令

● 添加组:groupadd
○ -g 指定gid
● 修改组:groupmod
○ -n 更改组名(new group)
● 删除组:groupdel
● groups 显示用户所属组

5.5.3 案例

添加一个jack用户,设置它属于users组,并添加注释信息

useradd jack
usermod -g users jack
usermod -c "hr jack" jack

#等于上面三个命令
useradd -g users -c "hr jackson" jackson

设置密码

passwd jack

将jack添加到sys和root组中

usermod -G sys,root jack
usermod -G sys,root jackson

把jackson从sys组中删除

gpasswd -d jackson sys

显示jack的组

groups jack
groups jackson
groups root
groups vagrant

添加一个hr组

groupmod -n sale hr

jack添加到sale组

usermod -G sale jack
groups jack

6 权限管理

6.1 权限表示符号

在这里插入图片描述
执行

ll

在这里插入图片描述
● 第1位:文件类型(d 目录,- 普通文件,l 链接文件)
● 第2-4位:所属用户权限,用u(user)
● 表示第5-7位:所属组权限,用g(group)表示
● 第8-10位:其他用户权限,用o(other)表示第
● 2-10位:表示所有的权限,用a(all)表示
三种基本权限

  • r 读权限(read)4
  • w 写权限(write)2
  • x 执行权限 (execute)1

6.2 chmod 命令

chmod修改文件权限命令(change mode)
● 参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)
● 两种方式

  • 例如:chmod u+x a.txt,给a.txt增加当前用户的执行权限
  • 用数字来表示权限(r=4,w=2,x=1,-=0) 例如:chmod 750 b.txt :表示b.txt的权限当前用户是rwx,当前用户的组rx,其他用户没有权限

案例

su vagrant
#设置~/vagrant目录让其他人可以进入
chmod o+x vagrant
#这时我们切换jack,可以执行(进入)~/vagrant
su jack 
cd /home/vagrant
#设置~/vagrant的目录的其他用户有读写执行权限
su vagrant/root
chmod o+rwx ~/vagrant

#修改OAuth2Config.java的权限,让所有人有读写执行
su root/vagrant
chmod 777 ~/OAuth2Config.java
#修改OAuth2Config.java的权限,当前用户

在这里插入图片描述

#设置OAuth2Config.java文件
当前用户(u)
 - rwx
当前组(g)
 - rx
 其他用户(o)
 - 没有权限
 所有用户(a)
  xxx

#方式1
chomod u+rwx,g-w,o-rwx ~/OAuth2Config.java
#方式2
chmod 750 OAuth2Config.java

6.3 chown 命令

改变文件所属用户,文件所属的组

  • -R:递归
chown root:users OAuth2Config.java
#使用jack查看OAuth2Config文件,因为jack属于users,所以可以查看
cat OAuth2Config.java
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值