基础常用
Linux常用命令
Linux文本目录常用命令
pwd 显示当前所在目录位置信息
[root@Centos7-100 network-scripts]#:pwd
/etc/sysconfig/network-scripts #显示当前位置
cd 切换目录
cd [option] [dir]
cd [选项] [目录]
- #切换到用户上一次所在的目录路径,游戏来说就是解锁一个传送点,然后传送到上一个存档位置。
~ #切换到当前用户的家目录,默认不接参数,直接执行cd也会达到相同的效果。游戏来说就是直接 用回城卷回城了。
.. #切换到当前目录的上一级目录,游戏来说就是返回上一个地图。
tree 大树显示目录结构
tree [option] [directory]
tree [选项] [目录]
[root@Centos7-100 network-scripts]#:tree -L 1
.
├── ifcfg-eth0
├── ifcfg-lo
├── ifdown -> ../../../usr/sbin/ifdown
├── ifdown-bnep
├── ifdown-eth
.....
重要选项
-d #只显示目录
-L N #遍历目录的最大层数,N为大于0的正整数
mkdir 创建目录
按时间创建目录
使用`date +%y%m%d`
Example: mkdir `date +%y%m%d`
tar cfvz /tmp/bak.`date +%y%m%d`.tar.gz /etc
YmdHM代表年月日时分,可以通过date --hlep查看哪些字母代表什么
注意:`这个符号是键盘上~,而不是\'.
重要说明点:那个日期$(date +%Y%m%d)的 date命令和后边的日期格式的+号之前有一个空格。直接连写生成不了日期
mkdir [option] [directory]
mkdir [选项] [目录]
-p #1.递归创建目录,递归的意思就是指目录下面还有目录
#2.默认不加参数时如果要创建的目录已经存在,就会报错提示。使用-p参数后即使需要创建的目录 已经存在了,也不会提示报错。
-m #选项用于手动配置所创建目录的权限,而不再使用默认权限
[root@Centos7-100 test]#:mkdir -p /root/test/data/data2/data3
[root@Centos7-100 test]#:tree
.
└── data
└── data2
└── data3
[root@Centos7-100 test]#:mkdir -m 777 data2
[root@Centos7-100 test]#:ll
总用量 0
drwxr-xr-x. 3 root root 19 4月 9 19:58 data
drwxrwxrwx. 2 root root 6 4月 9 20:00 data2
mkdir -p /home/{test1/test2,test3/test4} 会同时创建/home/test1/test2、/home/test3/test4 目录
touch 创建文件或更改文件时间戳
touch [option] [file]
touch [选项] [文件]
-a:或--time=atime或--time=access或--time=use 只更改存取时间;
-c:或--no-create 不建立任何文件;
-d:<时间日期> 使用指定的日期时间,而非现在的时间;
-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
-m:或--time=mtime或--time=modify 只更该变动时间;
-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
-t:<日期时间> 使用指定的日期时间,而非现在的时间;
ls 显示目录下的内容及属性信息
ls [option] [file]
ls [选项] [文件或目录]
-l #详细的列出文件及目录的信息
-a #显示目录下所有的文件,包含以"."开头的隐藏文件
-h #以人类可读的信息显示文件或目录大小
-d #显示目录本身的信息,而不是目录里面的文件的信息
-r #反向排序
-t #根据最后修改时间进行排序
-i #显示inode节点信
cp 复制文件或目录
cp [option] [source] [dest]
cp [选项] [源文件] [目标文件]
重要选项
-p #复制文件时保持源文件。
-d #如果复制的源文件是符号链接,则仅复制符号链接本身,而且保留符号链接所指向的目标文件或目 录。
-r #递归复制目录,即复制目录下的所有层级的子目录及文件
-a #等同于上面的p,d,r这3个选项的功能总和。
-i #如果复制的文件已经存在,覆盖前提示用户确认。
-t #默认情况下命令格式是"cp 源文件 目标文件",使用-t参数可以颠倒顺序,格式变成"cp -t 目 标文件 源文件"。
mv 移动或重命名文件
mv [option] [source] [dest]
mv [选项] [源文件] [目标文件]
mv [选项]... [-T] 源文件 目标文件
mv [选项]... 源文件... 目录
mv [选项]... -t 目录 源文件...
重要选项
--backup[=CONTROL] : 为每个已存在的目标文件创建备份
-b : 类似–backup 但不接受参数
-f, --force : 覆盖前不询问
-i, --interactive : 覆盖前询问
-n, –nechoo-clobber : 不覆盖已存在文件 如果您指定了-i、-f、-n 中的多个,仅最后一个生效。
--strip-trailing-slashes : 去掉每个源文件参数尾部的斜线
-S, --suffix=SUFFIX : 替换常用的备份文件后缀
-t, --target-directory=DIRECTORY : 将所有参数指定的源文件或目录移动至指定目录
-T,--no-target-directory : 将目标文件视作普通文件处理
-u, --update : 只在源文件文件比目标文件新,或目标文件不存在时才进行移动
-v, --verbose : 详细显示进行的步骤
⚠ rm⚠ 删除文件或目录
警告这是Linux最危险的命令之一,跪求谨慎使用。
语法格式
rm [option] [file]
rm [选项] [文件或目录]
重要选项:
-f #强制删除,忽略不存在的文件,不提示确认
-r #递归删除目录及其内容
-i #删除前需要确认
echo命令——linux最基础的命令
ehco命令基本用法
echo [OPTION]... [STRING]...
echo重要选项
echo -n #表示不换行输出
echo "" #输出命令 规范
echo -e #输出转义字符
echo —E #取消反斜杠ESC转义 (默认)
-version 显示版本信息
-help 显示帮助
常用的转义字符如下:
\b 转义后相当于按退格键(backspace) ,但前提是”\b”后面存在字符,具体效果参考下方示例。
\c 不换行输出,在”\c”后面不存在字符的情况下,作用相当于echo -n,具体效果参考下方示例。
\n 换行,效果看示例。
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾,具体效果查看示例;
\v 与\f相同;
\t 转以后表示插入tab,即制表符,已经在上面举过例子;
\r 光标移至行首,但不换行,相当于使用”\r”以后的字符覆盖”\r”之前同等长度的字符,只看这段文字描述的话可能不容易理解,具体效果查看示例;
\ 表示插入”\”本身;
cat:合并文件&查看文件内容
重要选项
-A:--show-all 等价于 -vET
-b:--number-nonblank 对非空输出行编号,即在每行前显示所在行号
-e:等价于 -vE
-E: --show-ends 在每行结束处显示 $
-n:--number 对输出的所有行编号,即在每行前显示所在行号
-s:--squeeze-blank 不输出多行空行
-t:与 -vT 等价
-T:--show-tabs 将跳 字符显示为 ^I
-u :(被忽略)
-v: --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 显示此帮助信息并离开
开关机
1。关机命令
shutdown -h now
shutdown -h +1
halt
init0
poweroff
2.重启命令
reboot
shutdown -r now
shutdown -r +1
init 6
3.注销命令
logot
exit
技巧tips
执行刚刚执行的一条命令:
!!
执行最近一个以指定字符串开头的命令(比如man)
!man
!m
引用上一个命令的最后一个参数
!$
<ESC>, .
VIM常用命令
缩进 定位
ctrl+v 选中 shift加 ">" 向后缩进 “<" 向前缩进
#定位 :
vim +N
#报错快速定位
普通模式
hjkl #上下左右
gg #移动到第一行
G #移动到最后一行
0 #移动到行首
$ #移动到行尾
w #以单词移动
yy #复制
nyy #复制N行
p #在光标下行复制
u #撤销上一次操作
ctrl + r #前一步
r #替换
dd #删除 剪切
ndd #删除N行 剪切
dG #删除光标所在行到前面所有行
dgg #删除光标所在行到前面所有行
d$ #删除光标所在行到此行后面所有的内容
d0 #删除光标所在行到此行前面所有的内容
di+加符号 #把符号里面的内容都抹去
文本 模式
i #从普通模式进入编辑模式,插入位置在光标的前面
a #从普通模式进入编辑模式,插入位置在光标的后面
I #从普通模式进入编辑模式,插入位置在行首
A #从普通模式进入编辑模式,插入位置在行尾
o #从普通模式进入编辑模式,插入位置光标所在行下面新建一行
O #从普通模式进入编辑模式,插入位置光标所在行上面新建一行
ESC 从编辑模式切换到普通模式
Backspace 编辑模式下删除光标前面的文本
命令行模式
:w 保存
:q 不保存退出
:wq 保存并退出
:wq! 强制保存并推出
:x 保存并退出
/关键词
n 向下查找关键词
N 向上查找关键词
:noh 取消关键词高亮显示
:setnu 显示行数
N + Ctrl + A 快速加减
N + Ctrl + X
f+单词 快速定位
关键词+ Ctrl+p 单词补全
正则表达式和三剑客命令
正则表达式
^ 以什么开头,"^oldboy" 表示匹配以oldboy单词开头的行
$ 以什么结尾,"oldboy$",表示匹配以oldboy单词结尾的行
^$ 组合符号,表示空行。逻辑解释就是以^开始,以$结尾的行
. 匹配任意且只有一个字符,但是不匹配空行
\ 转义字符,让特殊符号失效,如"\."只表示小数点
* 匹配前一个字符(连续出现)0次或1次以上,注意,当重复0次的时 候,表示什么也没有,但是会撇皮所有内容
.* 组合符,匹配所有内容
[abc] 匹配[]内包含的任意一个字符a或b或c
[a-z] 匹配[]内包含a-z任意一个字符
[0-9] 匹配[]内包含0-9的任意一个数字
[^abc] 匹配不包含^后的任意字符a或b或c,这里的^表示对[abc]的取反,与在外面的^意义不同
--------------------拓展
+ 匹配前1个字符1次或多次
[:/]+ 匹配括号内的 ":" 或 "/" 字符1次或多次
? 匹配前一个字符0次或1次
| 表示或者,即同时过滤多个字符串
() 分组过滤,被括起来的内容表示一个整体,另外()的内容可以被后面的\n引用,n为数字,表示引用第几个括号的内容
\n 引用前面()里的内容,例如(abc)\1 表示匹配abcabc
a{n,m} 匹配前一个字符最少n次,最多m次
a{n,} 匹配前一个字符最少n次
a{,m} 匹配前一个字符最多m次
a{n} 匹配前一个字符正好n次
grep
grep文本搜索,正则表达搜索文本
基本语法
用法: grep [选项]... PATTERN [FILE]...
选项
正则表达式选择与解释:
-E, --extended-regexp PATTERN 是一个可扩展的正则表达式(缩写为 ERE)
-F, --fixed-strings PATTERN 是一组由断行符分隔的定长字符串。
-G, --basic-regexp PATTERN 是一个基本正则表达式(缩写为 BRE)
-P, --perl-regexp PATTERN 是一个 Perl 正则表达式
-e, --regexp=PATTERN 用 PATTERN 来进行匹配操作
-f, --file=FILE 从 FILE 中取得 PATTERN
-i, --ignore-case 忽略大小写
-w, --word-regexp 强制 PATTERN 仅完全匹配字词
-x, --line-regexp 强制 PATTERN 仅完全匹配一行
-z, --null-data 一个 0 字节的数据行,但不是空行
‘egrep’即‘grep -E’。‘fgrep’即‘grep -F’。
直接使用‘egrep’或是‘fgrep’均已不可行了。
若FILE 为 -,将读取标准输入。不带FILE,读取当前目录,除非命令行中指定了-r 选项。
如果少于两个FILE 参数,就要默认使用-h 参数。
如果有任意行被匹配,那退出状态为 0,否则为 1;
如果有错误产生,且未指定 -q 参数,那退出状态为 2。
磁盘命令
lsblk列出块设备
命令作用:
打印出当前块设备以及分区的信息,包括大小,类型,挂载点
[root@Centos7-100 ~]#:lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 37G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sr0 11:0 1 4.5G 0 rom
Linux中挂载详解以及mount命令用法
挂载概念
Linux中的根目录以外的文件要想被访问,需要将其“关联”到根目录下的某个目录来实现,这种关联操作就是“挂载”,这个目录就是“挂载点”,解除次关联关系的过程称之为“卸载”。
注意:“挂载点”的目录需要以下几个要求:
(1)目录事先存在,可以用mkdir命令新建目录;
(2)挂载点目录不可被其他进程使用到;
(3)挂载点下原有文件将被隐藏。
挂载与卸载
挂载方法:mount DECE MOUNT_POINT
mount:通过查看/etc/mtab文件显示当前系统已挂载的所有设备
**命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir**
**命令使用格式:mount [-fnrsvw] [-t vfstype] [-o options] device dir**
device:指明要挂载的设备;
(1) **设备文件**:例如/dev/sda5
(2) **卷标**:-L \'LABEL\', 例如 -L \'MYDATA\'
(3) **UUID**, -U \'UUID\':例如 -U \'0c50523c-43f1-45e7-85c0-a126711d406e\'
(4) **伪文件系统名称**:proc, sysfs, devtmpfs, configfs
dir:挂载点
**事先存在;建议使用空目录;**
**进程正在使用中的设备无法被卸载**;
**常用命令选项**:
**-t vsftype**:指定要挂载的设备上的文件系统类型;
**-r: readonly**,只读挂载;
**-w: read and write**, 读写挂载;
**-n: 不更新/etc/mtab**;
**-a**:自动挂载所有支持自动挂载的设备;(定义在了/etc/fstab文件中,且挂载选项中有“自动挂载”功能)
**-L \'LABEL\'**: 以卷标指定挂载设备;
**-U \'UUID\'**: 以UUID指定要挂载的设备;
**-B, --bind**: 绑定目录到另一个目录上;
注意:查看内核追踪到的已挂载的所有设备:**cat /proc/mounts**
**-o options**:(挂载文件系统的选项)
**async**:异步模式;
**sync**:同步模式;
**atime/noatime**:包含目录和文件;
**diratime/nodiratime**:目录的访问时间戳
**auto/noauto**:是否支持自动挂载
**exec/noexec**:是否支持将文件系统上应用程序运行为进程
**dev/nodev**:是否支持在此文件系统上使用设备文件;
**suid/nosuid**:是否支持在此文件系统上使用特殊权限
**remount**:重新挂载
**ro**:只读
**rw**:读写
**user/nouser**:是否允许普通用户挂载此设备
**acl**:启用此文件系统上的acl功能
注意:上述选项可多个同时使用,彼此使用逗号分隔;
默认挂载选项:defaults:**rw, suid,** **dev, exec, auto, nouser, and async**
上述信息可以通过查看**超级块信息**看到,这里不再对其进行演示。
卸载命令:umount
**交换分区swap**
这里介绍下交换分区,通过实验演示交换分区的创建及挂载
挂载交换分区:
启用:swapon
**swapon [OPTION]... [DEVICE]**
**-a**:激活所有的交换分区;
**-p PRIORITY**:指定优先级;
禁用:**swapoff** **[OPTION]... [DEVICE]**
开机自动挂载
如果我们想实现开机自动挂载某设备,只要修改/etc/fstab文件即可。
文件挂载的配置文件:/etc/fstab
要挂载的设备或伪文件系统 挂载点 文件系统类型 挂载选项 转储频率 自检次序
UUID=6efb8a23-bae1-427c-ab10-3caca95250b1 /boot xfs defaults 0 0
要挂载的设备或伪文件系统:设备文件、LABEL(LABEL="")、UUID(UUID="")、伪文件系统名称(proc, sysfs)
挂载点:指定的文件夹
挂载选项:defaults
转储频率:
0:不做备份
1:每天转储
2:每隔一天转储
自检次序:
0:不自检
1:首先自检;一般只有rootfs才用1;
/etc/fstab和/etc/mtab的区别
/etc/fstab文件的作用:
记录了计算机上硬盘分区的相关信息,启动 Linux 的时候,检查分区的 fsck 命令,和挂载分区的 mount 命令,都需要 fstab 中的信息,来正确的检查和挂载硬盘。
/etc/mtab文件的作用:
先看它的英文是:
This changes continuously as the file /proc/mount changes. In other words, when filesystems are mounted and unmounted, the change is immediately reflected in this file.
记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件等;而/etc/fstab是系统准备装载的。 每当 mount 挂载分区、umount 卸载分区,都会动态更新 mtab,mtab 总是保持着当前系统中已挂载的分区信息,fdisk、df 这类程序,必须要读取 mtab 文件,才能获得当前系统中的分区挂载情况。当然我们自己还可以通过读取/proc/mount也可以来获取当前挂载信息
wc
这个命令的功能也很好记,因为它功能很有限:
wc -c filename:显示一个文件的字节数
wc -m filename:显示一个文件的字符数
wc -l filename:显示一个文件的行数
wc -L filename:显示一个文件中的最长行的长度
wc -w filename:显示一个文件的字数
xargs命令介绍
xargs命令是向其他命令传递命令行参数的一个过滤器,它能够将管道或者标准输入传递的数据转换成
xargs命令后所跟命令的命令行参数
**xargs关键参数 **
-n #指定每行最大参数量是n,可以将标准输入的文本划分为多行,每行显示n个
-d #自定义分隔符
-i #以{}替代前面的结果
-I #以其他符号替代前面的结果
4.练习题
#创建测试文本
cat > test.txt << EOF
123456
789
10 11
EOF
====================================================
#多行输入变单行
[root@linux find]# xargs < test.txt
123456 789 10 11
[root@linux find]# cat test.txt |xargs
123456 789 10 11
====================================================
[root@linux find]# xargs -n 3 < test.txt
123456 789 10
11
[root@linux find]# cat test.txt |xargs -n 3
123456 789 10
11
#自定义分隔符
[root@linux find]# echo splitXsplitXsplitXsplitX
splitXsplitXsplitXsplitX
[root@linux find]# echo splitXsplitXsplitXsplitX|xargs -d X
split split split split
[root@linux find]# echo splitXsplitXsplitXsplitX|xargs -d X -n 2
split split
split split
Linux netstat命令
Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
netstat -lntup|grep 3306
参数
参数说明:
-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table。
-s或--statistics 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。