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 协议》,转载必须注明作者和本文链接
我们是一群被时空压迫的孩子。 ---- 爱因斯坦
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!