Linux 笔记分享三:Linux 命令

一、命令#

1、命令提示符#

[root@localhost ~]#

root: 当前登录的用户

localhost: 主机名(linux 不同于 windows,主机名可以相同)

~: 当前所在目录(~ 代表家目录)

#: 超级用户的提示符

$: 普通用户的提示符

2、命令格式#

命令 [选项] [参数]

个别命令使用不遵循此格式

当有多个选项时,可以写到一起

简化选项与完整选项 -a 等于 --all

选项作用是调节命令的功能

3、ls#

查询目录中的内容

ls [选项] [文件或目录]
  • 选项

-a 显示所有文件,包括隐藏文件

-l 显示详细信息

-d 查看目录属性

-h 人性化显示文件大小

-i 显示 inode

  • 注意

不加文件或目录,显示当前目录

ll 命令是 ls -l 的简化

所以以点开头的文件都是隐藏文件

-d 查看当前目录的有关属性,即./

-i 查看文件存储的 i 节点号

  • ll 返回信息含义
总用量 4
-rw-------. 1 root root 1541 6月  15 00:39 anaconda-ks.cfg

-rw-------: 代表文件或目录的权限

.: ACL 权限

1: 引用计数

root: 文件或目录所有者

root: 文件或目录所属组

1541: 文件大小,单位字节 b

6 月 15 00:39: 最后一次文件或目录修改时间

  • 权限表示方式

file

二、文件处理命令#

目录也是文件,可以叫目录文件

1、mkdir#

建立目录

mkdir -p [目录名]

-p 递归创建

英文: make directories

2、cd#

切换所在目录

cd [目录]
  • 注意

英文: change directories

ctrl+l: 清屏

  • 简化操作

cd ~ 或者 cd: 进入当前用户的家目录

cd /: 返回根

cd ..: 进入上一级目录

cd -: 进入上一次目录

  • Tab 键

补全命令或者路径

3、pwd#

查询所在目录位置

pwd

print working directory

4、rmdir#

删除空目录

rmdir [目录名]

remove empty directories

基本不用这个命令,用下一个

5、rm#

删除文件或者目录

rm -rf [文件或目录]

-r 删除目录

-f 强制

英文: remove

  • 注意

这个命令很危险,字符界面 linux 是没有回收站的,删了就没啦

rm -rf /: 终结命令,这是原子弹,用了就 gameover 啦

6、cp#

复制命令

cp [选项] [原文件或目录] [目标目录]
  • 选项

-r 复制目录,不加则复制文件

-p 连带文件属性复制(文件时间问题)

-d 若原文件是链接文件,则复制链接属性

-a 相当于 -pdr

英文: copy

  • 注意

如果目标文件有文件名则改名复制,否则原名复制

7、mv#

剪切或改名命令

mv [原文件或目录] [目标目录]

move

  • 注意

mv 命令不需要加 - r,默认支持文件和目录的移动

如果目标目录加文件名,则实现改名移动

8、touch#

新建空文件

touch [文件名]

在当前目录新建

9、常用目录作用#

  • /

根目录

  • /bin 和 /sbin

根目录下的 bin 和 sbin,usr 目录下的 bin 和 sbin,这四个目录都是用来保存系统命令的

bin 目录下的命令是任何用户都可以执行,sbin 目录下的命令只有超级用户可以执行

  • /boot

启动目录,存放启动和引导文件

  • /dev

特殊文件保存目录,保存硬件文件等

  • /etc

放配置文件的目录

  • /home

普通用户的家目录

  • /root

超级用户的家目录

  • /lib

存放 linux 函数库的位置

  • /media

外接光盘挂载空目录

  • /misc

磁外接挂载空目录

  • /mnt

U 盘、移动硬盘外接挂载空目录

  • /proc 和 /sys

这两个目录保存的是内存的挂载点,所以不能直接操作,因为内存有限,且重启数据丢失

  • /tmp

临时目录

  • /usr

系统软件资源目录

  • /var

系统可变文档目录

三、链接命令#

1、ln#

生成链接文件

ln -s [原文件] [目标文件]
  • 选项

-s 创建软链接

英文: link

  • 硬链接

拥有相同的 i 节点和存储 block 块,可以看做是同一个文件

可以通过 i 节点识别

不能跨分区

不能针对目录使用

我的理解是:在相同分区存储空间创建两个文件,指向同一个索引

区别太小,限制太多,不建议使用

  • 软链接

类似 windows 快捷方式

软链接拥有自己的 i 节点和 block 块,但是数据块中只保存原文件的路径和 i 节点,并没有实际的文件数据

lrwxrwxrwx l 为软链接 且软链接文件权限都为 rwxrwxrwx

修改任意文件,另一个都改变

删除原文件,软链接不能使用

重点:软链接原文件必须写绝对路径

四、搜索命令#

1、locate#

文件搜索命令

locate [部分文件名]

locate 是从 /var/lib/mlocate 数据库中进行搜索,find 是遍历整个文件夹,所以 find 比较耗费资源,当然也就比较慢

locate 不能马上搜索到新建的文件,因为 /var/lib/mlocate 数据库是一天一更新

locate 是搜索的是数据库,所以默认根据公共配置文件搜索全部文件

不同的 linux 版本的 locate 数据库名字可能不同

缺点是只能按照文件名搜索

  • 公共配置文件

/etc/updatedb.conf

PRUNE_BIND_MOUNTS = "yes"
# 开启搜索限制

PRUNEFS = "..."
# 搜索时,不搜索的文件系统

PRUNENAMES = "..."
# 搜索时,不搜索的文件类型(扩展名)

PRUNEPATHS = "..."
# 搜索时,不搜索的路径

2、updatedb#

更新 locate 数据库

updatedb

默认全局更新

3、whereis#

搜索命令所在路径及帮助文档所在位置

whereis [命令名]

-b 只查找可执行文件

-m 只查找帮助文件

4、which#

搜索命令所在路径及命令的别名

which [命令名]

为什么 ls 会有颜色,通过 which ls 可以看到 ls 的别名是 ls --color=auto,原因就是这个 color 等于 auto

  • whereis 和 which 的注意事项

不是所有的命令都能通过这两个命令找到,比如 cd,原因是 cd 是 linux 中 shell 的内置命令

shell 初步认为是字符界面

因此上述两个命令只能找外部安装的命令

  • 查看 PATH 环境变量
echo $PATH

5、find#

强大的搜索命令

find [搜索范围] [搜索条件]
  • 根据文件名搜索
find /root -name install.log

避免大范围搜索,尤其是在线上,非常耗费资源

文件名搜索默认完全匹配

要想实现模糊查找,请加通配符,且文件名用双引号括起来

通配符

* 匹配任意内容
? 匹配任意一个字符
[] 匹配任意一个中括号内的字符
  • 根据文件名搜索(不区分大小写)
find /root -iname install.log

其它情况同上一个

  • 根据文件所有者搜索
find /root -user root
  • 查找没有所有者的文件(垃圾文件)
find /root nouser

没有所有者的文件是垃圾文件,可以清理

注:内核生成的文件和外来文件是没有所有者的,这不是垃圾文件

  • 根据文件时间搜索
find /var/log -mtime +10
  • 文件时间条件

atime 文件访问时间

ctime 修改文件属性时间

mtime 修改文件内容时间

  • 时间条件,默认天

-10 10 天内修改的文件

10 10 天当天修改的文件

+10 10 天前修改的文件

  • 根据文件大小搜索
find . size 25k

-25k 小于 25KB 的文件

25k 等于 25KB 的文件

+25k 大于 25KB 的文件

  • 注意

.: 代表当前目录

默认单位是一个扇区,不要用

千字节小写 k

兆字节大写 M

  • 根据 i 节点搜索
find . -inum 262422

这个命令与 ls -i 配合使用

  • 根据文件大小搜索(与或运算)
find /etc -size +20k -a -size -50k

上面代表搜索 /etc 下大于 20k 且小于 50k 的文件

-a and 与运算

-o or 或运算

  • 对搜索结果执行操作
find /etc -size +20k -a -size +50k -exec ls -lh {} \;

搜索到内容,并显示详细信息

-exec 命令 {} \;,此为固定格式,对搜索结果执行操作

  • 一个删除操作
find /root -name "cangls*" -exec rm -rf {} \;

6、grep#

在文件中匹配符合字符串的行,并列出

grep [选项] 字符串 文件名

-i 忽略大小写

-v 排除指定字符串,取反

7、grep 与 find 的区别#

  • find 命令: 在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
  • grep 命令: 在文件当中搜索符合条件的字符串,如果匹配,使用正则表达式进行匹配,正则表达式时包含匹配

五、帮助命令#

1、man#

获取指定命令的帮助格式

man [命令]

英文: manual

返回格式里的 NAME: 是命令的作用解释

返回格式里的 SYNOPSIS: 是命令的格式

命令帮助主要是 OPTION 的相关解释

OPTION 一般包含简和全两种格式

  • 筛选信息
... ...
/OPTION

例如:

... ...
/-d

以上会筛选出含有 - d 的 OPTION 选项

n 键向下跳,shift+n 向上跳

  • man 的级别
1: 查看命令的帮助
2: 查看可被内核调用的函数的帮助
3: 查看函数和函数库的帮助
4: 查看特殊文件的帮助(主要是/dev目录下的文件)
5: 查看配置文件的帮助
6: 查看游戏的帮助
7: 查看其它杂项的帮助
8: 查看系统管理员可用命令的帮助
9: 查看和内核相关文件的帮助(这个好像取消掉了)

例如:

man ls

返回:

LS(1)  User Commands  LS(1)
... ...

上面的 LS (1) 就是命令的帮助

  • 查看命令有哪些级别的帮助
man -f 命令

或者:

whatis 命令
  • 查看具体级别的帮助(默认最小级别)
man 级别数字 命令

例如:

man 5 passwd # 查看passwd的配置帮助
man 4 null # 查看null特殊文件的帮助,null相当于黑洞
man 8 ifconfig # 查看ip配置帮助
  • 查看与命令相关的所有命令的帮助(相当于模糊搜索)
man -k 命令

或者:

apropos 命令

例如:

apropos passwd

这个适用于忘了命令全名,但能记得一部分字符

2、--help#

获取命令的选项帮助

命令 --help

例如:

ls --help

这个可以输出中文,因为安装的时候用的中文以及远程工具支持中文

3、help#

获取 shell 内部命令的帮助

help shell内部命令

例如:

help cd
  • 如何确定一个命令是否是 shell 内部命令
whereis 命令

看是否有执行文件,有则为外部命令,无则为内部命令

  • help 和 man 的区别

help 只能获取 shell 内部命令的帮助,不能获取 shell 外部命令的帮助

man 能获取 shell 内部命令的帮助,但是获取的是全部 shell 内部命令的帮助

4、info#

获取命令的详细帮助(非常全,相关的都给你列出来)

info 命令

回车: 进入子帮助页面(在带有 * 号的地方)

u: 进入上层页面

n: 进入下一个帮助小节

p: 进入上一个帮助小节

q: 退出

五、压缩命令#

常见压缩格式: .zip .gz .bz2

常见压缩格式: .tar.gz .tar.bz2

1、.zip 格式#

压缩文件

zip 压缩文件名 源文件

压缩目录

zip -r 压缩文件名 源目录

解压缩 zip 文件

unzip 压缩文件

2、.gz 格式#

  • 压缩
gzip 源文件

压缩为.gz 格式的压缩文件,源文件会消失

gzip -c 源文件 > 压缩文件

例如:

gzip -c cangls > cangls.gz

压缩为.gz 格式,源文件会保留

>: 作用是将命令的结果输入到后面的文件中

gzip -r 目录

压缩目录下所有的子文件(挨个压缩),但是不能压缩目录

  • 解压缩
gzip -d 压缩文件

或者:

gunzip 压缩文件

解压后,原压缩文件同样消失

同样支持解压缩目录,但是是挨个解压目录里面的 gz 压缩文件,需要加 - r

3、.bz2 格式#

  • 压缩
bzip2 源文件

压缩为.bz2 格式,不保留源文件

bzip2 -k 源文件

压缩之后保留源文件

bzip2 命令不能压缩目录

  • 解压缩
bzip2 -d 压缩文件

或者:

bunzip2 压缩文件

加 - k,保留压缩文件

4、tar#

打包(解包)命令(解决.gz 和.bz2 不能压缩目录的缺陷)

tar [选项] 打包文件名 源文件

例如:

tar -cvf longzls.tar longzls
  • 选项

-c: 打包
-x: 解包
-t: 查看包里面的内容
-v: 显示过程
-f: 指定打包后的文件名

  • 注意

操作步骤先打包后压缩

源文件只有在 - c 的时候有

5、.tar.gz 格式#

其实.tar.gz 格式是先打包为.tar 格式,在压缩为.gz 格式

下面是一步处理.tar.gz 格式

  • 压缩
tar -zcvf 压缩包名.tar.gz 源文件
  • 指定压缩位置和多文件压缩
tar -zcvf /tmp/压缩包名.tar.gz 文件1 文件2 ...
  • 解压
tar -zxvf 压缩包名.tar.gz
  • 指定解压位置
tar -zxvf 压缩包名.tar.gz -C /tmp/

6、.tar.bz2 格式#

其实.tar.bz2 格式是先打包为.tar 格式,在压缩为.bz2 格式

下面是一步处理.tar.bz2 格式

  • 压缩
tar -jcvf 压缩包名.tar.bz2 源文件
  • 指定压缩位置和多文件压缩
tar -jcvf /tmp/压缩包名.tar.bz2 文件1 文件2 ...
  • 解压
tar -jxcf 压缩包名.tar.bz2
  • 指定解压位置
tar -jxvf 压缩包名.tar.bz2 -C /tmp/

六、关机与重启命令#

1、shutdown#

关机与重启

shutdown [选项] 时间(填写实际时间,而不是多少时间之后)

例如:

shutdown -r now
  • 选项

-c: 取消前一个关机命令(因为有时间,所以可以取消)

-h: 关机

-r: 重启

  • 注意

shutdown 命令比较安全,能够正确保存服务器数据,最好用这个

  • 后台符执行,不占用 shell 界面
shutdown -r 05:30 &

&: 后台符

2、其它关机与重启命令#

关机

halt
poweroff
init 0

重启

reboot
init 6

以上关机和重启不怎么用,不安全(reboot 还行,能用用)

  • 关于 init 后面的数字问题

这个叫系统运行级别

0: 关机
1: 单用户(类似windows的安全模式,进去进行系统修复)
2: 不完全多用户,不含NFS服务(NFS: 文件共享服务)
3: 完全多用户(字符界面就是3级别)
4: 未分配
5: 图形界面
6: 重启

init 是调用系统级别的命令

  • runlevel

查看当前系统级别和上一次的系统级别

runlevel
  • 定义系统的默认运行级别
cat /etc/inittab

进去看一下,然后用 vim 工具修改,保存即可

X: 在 linux 中代表图形界面

3、logout#

退出登录

logout
  • 注意

远程工具关闭前,必须退出登录,防止用户卡着,尤其 windows(注销)

七、其它常用命令#

1、mount#

查看系统中已经挂载的设备

mount

依据配置文件 /etc/fstab 的内容,自动挂载

mount -a

正式挂载

mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点
  • 选项

-t 文件系统: 加入文件系统类型来指定挂载的类型,可以使 ext3、ext4、iso9660 等文件系统

-o 特殊选项: 可以指定挂载的额外选项

file

  • 例如修改 /home 挂载点的执行权限
mount -o remount,noexec /home

上述命令,会禁用 /home 下的执行文件

  • 挂载光盘

建立挂载点

mkdir /mnt/cdrom

挂载光盘

mount -t iso9660 /dev/cdrom /mnt/cdrom

或者:

mount /dev/sr0 /mnt/cdrom
  • 挂载 U 盘

查看系统中已经识别的硬盘

fdisk -l

挂载 U 盘

mount -t vfat /dev/sdb1 /mnt/usb

2、umount#

卸载命令

umount 设备文件名或者挂载点

例如:

umount /mnt/cdrom

用完以后必须卸载,防止 linux 精神错乱

3、w#

查看当前用户的登录信息

w
  • 命令输出

USER: 登录的用户名

TTY: 登录终端(tty1 是本地,pts/NUM 是远程)

FROM: 从哪个 IP 地址登录

LOGIN@: 登录时间

IDLE: 用户闲置时间

JCPU: 指的是和该终端连接的所有进程占用的时间。这个时间并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间

PCPU: 是指当前进程所占用的时间

WHAT: 当前正在运行的命令

4、who#

查看当前用户的登录信息(简)

who
  • 命令输出

用户名
登录终端
登录时间(登录来源 IP)

5、last#

查看当前登录和过去登录的用户信息

last
  • 注意

last 命令默认是读取 /var/log/wtmp 文件数据

/var/log/wtmp 是二进制文件,不能直接编辑,只能通过 last 读取,防止黑客篡改

还能看到重启信息

  • 命令输出

用户名

登录终端

登录 IP

登录时间

退出时间(在线时间)

6、lastlog#

查看所有用户的最后一次登录时间

lastlog
  • 注意

lastlog 命令默认是读取 /var/log/lastlog 文件内容

/var/log/lastlog 也是二进制文件

  • 命令输出

用户名

登录终端

登录 IP

最后一次登录时间

本作品采用《CC 协议》,转载必须注明作者和本文链接
时空扭曲,到底长啥样.