Linux常用命令
Linux 文件的命名规则
A. 除了 / 之外,所有的字符都合法,但有些字符最好不用,如空格符、制表符、退 格符和字符 @ # $ & ( ) - 等
B. 避免使用 . 作为普通文件名的第一个字符
C. 大小写敏感,严格区分大小写(包括文件命名、命令、命令选项、用户名等)
Linux 命令格式
命令格式 :命令 -选项 参数(操作对象)
例 :ls -la /etc
说明:
1)当有多个选项时,可以写在一起
2)两个特殊的目录 . 和 .. ,分别代表当前目录和当前目录的父目录
3)个别命令不遵循此格式
Linux 命令提示符
[root@localhost /]#
[当前登录用户@当前主机名 当前所在目录的最后一个目录]#
Linux常见目录
目录名 | 目录作用 |
/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。不过放在/bin下的命令在单用户模式下也可以执行 |
/sbin/ | 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看 |
/usr/bin/ | 存放系统命令的目录,普通用户和超级用户都可以执行。这些命令和系统启动无关,在单用户模式下不能执行 |
/usr/sbin/
| 存放根文件系统不必要的系统管理命令,例如多数服务程序。只有超级用户可以使用。大家其实可以注意到Linux的系统,在所有“sbin”目录中保存的命令只有超级用户可以使用,“bin”目录中保存的命令所有用户都可以使用 |
/boot/ | 系统启动目录,保存系统启动相关的文件,如内核文件和启动引导程序(grub)文件等 |
/dev/ | 设备文件保存位置。我们已经说过Linux中所有内容以文件形式保存,包括硬件。那么这个目录就是用来保存所有硬件设备文件的 |
/etc/ | 配置文件保存位置。系统内所有采用默认安装方式(rpm安装)的服务的配置文件全部都保存在这个目录当中,如用户账户和密码,服务的启动脚本,常用服务的配置文件等 |
/home/ | 普通用户的家目录。建立每个用户时,每个用户要有一个默认登录位置,这个位置就是这个用户的家目录,所有普通用户的家目录就是在/home下建立一个和用户名相同的目录。如用户user1的家目录就是/home/user1 |
/lib/ | 系统调用的函数库保存位置 |
/lost+found/ | 当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。这个目录只在每个分区中出现,例如/lost+found就是根分区的备份恢复目录,/boot/lost+found就是/boot分区的备份恢复目录 |
/media/ | 挂载目录。系统建议是用来挂载媒体设备的,例如软盘和光盘 |
/mnt/ | 挂载目录,早期Linux中只有这一个挂载目录,并没有细分。现在这个目录系统建议挂载额外设备,如U盘,移动硬盘和其他操作系统的分区 |
/misc/ | 挂载目录。系统建议用来挂载NFS服务的共享目录。我们在刚刚已经解释了挂载,童鞋们应该知道只要是一个已经建立的空目录就可以作为挂载点。那么系统虽然准备了三个默认挂载目录/media、/mnt、/misc,但是到底在哪个目录中挂载什么设备都可以由管理员自己决定。例如我接触Linux的时候,默认挂载目录只有/mnt一个,所以养成了在/mnt下建立不同目录挂载不同设备的习惯。如/mnt/cdrom挂载光盘,/mnt/usb挂载U盘,这都是可以的 |
/opt/ | 第三方安装的软件保存位置。这个目录就是放置和安装其他软件的位置,我手工安装的源码包软件都可以安装到这个目录当中。不过我还是更加习惯把软件放置到/usr/local/目录当中,也就是说/usr/local/目录也可以用来安装软件 |
/proc/ | 虚拟文件系统,该目录中的数据并不保存到硬盘当中,而是保存到内存当中。主要保存系统的内核,进程,外部设备状态和网络状态灯。如/proc/cpuinfo是保存CPU信息的/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的,/proc/net/是保存网络协议信息的 |
/sys/ | 虚拟文件系统。和/proc目录相似,都是保存在内存当中的,主要是保存于内核相关信息的 |
/root/ | 超级用户的家目录。普通用户家目录在“/home”下,超级用于家目录直接在“/”下 |
/srv/ | 服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据 |
/tmp/ | 临时目录。系统存放临时文件的目录,该目录下所有用户都可以访问和写入。我们建议此目录中不能保存重要数据,最好每次开机都把该目录清空 |
/usr/ | 系统软件资源目录。注意usr不是use的缩写,而是“Unix Softwre Resource”的缩写,所以不是存放用户数据,而是存放系统软件资源的目录。系统中安装的软件大多数保存在这里,所以除了/usr/bin/和/usr/sbin/这两个目录,我在介绍几个/usr/下的二级目录 |
/usr/lib/ | 应用程序调用的函数库保存位置 |
/usr/X11R6/ | 图形界面系统保存位置 |
/usr/local/ | 手工安装的软件保存位置。我们一般建议把自己安装的源码包软件安装在这个位置当中 |
/usr/share/ | 应用程序的资源文件保存位置。如帮助文档,说明文档和字体目录。 |
/usr/src/ | 源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。不过我更加习惯把手工下载的源码包保存到/usr/local/src/目录中,内核源码保存到/usr/src/linux/目录中 |
/var/ | 动态数据保存位置。主要保存缓存、日志以及软件运行所产生的文件 |
/var/www/ | RPM包安装的apache的网页主目录 |
/var/lib/ | 程序运行中需要调用或改变的数据保存位置。如Mysql的数据库保存在/var/lib/mysql中 |
/var/log/ | 系统日志保存位置 |
/var/run/ | 一些服务和程序运行后,他们的PID(进程ID)会保存在这里 |
/var/spool/ | 放置队列数据的目录。就是排队等待其他程序使用的数据。比如邮件队列和打印队列 |
/var/spool/mail/ | 新收到的邮件队列保存位置。系统新收到的邮件会保存在这个目录当中 |
/var/spool/cron/ | 系统的定时任务队列保存位置。系统中的定时任务会保存到这里 |
一、文件处理命令
1) 命令名称:ls
命令英文原意:list
命令所在路径:/bin/ls
功能描述:显示目录文件
语法:ls 选项 文件或目录
-a 显示所有文件,包括隐藏文件
-l 以长格式显示(详细信息)
-d 查看目录属性,不显示目录下内容 -ld
-h 文件大小显示为常见大小单位 B KB MB -lh
-i 显示文件inode号
-rw-------. 1 root root 1190 08-10 23:37 xdl.txt
第一项: 权限位
第二项: 引用计数(文件:硬链接数=数值-1;目录:目录下的目录个数)
第三项: root 所有者(属主)
第四项: root 所属组(属组)
第五项: 文件大小(默认字节byte)
第六项 最后一次修改时间
第七项 文件名
2) 命令名称:cd
命令英文原意:change directory
命令所在路径:shell内置命令
功能描述:切换目录
语法:cd 目录
cd ~ 进入当前用户的家目录
cd - 进入上次目录
cd .. 进入上一级目录
cd . 进入当前目录
相对路径:参照当前所在目录,进行目录切换
#cd ./rc.d/ (先切换到/etc下)
绝对路径:从根目录开始,逐级确认目录进行切换
#cd /etc/rc.d/
3) 命令名称:pwd
命令英文原意:print working directory
命令所在路径:/bin/pwd
功能描述:显示当前目录
4) 命令名称:mkdir
命令英文原意:make directories
命令所在路径:/bin/mkdir
功能描述:创建新目录
语法:mkdir 目录名
-v 显示创建过程
-p 递归创建
5) 命令名称:tree
命令所在路径:/usr/bin/tree
功能描述:显示目录树
语法:tree 目录
6) 命令名称:touch
命令所在路径:/bin/touch
功能描述:创建空文件
语法:touch 文件名
拓展:
echo “hello” > 文件名
> 会覆盖源文件的内容
>> 追加内容到源文件中
7) 命令名称:cp
命令英文原意:copy
命令所在路径:/bin/cp
功能描述:源文件或目录(或复制并改名)
语法:cp 源文件或目录 目标目录
-r 复制目录
-p 保留文件属
-a 相当于 -rp
8) 命令名称:mv
命令英文原意:move
命令所在路径:/bin/mv
功能描述:剪切、改名
语法:mv 源文件或目录 目标目录
9) 命令名称:rm 文件/目录
命令英文原意:remove
命令所在路径:/bin/rm
功能描述:删除文件
语法:rm 文件或目录
-r 删除目录
-f 强制执行
rmdir 空目录 (只能用来删除目录)
10)命令名称:cat
命令所在路径:/bin/cat
功能描述:显示文件内容
语法:cat 文件名
注:文件超过一页内容后只能显示最后一页的内容
拓展:
-n 列出行号
cat 显示多个文件的内容
cat 将多个文件合并(按照文件先后顺序)
11)命令名称:more
命令所在路径:/bin/more
功能描述:分页显示文件内容
语法:more 文件名
空格 向下翻页
B 向上翻页
Enter 换行
q或Q 退出
拓展:
head -n 显示文件前n行
tail -n 显示文件最后n行
tail -f 实时监控文件尾部变化
12)命令名称:less
命令所在路径:/usr/bin/less
功能描述:分页显示文件内容
语法:less 文件名
注:more能使用的四个选项less都能使用,less和more的区别在于less在显示文件内容的时候支持查找关键词,使用 /关键词 的方式进行查找。
13)命令名称:ln 难点
命令英文原意:link
命令所在路径:/bin/ln
功能描述:生成链接文件
语法:ln -s 源文件 目标文件
-s 创建软链接
ln 源文件 目标文件
创建硬链接
注:不管创建哪种链接,源文件的位置必须写绝对路径。
硬链接特点:
- 拥有相同的i节点和存储大小,就是同一个文件
- 不能跨分区创建,目录不能创建硬链接
二、权限管理命令:
-rw-r--r-- 1 root root 08-11 01:45 xdl.txt
权限位是十位
第一位:代表文件类型
- 普通文件
d 目录文件
l 链接文件
b 块设备文件
c 字符设备文件
s 套接字
p 管道
其余九位
读 写 执行 读 写 执行 读 写 执行
r w x r w x r w x
4 2 1 4 2 1 4 2 1
文件所有者(u) 文件所属组(g) 其他用户(o)
r 读 4 w 写 2 x 执行 1
- 命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod
功能描述:修改文件的权限
例:
chmod u+x aa 给aa文件的所有者添加x权限
chmod g+w,o+w aa 给aa文件的所属组和其他人添加w权限
chmod u=rwx aa 给aa文件的所有者赋予rwx权限
chmod 644 aa 修改aa文件的权限为644,对应为rw-r--r--
rwx权限对于目录和文件,实际意义是不一样的。
文件:
r cat more head tail 查看文件内容
w echo vim 修改或删除文件内容
x sh 脚本文件 执行
目录:
r ls find tree 列出文件
w touch mkdir rm mv cp 创建删除文件或目录
x cd 进入目录
对文件有写权限,只代表可以修改这个文件的内容;要想删除文件,需要对文件所在目录有写权限
只要对目录有写权限,目录中的文件,就算是root创建的,普通用户一样能删除
目录一般都同时有r-x权限,如果一个目录只有r却没有x,你能用ls查看,却不能cd 进去!(用普通用户测试)
- 命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
功能描述:修改文件或目录的所有者、所属组
例:chown user1 aa 将aa文件的所有者修改为user1用户
chown user1:user1 aa 将aa文件的所有者修改为user1用户
并且所属组修改为user1组
chown :user1 aa 将aa文件的所属组修改为user1组
3) 命令名称:chgrp
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp
功能描述:改变文件或目录的所属组
语法:chgrp 用户组 文件或目录
例:chgrp adm file1
改变文件file1的所属组为adm
4) 命令名称:umask
功能描述:显示和设置默认掩码值
777
-022
--------------
755
就是创建文件的默认权限
总结:Linux的安全机制,不给新建文件x权限。
三、查找命令
1) 命令名称:which
命令所在路径:/usr/bin/which
功能描述:查看命令文件位置和命令可能出现的别名
2) whereis 命令
命令所在路径:/usr/bin/whereis
功能描述:查找命令及帮助文档所在位置
3) locate 文件名
命令所在路径:/usr/bin/locate
功能描述:按照文件名查找,按照数据库查找
updatedb 强制更新数据库
/var/lib/mlocate
#locate命令所搜索的后台数据库
/etc/updatedb.conf 配置文件,用于定义locate命令
PRUNE_BIND_MOUNTS = "yes“
#开启搜索限制
PRUNEFS =
#搜索时,不搜索的文件系统
PRUNENAMES =
#搜索时,不搜索的文件类型
PRUNEPATHS =
#搜索时,不搜索的路径
4) 命令名称:find
命令所在路径:/usr/bin/find
功能描述:搜索系统中的符合条件的文件
-name 根据文件名查找
通配符
* 任意多个字符
? 任意1个字符
[] 指范围值,外侧加引号
例:find /var –name “*.log”
find ./ -name “[1-3].txt”
-size 根据大小查找
单位是数据块 一块是512字节
1M -> 1024k -> 2048块 (1块是0.5k 也就是512字节)
100M -> 102400k -> 204800块
例:find /etc -size -10k 查找小于10k的文件
find /etc -size +2M 查找大于2M的文件
注意+-号,如果没有,是精确这么大,通常都会带上+或-号,表示一个范围。
-user 根据所有者查找
例 find /home -user lisi
在/home中,查找所有lisi用户的文件
注意,在系统中需要存在此用户,否则报错
-perm根据文件权限查找
例:find /boot -perm 644
-按时间查找
按天 ctime atime mtime
按分钟 cmin amin mmin
c change #表示属性被修改过:所有者、所属组、权限
a access #被访问过(被查看过)
m modify #表示内容被修改过
例:
find /etc -mmin -120 120分钟内内容被修改过的
find /etc -ctime +7 七天之前属性被修改过的文件
-type根据文件类型查找
例: -type f 二进制文件(普通文件)
-type l 软链接文件
-type d 目录
-逻辑连接符:
-a (and 逻辑与)
-o (or 逻辑或)
例:find /etc -size +1k -a -size -10k
在etc目录下查找大于1k并且小于10k的文件
-命令执行连接符(对查找到的文件,进一步处理)
find ... -exec 命令 {} \;
{}表示find查询的结果集
\是转义符,不使用命令别名,直接使用命令本身
;分号是表示语句的结束
注意:固定格式,只能这样写。注意中间的空格。
转义符的作用是什么?
在linux中有一个别名机制,如rm删除文件,执行的却是rm -i(用which rm 可以查看命令别名),使用rm删除文件前会提示,就是因为rm -i这个参数。如果想使用命令原意,可以在加\转义,
如:\rm test.txt 则不会提示,直接删除
练习题:
找到文件后查看详情
find /etc -name inittab -exec ls -l {} \;
find /etc -name “init*”-a -type f -exec ls -l {} \;
通过-type f过滤掉目录,只列出文件,否则ls会列出很多文件
find /test -name testfile -exec rm {} \;
找到testfile后,直接删除
找samlee用户的所有文件并删除
find /home -user samlee -exec rm –r {} \;
rm -r 连带目录一起删除。报错原因:-exec 不适合大量传输,速率慢导致。
找samlee用户的所有文件并删除,删除前会一个提示确认
find /home -user samlee -ok rm -r {} \;
-ok 的使用和-exec是一样的,区别是-ok 执行时会提示你是否进行下一步操作。
-inum 根据文件i节点查询
find ./ -inum 2310630 -exec rm {} \;
有一些文件的硬链接数量很多,有相同的i节点,查找其中一个文件的i节点号,一次性删除。
5) grep “字符串” 文件名
命令名称:grep
命令所在路径:/bin/grep
功能描述:在文件内查找符合条件的字串行
grep “root” /etc/passwd
-v 反向选择
-i 忽略大小写
-o 统计有几个关键字
find:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配。通配符是完全匹配。
grep:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式匹配,正则表达式是包含匹配
注意事项:
尽量不要在根目录/中查找,查找得慢,会占用太多服务器资源
如果需要在服务器中全盘查找,可以写一条计划任务在凌晨执行(计划任务后面讲)
查找范围越小越好,匹配条件,越精准越好
6) 管道符
命令1 | 命令2 将命令1的标准输出作为命令2的标准输入
例:ls -l /etc | more 分屏显示ls内容
grep -o “root” /etc/passwd |wc -l
四、帮助命令
1) man 命令名 查看命令的帮助
命令名称:man
命令英文原意:manual
命令所在路径:/usr/bin/man
man -f 命令 #查看命令有哪些级别的帮助
2)help 内部命令 #查看内部的帮助信息
3) 命令 --help #查看命令的常见选项
4)info 命令
回车: 进入子帮助页面(带有*号标记)
u 进入上层页面
n 进入下一个帮助小节
p 进入上一个帮助小节
q 退出
五、压缩和解压缩
常见压缩格式:
.zip .gz .bz2 linux可以识别的常见压缩格式
.tar.gz .tar.bz2 常见的压缩和打包格式
- 压缩&解压缩
zip
压缩格式: zip 压缩文件(生成) 源文件
解压格式: unzip 压缩包名
-r 压缩目录
2) 打包压缩&解包加压缩
-z 识别.tar.gz格式
-j 识别.tar.bz2格式
-v 显示压缩过程
-f 指定压缩包名
tar -cvf 压缩包名 源文件名
-c 打包
tar -xvf 压缩包名
-x 解压缩
tar -tvf 压缩包名
-t 只查看,不解压
tar -xvf 压缩包名 -C 目录
-C 指定解压目录
六、网络命令
1) ping 测试网络连通性
命令名称:ping
命令所在路径:/bin/ping
执行权限:所有用户
Ctrl +c 强制终止
ping -c 次数 192.168.1.1 #探测网络通畅
ping -s 65536 192.168.1.1 #指定谈测时数据包的大小
2) ifconfig 查询本机网络信息
命令名称:ifconfig
命令英文原意:interface configure
命令所在路径:/sbin/ifconfig
执行权限:root
ifconfig eth0 192.168.1.1 netmask 255.255.255.0
ifconfig eth0 192.168.1.1/24
ifconfig eth0:0 192.168.1.2 设置网卡子端口
3) w 查询当前登录服务器的用户
第一行:当前时间 持续运行时间,登录用户数量,1分钟,5分钟,15分钟 前的平均负载
第二行:用户名 TTY:登录终端 FROM:来源IP 登录时间
IDLE:用户闲置时间
JCPU:所有进程占用cpu时间
PCPU:当前进程占用cpu时间
WHAT:用户正在进行的操作
4) who 查询登录用户
命令所在路径:/usr/bin/who
执行权限:所有用户
5) last 列出登录系统的相关信息
命令所在路径:/usr/bin/last
执行权限:所有用户
6) lastlog 显示所有账户最后一次的登录时间
命令所在路径:/usr/bin/lastlog
执行权限:所有用户
7) write 用户名 给在线用户写信
命令所在路径:/usr/bin/write
执行权限:所有用户
例:write root tty1 ctrl+d 保存,发送
8) wall 对所有在线用户广播
命令英文原意:write all
指令所在路径:/usr/bin/wall
执行权限:所有用户
例:wall 字符串 或者 wall 回车 字符串 ctrl+d
9) mail 邮件命令
发信:
mail 用户名
标题
内容
ctrl+d 结束,发送
收信:
1 2 3 查看对应邮件(from to subject)
h 列出邮件列表
q 退出
9) netstat 查看网络连接状态
常见的端口:
20 21 ftp 文件共享
22 ssh 安全的远程连接
23 telnet
25 smtp 简单邮件传输协议(发信)
110 pop3 邮局协议(收信)
80 http 超文本传输协议
3306 mysql 数据库端口
3389 windows 终端端口
53 DNS
/etc/service 所有常见的端口
netstat -tlun 查看本机所有监听端口
-t tcp协议
-u udp协议
-l 监听
-n 以IP和端口的形式显示信息
七、关闭和重启命令
1)关机
shutdown -h now 没有特殊情况,使用此命令
halt
init 0
poweroff
2)重启
shutdown -r now
reboot
init 6
3)sync 数据同步,把当前内存中的数据,强制保存到硬盘内
八、挂载命令
linux所有存储设备都必须挂载使用,包括硬盘
命令名称:mount
命令所在路径:/bin/mount
- mount
查询系统中已经挂载的设备
常见的存储设备:
/dev/sda1 第一个scsi硬盘的第一分区
/dev/cdrom 光盘
/dev/sr0 光盘 centos 6.x
常用挂载点:
/mnt
/media
/cdrom
挂载格式:
mount [-t 文件系统类型] [-o 特殊选项] 设备文件名 挂载点
选项:
-t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660 等文件系统。
-o 特殊选项:可以指定挂载的额外选项,比如读写权限、同步异步等,如果不指定则默认值生效。
例:
mount 查看挂载信息
/dev/sda1 on /boot type ext4 (rw)
我们查看到/boot分区已经被挂载,而且采用的defaults选项,那么我们重新挂载分区,并采用noexec 权限禁止执行文件执行,看看会出现什么情况(注意不要用/分区做试验,不然系统命令也不能执行了)
[root@lchuan ~]mount -o remount,noexec /boot
[root@lchuan ~]cd /boot
[root@lchuan ~]vim hello.sh
#!/bin/bash
echo “hello world!”
[root@lchuan ~]chmod 755 hello.sh
[root@lchuan ~]./hello.sh
[root@lchuan ~]-bash: ./hello.sh: 权限不够
[root@lchuan ~]mount -o remount,exec /boot
完事记得修改回来,不然会影响系统正常启动
- 挂载硬盘分区、移动硬盘
[root@lchuan ~]mkdir /mnt/disk1
#创建挂载点
[root@lchuan ~]mount /dev/sdb1 /mnt/disk1
#挂载硬盘分区或者移动硬盘
- 挂载光盘
[root@lchuan ~]mount -t iso9660 /dev/cdrom /mnt/cdrom
#/mnt/cdrom必须是已存在的目录
- 挂载U盘
[root@lchuan ~]fdisk -l
#查看当前系统下的存储设备,确认U盘的设备名称
[root@lchuan ~]mount -t vfat /dev/sdb1 /mnt/usb
#fat32格式的U盘挂载方式
-t vfat fat32
-t fat fat16
注:Linux默认情况不识别NTFS格式。
- 卸载
umount 设备名称或者是挂载点
#所有的挂载的设备卸载方式都一样
- 拓展:挂载NTFS分区设备
- 重新编译内核(略)
- 加载NTFS模块(略)
- 使用第三方插件加载NTFS格式
- 下载NTFS-3g插件
- 安装插件
- 挂载NTFS格式设备
[root@lchuan ~]mount -t ntfs-3g 设备名 挂载点
Shell使用小技巧:
1)补齐功能
补齐功能允许用户输入命令名或文件名起始的若干个字母后,按Tab键补齐命令名或文件名。
2)命令历史
命令历史允许用户浏览先前输入的命令并重新
调用它们,用history命令可以显示命令列表,按方向键↑和↓可查找以前执行过的命令。
!命令前缀
3)命令别名定义:
范例:alias copy=cp
alias dirrm= ‘rm -rf ’
.bashrc 永久生效(家)
查看别名信息:alias
删除别名:unalias copy
服务器管理规范:
越是安全等级要求高的服务器,越是严格限制用户等级,不能所有人都是root,远程服务器不能关机+重启。
服务器不允许在负载高峰执行高负载命令。例如杀毒、大数据压缩解压缩,复制,全盘搜索。