前言:
本篇博客主要以一个 Linux 新手的视角, 分享 Linux 系统中的一些常用 shell 命令. 帮助大家快速上手, 以最实用的命令为主.
如果大家对 Linux 内核与 shell 与 bash 之间的关系不太清楚, 详见另外一篇博客.
再此, 有一个概念, 即所有的命令都相当于某个软件, 它帮助你完成某个任务. 无论是 cd,ls,mv 还是 VIM,Less,update, 这些都会在 bash 中被解释最终对 Linux 内核进行操作.
博主用的系统为 RedHat8.0
1, 实验环境控制
作为一个 Linux 系统的学习者, 很有可能因为一些不当操作造成系统不可逆的损坏. 所以在此希望大家可以先在虚拟机中进行操作练习. 以下命令为使用者在命令行中开启一个虚拟机并显示, 必要时进行重置的命令.
rht-vmctl start workstation #开启一个工作站
rth(RedHat)-vm(virtual mahine)ctl(control)顾名思义为红帽系统的虚拟机控制命令
start 开始
workstation 工作站
rht-vmview view workstation #将工作站显示出来
view 视图
- rht-vmctl stop workstation #关停虚拟机
- rht-vmctl poweroff workstation #即刻断电
与 stop 不同的是 poweroff 不会正常关闭正在运行的程序之后再关机, 而是立即关机.
rht-vmctl reset workstation #重置虚拟机
当操作者发生不可逆的失误, 如误删 boot 文件导致系统文件无法加载, 就可以对虚拟机进行重置, 相当于手机的格式化.
至此, 大家就拥有了一台虚拟机.
2, 命令行操作
在打开虚拟机上的终端之后, 我们就可以通过输入命令的方式使用计算机了. 这里我们打开的是一个 shell 窗口, 我们使用它来与 Linux 内核做互动.
关于 shell 的快捷键:
- ctrl+shift+n #开启一个新 shell
- ctrl shift t #在当前 shell 里开启一个新的页面
- ctrl+d \ Ctrl shift d #关闭 shell
关于命令行操作的快捷键:
- Ctrl+c #终止命令, 当当前操作的命令执行出问题, 想即刻关停时.
- ctrl a #光标移动到命令行首
- ctrl e #光标移动到命令行尾
- ctrl u #删掉本行光标之前命令
- Ctrl t #删掉本行光标之后命令
- ctrl shift c #复制所选命令
- ctrl shift v #粘贴所选命令
3, 命令格式
a)行提示符
- [[email protected] Desktop]$
- kiosk # 开启 Shell 的用户
- @ # 分隔符
- foundation0 # 主机短名称(注意: 操作者可以连接别的主机, 所以这里的信息显示是必要的)
- Desktop # 当前工作目录的名称
- $ # 身份提示符, 代表了当前的操作权限信息
b)命令规范
[email protected] Desktop]$ <命令> 空格 <参数> 空格 <目标>
命令必须在行提示符之后输入, 没有行提示符的输入时无效的
命令和参数和目标之间要用空格分开
参数中 "-" 表示单词的缩写,"--" 表示单词的全拼
参数用来指定命令的某些功能, 可以加也可以不加
使用参数时 -a -b -c = -abc = -cab =-bac
释放行提示符(CTRL+C)
<TAB > 用于命令行的补齐
4, 常用命令分类
这是在我们的基础操作中需要经常使用的实用命令, 需要全部掌握且记熟
1)历史命令记录调用
history #查看历史命令
!+ 数字 #执行 history 中数字所在行命令
!+ 字母 #执行最近由此首字母开头的命令
ctrl r + 关键字 #搜索带有此关键字的历史
- <上>|<下> #直接显示命令历史
- history -c #清空历史命令记录
2)文件或目录的建立(目录就是我们所说的文件夹)
touch 文件名 #创建文件
touch 文件名 1 文件名 2 ... #创建多个文件
touch -t 年月日时分 文件名 #修改文件时间信息(注意: touch 命令不仅可以创建文件, 还可以修改其信息)
mkdir 目录名 #创建目录
mkdir 目录名 1 \ 目录名 2.. #创建多个目录
mkdir -p 多级文件名 #建立多级目录, 若没有则创建
3)文件删除
- rm file #移除文件
- rm -f file1 file2 #强制移除多个文件
4)目录删除
- rm -r dir #-r(recursion)递归删除, 因为一个目录下面默认有多个文件, 所以需要递归来删除
- rm -fr dir1 dir2 dir3 #-f(force)强制执行递归移除多个文件
5)文件编辑
gedit 文件名 #图形化打开文件
VIM 文件名 #命令行化打开文件
- <i>
- #插入
- <esc>
- #推出插入模式
- <:wq>
- #保存且退出
6)文件查看
history> 文件名 #将 history 内容放到文件中(用来建立一个非空文件用来方便执行后面的操作)
cat 文件名 #显示文件全部内容
cat -b 文件名 #显示文件全部内容和行号(不显示空行)
cat -n 文件名 #显示文件全部内容和行号(显示空行)
head 文件名 #显示文件前 10 行
head -n 文件名 #显示文件前 n 行
tail 文件名 #显示文件后 10 行
tail -n 文件名 #显示文件后 n 行
Less 文件名 #用 Less 打开文件 Less(分页浏览工具, 会开启 Less 环境. Less 是一个工具, 用来帮助显示文件文本)
- <上>|<下> #逐行查看
- <pgup>|<pgdown> #逐页查看
/ 关键字 #搜索关键字, n 向下匹配 N 向上匹配
- v #从 lee 环境进入 VIM 编辑完成: wq 回到 Less
- q #退出
stat 文件名 #查看该文件状态属性
7)文件的复制
cp(copy)
cp 原文件 目的文件 #复制源文件到目的文件, 若目的文件存在则被源文件覆盖, 若不存在则创建
cp 文件 1 文件 2 文件 3 目录 #将文件 1 文件 2 文件 3 拷贝到目录中
cp -r 目录 1 目录 2 #将目录 1 递归拷贝到目录 2
8)文件的移动
mv(move)
注意: 相同磁盘只是文件名的更改, 不同磁盘有文件建立过程与文件删除过程
mv 文件名 1 文件名 2 #文件名 2 存在则覆盖, 不存在则重命名为文件名 1
mv 目录 1 目录 2 #将目录 1 移动到目录 2
mv 文件名 1 文件名 2 目录 #将文件名 1 文件名 2 移动到目录
df #磁盘信息
9)查看文件类型
file 文件名 #查找该文件的文件类型
例如:#!/bin/bash #shell script 型文件
#include<stdio.h> #C source 型文件
10)文件内容统计
- wc(Word count)
- wc -l #统计行数 line
- wc -w #统计字 (单词) 数 Word
- wc -m #统计字符数 m
- wc -c #统计字节 c(octet?)数
11)文件路径
pwd(pathway) #当前路径
cd 绝对路径 / 相当路径 #移动到某个路径下
- cd.. #返回上一级目录
- cd- #回到上个路径
12)列出文件
- ls(list)
- list -i #属性
- list-d #目录本身的属性
- list-s #文件大小
- list -S #按大小排序
- list -a #显示所有文件包括隐藏文件
13)文件查找匹配
- *# 通配符
- ?# 匹配符
- rm -fr f[[:alpha:]]ile #中间夹带字母的全部删除
- rm -fr f[[:digit:]]ile #中间夹带数字的全部删除
- rm -fr f[[:alnum:]]ile #中间夹带字母或数字的全部删除
- rm -fr f[[:punct:]]ile #中间夹带字符的全部删除
- rm -fr f[[:space:]]ile #中间夹带空格的全部删除
- rm -fr f[[:space:][punct]]ile #中间夹带字符或空格的全部删除
- rm -fr [[:space:][punct]] #只要夹带字符或空格的全部删除, 其他也一样
14)对于 VIM 编辑器的命令及其操作
对于 VIM 编辑器的个性化配置
a)可进行临时配置, 信息只存储在内存中, 如在 VIM 命令行中输入 ":set nu", 将在当前打开的 VIM 编辑器中显示行标. 当编辑器关闭, 命令失效, 下次打开编辑器行标并不存在.
b)若想要使行标一直存在, 可进行下面的配置.
当前用户 (普通用户, 非超级用户) 对当前环境下 VIM 编辑器的配置在当前用户的家目录, 执行 VIM ~/.vimrc 进入到 VIM 配置文件
进入配置文件以后, 输入 "set 参数", 对当前用户的 VIM 进行配置.
例如: ":set nu" 会在 VIM 中显示行标.
(注意, 若此时超级用户进入到 VIM 将不会显示行标, 因为如上设置只是对普通用户生效)
c)超级用户对 VIM 编辑器的配置, 将作用于所有文件, 执行 VIM /etc/vimrc 进入到 VIM 的配置文件, 在配置文件的头或尾进行如上编辑就可以对超级用户及各个普通用户进行操作.
(猜测: 普通用户对超级用户的配置文件进行了继承, 超级用户的配置普通用户可以读取, 而普通用户的配置文件对超级用户来说不可读.)
若想进行更多更铉酷的设置, 可自行搜索!
搜索关键字
命令行输入 "/ 关键字" 回车后高亮显示所输入的关键字
- :noh #取消高亮
- n #向下匹配
- N #向上匹配
批量操作
复制
- y(n)l #复制 n 个字母
- y(n)w #复制 n 个单词
- y(n)y #复制 n 行
删除
- d(n)l #删除 n 个字母
- d(n)w #删除 n 个单词
- d(n)d #删除 n 行
剪切
- c(n)l #剪切 n 个字母
- c(n)w #剪切 n 个单词
- c(n)c #剪切 n 行
注意: 剪切完会进入插入模式
粘贴
p
撤销
u
恢复
ctrl+r
VIM 可视化模式, 可进行批量操作
在命令模式下按[ctrl+v] 进入可视化模式
键盘上下左右可以移动选择区域
在可视化模式下批量添加字符
ctrl + v 选中要加入字符所在的列
a)按大写的[i]
b)加入字符
c)按[esc]
VIM 中字符的替换
:%s / 原字符 / 替换后字符 / g
(注意:%s 表示全文所有的行, g 表示全文所出现原字符的列)
所以上述命令会替换文档中所有行列中的目标字符
替换示例:
? :%s/: /@/g 替换全文的: 为 @
? :1,5s/: /@/g 替换 1-5 行的: 为 @
? :/hello/,/bye/s/: /@/g 替换 hello 到 bye 之间的: 为 @
(注意: 两个替换关键字之间需要唯一, 不可以互相包含. 如 abcde 与 abc 不可以.)
VIM 的分屏功能
ctrl+w s 上下分屏
(注意: 分屏文件是同一个文件, 对其中一个文件的修改就相当于对所有分屏文件的修改.)
ctrl+w v 左右分屏
ctrl+w c 关闭光标所在屏幕
ctrl+w 上下左右 光标移动到指定屏幕
:sp file2 同时编辑当前文件和 file2
在命令模式下光标的移动
- gg #光标移动到第一行行首
- G #光标移动到文件的最后
: 数字 #光标移动到指定行
VIM 的编写模式进入
- i #光标所在位置插入
- I #光标所在行行首插入
- o #光标所在行下一行插入
- O #光标所在行的上一行插入
- a #光标所在字符的下一个字符插入
- A #光标所在行的行尾插入
- s #光标所在字符删除并插入
- S #光标所在行删除并插入
VIM 的退出模式
- :q #退出, 在文件内容没有被改变时使用
- :wq #退出保存
- :q! #强制退出不保存, 在改变文件后不想保存时使用
- :wq! #强制退出保存 在对只读文件编写时使用, 注意, 所编辑的只读文件必须时
VIM 异常退出
文件. swp 是 VIM 文件进行编辑时产生的临时文件, 若文件编辑时关闭 shell, 这个文件就会被遗留下来. 且此文件内会保存还没有写入部分的数据, 此文件如果被手动删掉, VIM 会恢复正常工作, 但不会保存更改过的内容.
当 VIM 还没保存编写内容而被强制关闭, 当下次打开时会出现报错, 以下是处理报错时的快捷键:
[O]pen Read-Only 只读打开
[E]dit anyway 继续编辑
[R]ecover 恢复数据
[D]elete it 删除 [.swp] 文件
[Q]uit 退出
[A]bort 恢复后退出
(建议: 先 r 后 wq, 再 D, 再打开就可以看到保存过上次更改内容的文件了)
15)家目录
家目录顾名思义就是当前用户的家, 其实就是当前用户可以执行当前权限且进行操作的地方.
例如: 超级用户的家目录就是在 root, 也就意味着超级用户可以对根目录进行各种操作. 而普通用户的家目录在 / home / 用户名下, 意为着普通用户在这个这个目录下可进行各种操作, 对于自己家目录的上级目录只能进行访问.(相当于只能对别人的家进行拜访而不能进行装修. 理解这一点对之后的路径学习与对家命令的操作甚至对权限的理解都非常重要.)
提示行中的~ 表示当前用户家目录
cd ~ 会进入当前用户的
~username 进入指定用户的家目录
~+ 当前目录( ~ + 相当于., 不过. 只在 shell 中通用,~ + 在 Unix 中都可以用)
~- 进入当前目录之前所在目录(olddir)cd - 中的 "-"(注意: cd - 中的 - 只能在 cd 中表示旧目录, 而~- 子阿所有命令中均可表示旧目录)
总结
了解了上面的命令基本上对 Linux 系统, 及其 shell 进行日常简单的操作了, 也可以在 VIM 编辑器中进行书写工作. 基础的操作虽然枯燥, 但包含着此系统区别于其他系统的最基本的特点, 更应该积极思考, 区别联系, 才能以小见大, 慢慢发掘系统深层次的设计理念. 同时也应量力而行, 不懂就问, 能解决的困惑当下立即解决, 困惑没有大小也并不绝对, 只有不断学习!
常用 Linux 命令(+VIM 编辑器的常用命令与设置)
来源: http://www.bubuko.com/infodetail-3367372.html