Linux 详细命令操作大全一

- 运行 runlevel 可以查看当前系统的运行级别

- 输入: clear 或者 ctrl + l  ,表示清屏
- pwd命令: 显示当前的目录路径

**默认比较重要的目录**
- /bin:  存放的是 系统的命令,比如 cd,ls....

- /etc: 存放的是项目的配置文件, 比如mysql的 配置文件 my.cnf

- /home
 	-  如果是超级用户root,那么root用户进入系统的默认路径是 /root

	- 如果是普通用户,那么/home目录下面会创建一个和用户名称一样的目录,该用户进入系统的默认路径就是 当前目录

	  比如: peter 普通用户, 默认的路径就是  /home/peter

	- 规范:把 当前用户的 项目资料, 存放在 这个用户的 家目录下面
	
-  /root: 超级用户的家目录

- /sbin: 里面的命令只有超级用户root可以执行

- /usr: 把安装的软件存放在这个目录


## 命令
- **cd:  表示进入到某一个目录**
	- `.`   : 表示当前目录, 一般不是配合cd使用.   .的用法一般用来执行shell脚本
	- `.. `  :  表示当前路径的 上一级 目录.  如果 路径以 . 或者 .. 开头都表示 相对路径
	- `~` : 表示用户家目录,  不管当前在哪个目录,只要执行 cd ~,就直接跳转到 当前用户的家 目录.  cd 后面不加任何字符,也表示跳转到用户家目录
	- `/ `: 表示 根目录,   路径如果是以  / 开头表示  绝对路径
	- `-` : 表示 用户 上一次 所在的目录
	
- **ls: 查看当前目录下面所有的 文件和 文件夹**
- ls 命令格式: ` ls  -al  文件名`

  - -al  表示选项, 选项的字符可以是多个, 顺序没有要求
  - 如果不加文件名,那么是显示当前文件下面所以的文件
  - 如果加了文件名,那就只显示这个文件的详情

- ls -l : 表示列出所有文件的详细信息
	- 包含7部分
	

```python
-rwxr-xr-x  |  1 | root | root   |  45784 |   8月  20 2019  |  uniq
```
- **第一部分`-rwxr-xr-x`: 表示当前文件的权限**

	- 第一个字符:表示文件类型
  		- `-`: 表示文件
  		- d: 表示文件夹
  		- l : 表示软连接, 相当于window的快捷方式  

	- 后面的9个字符表示文件权限: 前面3个字符表示当前用户权限, 中间3个字符表示所属组的用户权限,最后3个字符表示其他用户权限
 		 - `-`:没有权限
 		 - r: 有可读权限
  		- w:有可写权限
 		 - x:有可执行权限
- **第二部分 `1`:**
	- 如果是文件夹: 表示当前文件夹里面有几个文件夹,  ls -al  是显示隐藏的文件和文件夹
  - 如果是文件:表示当前文件的硬链接,硬链接表示两个文件同时指向硬盘的同一个区域 

- **第三部分 root:  哪个用户创建的这个文件**

- **第四部分 root:  这个用户所属的用户组**

- **第五部分 45784:  表示文件大小 (单位是字节)**

- **第六部分` 8月  20 2019`: 表示当前文件修改时间**

- **第七部分: 表示文件的名称**

- ls -a : -a这个参数表示显示所有隐藏的文件和文件夹
	- 所有的隐藏文件和文件夹 都是 以 . 开头 
- ls -lh:  -h这个参数表示把 文件大小 默认的字节(byte) 用 比较容易 看的方式(k,M,G) 显示

- ## touch: 创建一个或者多个文件

  - 格式: touch 文件名1 <文件名2 文件名3...>

- ## mkdir:创建目录

  - 格式: mkdir 目录1 <目录2  目录3>, 如果没有 -p 选项,只能创建 一级 的文件夹
  - 加了 -p 选项:  mkdir  -p  a/b/c, 表示 可以 创建 嵌套的 a/b/c 的目录

- ## 命令后面在 空格 --help, 表示查看当前命令有哪些选项可以使用, 会显示 这些 选项详细的使用说明

  - 比如:   ls  --help

- ## rmdir: 删除空目录,不能删除文件和非空目录

- ## rm命令: 删除文件个文件夹命令

  - -r :  递归的删除一个目录下面所有的文件和文件夹
  - -f :  不提示信息,强制删除
  - 通常的用法:  rm -rf  文件名
  - 特殊用法:  rm -rf  c*,  表示删除c字符开头的所有的文件,.  *是一个通配符,能匹配所有的字符
  
 - ## cp命令:  赋值或者拷贝文件或者文件夹
 	 - 格式:  cp  源文件路径  目标文件路径
    	- 如果目标路径是一个目录, 那么会原样拷贝源文件到目录中
    	- 如果目标路径是一个文件名,那么会把源文件名重新命名成新的文件名   
    	- 如果拷贝的是文件夹,那么 需要加 -r 参数, 表示递归拷贝: 比如  cp -p a aaa

- ## 选项 可以放到 命令的后面,也可以放在 整个命令的后面

  - 例如:  cp -r  a aaa  和  cp a  aaa -r  的结果是一样的

- ## mv命令: 重命名或者剪切文件

  - 格式  mv 源文件名 目标文件名
    - 如果 目标文件名是一个 目录,那么 直接把源文件移动到该目录下
    - 如 目标文件一个文件名, 移动之后,会重新命令成新的文件名

- ## cat命令:  把文件的内容全部显示出来

  - 格式:  cat  文件名称

- ## tac命令: 从后往前把文件的内容全部显示

  - 格式: tac 文件名称

- ## head 命令:  显示文件开头某几行

  - 格式: head -n 文件名
  - 如果没有执行 -n 多少行, 那么默认显示 10行
  - 如果执行 -n 是 20行, 比如:  head -20 文件名 , 那么显示文件的 前20行数据

- ## tail命令: 显示文件末尾的某几行

  - 格式: tail -n 文件名
  - 如果没有 -n , 默认显示 文件末尾 的 10行
  - 如果加了 -n, 表示 显示末尾的 n 行, 比如 tail -5 文件名,就是显示后面5行数据
  - 特殊用法:  实时监控当前文件有没有新的内容写入
    - 格式 tail -f 文件名:  它是一个阻塞的状态,如果有新的内容写入, 会立刻显示新写入的内容


## tree命令: 显示当前目录的结构层次.  注意:需要安装 `yum install tree`

## history: 显示当前用户 之前输入过的 所有的命令

## echo命令: 通常的用法是 在一个文件中 追加少量的内容

- 格式 echo "字符串"   >或者>> 文件名
  - 如果是一个  > : 表示 新写入的 内容会覆盖 文件中的所有内容
  - 如果是两个  >: 表示 把新写入的内容 追加到 文件末尾

## nl命令: 

- 格式: nl  文件名:   显示所有文件内容,并显示每一行的行号

## wc命令: 显示一个文件的 行数, 单词数, 字符数

- 格式: wc 文件名
- 如果想单独显示行数,单词数,字符数.  需要在wc命令后面加选项
  - -l 表示行数: wc  -l  a.txt
  - -w表示单词数: wc -w a.txt
  - -m 表示字符数: wc -m a.txt

## more / less 命令: 可以一屏或者一行显示文件中的内容

- 格式: more/less  文件名
- enter: 按行查看
- 空格:按屏来查看
- q键:退出查看的内容
- more查看到文件最后会自动退出,     less不会,需要点击q键
- less可以点击 上下键,进行按行查看
- 特殊用法: 如果一个文件夹下面有很多文件,为了不把所有的文件全部显示,只想一屏一屏查看,可以通过加  | more命令查看,这样这个文件夹下面所有的文件都是按照一屏一屏的输出
  - 例如一屏一屏查看/bin目录下所有的文件,命令首相  cd /bin , 然后 ls -l | more  ,  管道  | 的意义,是 把前面命令的输出的内容,当做后面命令的输入内容 



## vim的三个模式:   格式vim 文件名

- 命令模式: 使用vim 文件名, 默认进入的就是命令模式.  不能直接去写数据,只能通过命令对文件内容进行增删改查
- 插入模式(编辑模式): 相当于在编辑器中对文件内容进行修改.  
  - 进入到插入模式的方法
    - 由命令模式进入插入模式:   点击 i 键
    - 由编辑模式进入插入模式:  先点击 ESC 键 进入 命令模式,  然后点击 i 键进入 插入模式
- 编辑模式(末行模式): 表示当操作完文件之后,需要对文件进行保存或者退出.
  - 如果当前模式是命令模式: 直接点击 shift + : , 后加加上保存或者退出的按键, 例如    (:w 保存)  (:q退出)
  - 如果当前模式是插入模式
    - 首先由插入模式进入到命令模式:  按 ESC 键
    - 由命令模式进入到编辑模式: 点击 shift + :  , 进行对文件的保存或者退出



## 命令模式常用的一些操作

- shift + z + z : 保存并退出当前文件
- vi a.txt +3: 表示进入到命令模式, 光标定位在 第三行
- vi a.txt +: 表示 光标定位在 最末行
- G: 定位到文件最末行
- gg: 定位到文件首行
- ngg: 表示从任何其他行,定位到第n行. 比如 5gg, 表示定位到第5行.    如果还想继续从当前行往下偏移5行,点击 5,然后点击enter
- shift + 4: 表示定位到 当前行 最末尾的字符
- shift + 6 或者 0数字: 表示定位到 当前行 最开始的字符
- yy: 复制当前行
- nyy: 复制由当前行开始往下的n行, 比如当前行在第2行, 如果执行3yy,表示 复制第2行到第4行的内容
- p: 在当前行处,粘贴之前复制的内容
- ctrl + f : 下翻一页
- ctrl + b: 上翻一页
- ctrl + d: 下翻半页
- ctrl + u :  上翻 半页
- x :  表示 删除光标 右边的一个字符
- nx: 表示 删除 光标 右边 n 个字符
- X (shift + x): 表示 删除光标 左边的一个字符
- nX (3 + shift + x): 表示 删除光标 左边的 3个字符
- dd: 表示 删除当前行
- ndd: 表示删除当前行 下面的 n 行
- u: 表示 撤销上一次的操作, 可以连续点击 u, 表示 撤销上n次的操作
- ctrl + r : 表示反撤销

**在三种模式中,如果是非正常退出.  比如点击 ctrl + z 退出,或者电脑死机. 那么这种情况会生成一个 名称为 .文件名.swp的交换文件.  比如 .a.txt.swp . 如果生成这种交换文件. 那么下一次 用vim 打开文件, 会出现提示信息,需要点击  enter 才能继续编辑.   通常的做法都是把这个隐藏的交换文件删除掉.就是执行 rm  -rf  .a.txt.swp**


## 由 命令模式 进入 插入模式 常用的按键
- i : 在当前光标插入
- I : 在当前行 非空字符处 插入
- a : 在光标的下一个字符处 插入
- shift + a (A): 在当前行的末尾插入
- o : 在当前行的下一行的空行处插入
- shift + o (O): 在当前行的上一行的空行处插入
- s : 删除光标所在字符,并进入输入模式
- shift + s (S): 删除光标所在的行,并进入输入模式

## 编辑模式(末行模式) 常用的按键
- `:w` : 表示保存文件不退出
- `:q` : 表示 退出, 一般有两种用法. 要么 是 `:wq` 保存退出. 要么是 `:q!` 不保存文件强制退出
- `:wq` :表示 保存文件并退出
- `:x` : 表示 保存文件并退出
- `:q!` : 表示强制退出,不保存修改
- `:w 新文件名称`: 文件修改之后,保存一个新的文件
- `:set nu` : 显示文件内容的 行号
- `:set nonu`: 隐藏文件内容的 行号
- `[:]/关键字` : 这个 `:` 可以写 也可以不写, 输入完字符后, 点击 回车, 会从开头去找第一个匹配到的关键字.
  - 如果想继续 往下 找相同的关键字,那么点击 n
  - 如果想 往上 找相同的关键字,点击 shift + n  (N)
- `[:]?关键字`: 从文件末尾查找匹配的关键字
  - N: 从上往下找匹配的关键字
  - n: 从下往上找匹配的关键字
- `:ns/查找的字符/替换的字符[/g]`
  - n表示第几行
  - /g表示是否全局替换
  - 例如  `5s/hello/HELLO`,表示的意思:  把第5行 第一次匹配到的 hello 改写成 HELLO
  - 例如 `5s/hello/HELLO/g`表示的意思: 把 第5行 所有匹配的的 hello 全部改写成 HELLO
- `:m,ns/查找的字符/替换的字符[/g]`
  - 查找第m行到第n行的数据,并且替换,  `/g`的用法和上面是一样的

- `:%s/查找的字符/替换的字符[/g]`
  - 查找所有行进行替换, `/g`的用法和上面是一样的
- `:n` 表示将光标定位到第 n 行

#### 在终端输入命令,如果想从命令开头跳到命令末尾,快捷键是  ctrl + e

#### 如果想从命令末尾跳到命令开头,快捷键是 ctrl + a

## 用户管理的命令
- whoami: 查看当前的登录用户

- useradd: 添加用户

  - 格式 useradd 用户名:  会自动在/home目录下面创建一个同名的文件夹,如果用这个用户登录,默认的进入系统的路径就是/home/用户名
  - 有一些参数只需要了解
    - -d : 指定一个路径作为 这个用户的 家目录,    一般不会添加这个参数
    - -m: 老版本需要加入这个参数,表示在/home目录下面创建一个同名的家目录.  老版本中如果不加,就不会创建家目录
    - -s: 表示当前用户登录系统的 shell脚本.  老版本中需要指定 -s /bin/bash, 意思是能够登录系统.   如果 -s 指定的是 /sbin/nologin 表示这个用户不能登录系统

- passwd: 设置用户密码

  - passwd 用户名: 给这个用户名设置密码
  - passwd 没有用户名: 给当前登录用户重新设置密码

- userdel: 删除指定的用户

  - userdel 用户名: 删除指定用户, 但是不会删除这个用户的家目录
  - userdel -r 用户名: 删除指定用户的同时 ,删除这个用户的家目录

- su: 切换用户

  - su 非root的用户名: 表示切换到非root的用户, 由root用户切换到其他用户,不需要输入密码
  - su 或者 su - : 表示切换到root用户, 需要输入root用户的密码

- sudo: 给jack用户赋予管理员的权限
	- 步骤:

		- 用root用户, 把jack用户加入到 /etc/sudoers 文件中
		

```python
# 在101 行加入 如下的代码

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
jack    ALL=(ALL)       ALL
```

-  切换到jack用户:  su jack

	- 在所有执行的命令前加入 sudo命令.  比如 编辑 /etc/vimrc, 那么命令是 `sudo vi /etc/vimrc`

- visudo: 直接编辑 /etc/sudoers 文件. 等同于 vi /etc/sudoers

  

Linux 详细命令操作大全一

上一篇:使用QUnit测试JS代码


下一篇:linux环境代码不能发送UDP广播包