一、linux注意事项
1、为什么Linux是命令行操作,没有可视化界面?
- 图形化界面操作会消耗更多性能,消耗显卡等资源。
- 命令行操作实际上是通过SSH客户端连接远程服务器。
2、Linux中所有内容都是以文件形式保存,包括硬件
- 硬盘文件是
#/dev/sd[a-p]
- 光盘文件是
#/dev/sro
等
3、Linux不靠文件扩展名区分文件类型
Linux的扩展名可以随便命名,但是为了方便传播有些扩展名比较有代表性。
- 压缩包: *.gz 、*.bz2、*.tar.bz2、*.tgz
- 二进制软件包:rpm
- 网页文件:*.html、*.php
- 脚本文件:*.sh
- 配置文件:*.conf
4.Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘。
PS:挂载指手工分配盘符
5.服务器注意事项
- 远程服务器不允许关机,只能重启。
- 重启时应该关闭服务
- 不要在服务器访问高峰运行高负载命令。
- 远程配置防火墙时不要把自己踢出服务器
二、Linux常用命令-文件处理命令
1、目录查看命令:# ls
- 格式:
#
ls [-选项] [参数]
常用选项
# -l
以长列表形式显示目录下文件信息
# -lrt
按修改时间倒序列出当前工作目录下的文件
# -ld
查看该目录详细信息
# -i
查看目录的i节点
# -a
显示所有文件
[root@mysql ~]# ls -l
total 8
-rw-------. 1 root root 1734 Jul 16 23:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 13 Jul 16 23:51 password
#r:读 w:写 x:执行
#文件权限:u:所有者 g:所属组 o:other
2、目录创建命令 # mkdir
- 格式
# mkdir -p [文件名]
- 选项
-p
递归创建目录 - 范例:
[root@mysql tmp]# mkdir -p /tmp/baidu #递归创建目录
[root@mysql tmp]# mkdir tengxun #在当前文件夹下创建目录
[root@mysql tmp]# mkdir /tmp/china /tmp/japan #同时创建多个目录
[root@mysql tmp]# ls -lrt
total 0
drwx------. 2 root root 6 Jul 27 22:52 vmware-root_6797-3846148192
drwxr-xr-x. 2 root root 6 Jul 27 23:54 baidu
drwxr-xr-x. 2 root root 6 Jul 27 23:54 tengxun
drwxr-xr-x. 2 root root 6 Jul 27 23:59 japan
drwxr-xr-x. 2 root root 6 Jul 27 23:59 china
3、删除空目录命令 # rmdir
- 范例:
# rmdir /tmp/china/tengxun
4、目录或文件复制命令 # cp
- 语法和范例:
cp -rp [原文件或目录] [目标目录]
cp -p #保留文件属性(创建时间等信息)
cp -r #复制目录
cp /root/install.log /root/install.log.japan /tmp #同时复制多个文件到目录
cp -r /tmp/japan /root/china #复制目录并修改目录名称
5、剪切文件或目录 # mv
- 语法:
mv [原文件或目录] [目标目录]
- 范例:
mv /tmp/japan/fuyuanai /root/girl #将文件fuyuanai剪切到girl文件夹下
mv anbeijinsan shit #修改当前目录下某个文件的名字
6、目录或文件删除命令 # rm
- 语法:
rm -f #强制删除
rm -rf [目录] #强制删除目录
rm -r [目录] #删除目录
rm grub.conf #删除当前目录下的grub.conf文件
7、文件创建命令 #
touch
- 语法:
touch /root/story.list #在当前目录下创建文件
touch "program files" #创建带带空格文件名文件
8、显示短文件内容命令 # cat
用法:
# cat -n [文件名]
显示文件内容并在行首显示行号# cat -n yum.conf virc
将多个文件合起来显示(连接文件)
9、分页显示文件内容命令# more #less
功能比较
- more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空格键(space)就往下一页显示,按 b 键就会往回(back)一页显示。而
- less 的用法比起 more 更加的有弹性,不但可以通过pageup和pagedown键进行上下翻页操作,还可以上键和下键进行滚动行的操作。
- 两个命令都有搜索字符串的功能,浏览文件时可通过输入
/字符串
的形式对字符串进行搜索,
范例:
cat test.log #显示所有日志内容
more +3 test.log #从第三行开始显示日志内容
more -4 test.log #将日志内容设置为每屏显示4行
more +/liu test.log #从文件中查找第一个出现"liu"字符串的行,并从该处前两行开始显示输出
less test2.log test.log #浏览多个文件
10、查看文件前n行内容命令 # head
- 语法:
head -n 7 /etc/services
11、查看文件末尾n行内容命令 # tail
- 语法:
tail -n 7 /etc/services
[root@mysql etc]# tail -f /etc/services #动态显示文件末尾内容
12、链接生成命令
- 生成软链接
[root@mysql etc]# ln -s /etc/services /tmp/issue.soft
- 生成硬链接
[root@mysql etc]# ln -s /etc/services /tmp/issue.hard
对比
- 原理上,可以通过ls -i看到Index节点号。硬链接和源文件的inode节点号相同,两者互为硬链接。软连接和源文件的inode节点号不同,进而指向的block也不同,软连接block中存放了源文件的路径名。
- 实际上,硬链接和源文件是同一份文件,并且会和源文件同步更新。而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除,因此可以通过给文件设置硬链接防止文件被误删除。软链接里面存放的是源文件的路径,指向源文件;删除源文件,软链接依然存在,但无法访问源文件内容;
- 使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。
三、权限管理命令
1、目录权限更改命令 # chmod
语法:
chmod [{ugoa}{+-=}{rwx}] [文件或目录] # u:user g:group o:other
chmod 640 china.list #r:4 w:2 x:1
chmod -R #递归修改目录权限
- r - 读权限(可查看文件内容) 可以列出目录中的内容
- w - 写权限(可修改文件内容)可以在目录中创建和删除文件
- x - 执行权限(可以执行文件) 可以进入目录
若要删除文件,用户需对其目录具有写权限!
2、权限管理命令1 # chown
作用:改变文件或目录的所有者
语法:
chown [用户] [文件或目录]
范例:
chown shenchao fengjie
3、权限管理命令2 # chgrp
作用:改变文件或目录的所属组
语法:
chgrp [用户组] [文件或目录]
范例:
chgrp lampbother fengjie
chgrp g+w fengjie #改变所属组所有成员权限
4、权限管理命令3 # umask
作用:显示、设置文件的缺省权限
语法:
umask -S #以rwx形式显示新建文件缺省权限功能
范例:
chgrp lampbother fengjie
chgrp g+w fengjie #改变所属组所有成员权限
默认目录缺省权限:rwxr-xr-x
默认文件缺省权限:rw-r–r--
五、文件搜索命令
1、文件搜索命令1 # find
语法:
find [搜索范围][匹配条件]
范例
find /etc -name init #根据名字进行查找区分大小写
find /etc -iname init #根据名字进行查找,不区分大小写
find / -size +20480 #根据文件大小查找,查找大于10MB的文件
find /home -user shenchao #根据所有者进行查找
find /etc -cmin -5 #根据时间属性进行查找
- amin 访问时间 access
- cmin 文件属性 change
- mmin 文件内容 modify
find /etc -size +163840 -a -size -204800 #查找大于80M并且小于100M的文件.
# -a 两个条件同时满足
# -o 两个条件满足任意一个就行
[root@mysql ~]# find /etc -name su -exec ls -l {} \;
total 20
-rw-------. 1 root root 1846 Sep 27 2018 cil
-rw-------. 1 root root 9749 Sep 27 2018 hll
-rw-------. 1 root root 2 Sep 27 2018 lang_ext
-rw-r--r--. 1 root root 540 Aug 20 2018 /etc/pam.d/su
[root@mysql ~]# find /home -user shenchao -ok rm {} \; #-ok会对每条查询结果执行动作进行询问 -exec 不会询问
find / -type # 根据文件类型查找
# f:文件 d:目录 l:软链接文件
find / inum #根据i节点进行查找
2、文件资料库查找文件命令 # locate
作用:在文件资料库中查找文件,相比于find命令更加快捷,占用资源更少
范例:
[root@mysql ~]# locate inittab
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
[root@mysql ~]# updatedb #更新资料库
[root@mysql ~]# locate inittab
/etc/inittab
[root@mysql ~]# locate -i teacher.zhang #不区分大小写进行查找
- 若在资料库查不到目标文件,先更新资料库,然后再次查找!
- 存放在/tmp 临时文件夹中的文件不在locate 查询范围内。
3、搜索命令所在目录
- 搜索命令所在目录以及别名信息
[root@mysql ~]# which useradd
/usr/sbin/useradd
[root@mysql ~]# which rm
alias rm='rm -i' #别名信息
/usr/bin/rm
- 查找命令所在的绝对路径以及帮助文档所在位置
[root@mysql ~]# whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
4、文件内容搜索命令 # grep
**作用:**在文件中搜索字符串,输出字符串所在行
语法:
grep -i
不区分大小写搜索grep -v
排除指定字符
范例1:
[root@mysql ~]# grep default /etc/inittab
输出:
systemd uses 'targets' instead of runlevels. By default, there are two main targets:
To view current default target, run:
systemctl get-default
To set a default target, run:
systemctl set-default TARGET.target
范例2:
[root@mysql ~]# grep -v ^# /etc/inittab #排除行首为#的行
5、帮助信息查看命令
- 查看命令路径以及帮助手册路径配置文件帮助信息所在位置
[root@mysql ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
两个路径分别是命令所在的路径和命令对应帮助信息所在路径
查看命令帮助信息(主要看对命令的描述以及相关选项)
man [命令]
# 通过输入/+选项
可以查找选项解释[命令] --help
#可查看命令的主要选项touch [命令]
#查看命令主要选项whatis [命令]
#查看命令主要信息- info [命令]#查看命令主要信息
help [命令]
#主要查看shell内置命令的帮助信息,这些命令往往不能通过man
命令查看帮助信息,可通过命令man cd
查看有哪些命令是shell
内置命令
[root@mysql etc]# man cd
NAME
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue, declare, dirs, disown, echo, enable, eval, exec, exit, export,
false, fc, fg, getopts, hash, help, history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd, pwd, read, readonly, return, set, shift, shopt, source, suspend,
test, times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait - bash built-in commands, see bash(1)
查看配置文件帮助信息(主要看NAME存放信息以及格式 方便自己修改)
man 5 [命令]
#查看命令对应的配置文件的帮助信息apropos [命令]
#查看配置文件简介
三、 打包压缩和解压
1、打包命令 # tar
可以对目录进行打包和压缩
范例
tar -czf /tmp/etc-backup.tar.gz /etc #以gz格式进行压缩
tar -cjf /tmp/etc-backup.tar.bz2 /etc #以bzip2格式进行压缩
对比:bz2格式进行压缩时,压缩比例更高,体积小,耗费的时间相应也越高。
原文件夹大小
[root@mysql etc]# du -sh /etc/
31M /etc/
两种压缩文件大小对比
[root@mysql ~]# du -sh /tmp/etc-backup.tar*
8.6M /tmp/etc-backup.tar.bz2
9.8M /tmp/etc-backup.tar.gz
2、解压
- 针对不同格式的压缩文件,使用不同的选项
tar -xf /tmp/etc-backup.tar -C /root
tar -xzf /tmp/etc-backup.tar.gz -C /root
tar -xjf /tmp/etc-backup.tar.bz2 -C /root
#压缩文件或目录 # zip
范例:
zip fuyuan.zip fuyuanai #压缩文件
zip -r Japan.zip Japan #选项-r 压缩目录
unzip test.zip #解压缩
四、文本编辑器 vim
vi的三种模式及功能
- 命令行模式(command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。 - 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。 - 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
1、命令行模式操作
- [ i ]切换进入插入模式「insert mode」,按"i"进入插入模式后是从光标当前位置开始输入文件;
- 「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
- [shift+a] 进入插入模式后,从光标所在行的末尾开始插入文字。
- [o]进入插入模式后,是插入新的一行,从行首开始输入文字。
- [shift+o] 进入插入模式后,在光标所在位置的上方插入新行,从行首开始插入文字。
- [ : ] 进入底行模式。
- [shift+g] 光标移动到文本最后一行的行首
- [ ^ ]光标移动到行首
- [$] 光标移动到行尾
- 方向键以及[ h ] [ j ] [ k ] [ l ]可控制光标的左下右上移动
2、插入模式操作
- 按「ESC」键返回命令行模式。
3、底行模式操作
- wq 保存并退出
- q!放弃编辑内容,退出vi。
- w filename 保存文件名为 filename
- wq filename 保存文件名为filename并退出
- set nu 显示行号