Linux 常用命令及注意事项

Posted 三尺青锋丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 常用命令及注意事项相关的知识,希望对你有一定的参考价值。

命令以字典序排序,"[]" 包围的是可选项,"<>" 包围的是必选项,同时选项并非全部列出,只列举了较常用的。文中提到的文件包含目录,因为在 Linux 下一切皆文件

cat

concatenate 的缩写,将文件打印至标准输出设备,默认为屏幕(其实大部分输出都可以指向文件,只是 cat 对这个功能的使用更加频繁)。

# 使用 > 覆盖目标文件的内容
# 使用 >> 追加至目标文件,多个文件时需要使用 >> 来追加,否则目标文件中只有最后一个文件的内容
# ... 表示多个文件并用空格分隔
cat [选项] <源文件...> [> 目标文件]
选项 功能
省略 将文件输出
-n 同上,同时对行从 1 开始进行编号
-b 同上,但不对空白行编号
-s -n,但会将多个连续的空行替换为一个空行

cd

change directory 的缩写,Linux 下最为常用的命令之一,用于切换到指定目录。

cd [选项] [目标目录]
选项 功能
-P 如果目标目录是一个软连接,则跳转到软连接所指的目录
-L 如果目标目录是一个软连接,则跳转软连接名所在的目录
特殊参数 使用 ls -a 命令可以看到除几乎所有目录都有 ... 两个目录文件
省略或者 ~ 切换至家目录(/home/username/root
. 当前目录
.. 上一级目录
/ 根目录
- 上一次的目录

. 目录存在的意义是为了执行当前目录下的可执行文件,因为直接输入文件名会在环境变量 PATH 中的目录中查找,而不会在当前目录下查找(除非把 . 目录添加进了 PATH,但是极不推荐这种做法)。

chgrp

change group 的缩写,更改文件群组。

chgrp [选项] <群组> <目标文件...>
选项 功能
-R 递归处理目录下所有文件

chmod

change mode 的缩写,更改文件的权限,多个权限表达式使用逗号分隔(从左至右按顺序生效)。

chmod [user][operator]<authority> <目标文件...>
用户分类 含义
省略或a 所有用户
u 文件拥有者
g 群组用户
o 其他用户
权限操作 含义
+ 添加权限
- 移除权限
= 设定为相应权限
权限 含义
r 读权限
w 写权限
x 可执行权限

为了方便,设定某个文件权限时可以用三个数字来替代 = 表达式,规则如下:

  • 权限 r 数字为 4w2x1(二进制中的三位),故 0-7 可以表示所有权限组合
  • 三个数字从左至右分别表示 ugo 用户
chmod 744 test
chmod a=r,u+wx test

上方两条命令等价

chown

change owner 的缩写,更改文件拥有者(也可以更改群组)。

chown [选项] <文件拥有者>[:群组] <目标文件...>

注意:拥有者不一定要在群组内!

选项 功能
-R 递归处理目录下所有文件

cp

copy 的缩写,拷贝文件。

cp <源文件> <目标文件>

文件名不需要相同,相当于将数据拷贝过去然后重命名。

grep

Global Regular Expression Print 的缩写,查找内容中匹配正则表达式的字符串,并将该行(我称为“命中行”)打印至标准输出,常与其他命令联合使用(使用 | 分隔,并将前一条命令将要打印的字符串作为 grep 命令查找的内容)。

grep [选项] [匹配样式] [目标文件...]
选项 功能
-a 不忽略二进制数据
-A <行数> 打印命中行及之后的指定行
-b 打印命中行首字符在内容中的编号(即在内容中的第几个字符)
-B <行数> 打印命中行及之前的指定行
-c 打印命中的行数
-C <行数> 打印命中行及其前后的指定行
-e <表达式> 指定正则表达式,在参数较多时避免混淆,一般可省略
-E <表达式> 指定正则表达式,并作为延伸的正则表达式使用
-f <表达式文件> 文件可以有多行,每行为一个正则表达式,匹配文件中所有行才算命中(不需要是同一个字符串)
-i 忽略大小写
-I 打印有内容命中的文件名
-L 打印内容未命中的文件名
-v 打印未命中的所有行

ln

link 的缩写,创建文件的连接,分为硬连接 hard link 和软连接(符号连接) symbolic link,其区别为:

硬连接 软连接
以文件副本形式存在,但不占用空间(起个别名) 以文件路径形式存在(类似 Windows 下的快捷方式)
只能在同一文件系统下 可以跨文件系统
目标文件必须存在 可以对一个不存在的文件名进行链接(无效的快捷方式?)
不可以指向目录 可以指向目录
ln [选项] <源文件> <目标文件>
选项 功能
-b 覆盖以前的连接
-d 允许 root 用户创建目录的硬连接
-s 创建软连接
-n 将软连接视为一般目录

创建软连接请尽量使用绝对路径,如果使用相对路径,则连接文件被移动后可能失效,或者指向一个错误的文件。

ls

list 的缩写,Linux 下最为常用的命令之一,用于显示指定目录下的文件,省略目录时指定当前目录。

ls [选项] [目标目录]
常用选项 功能
省略 -C
-a 同上,但额外显示隐藏文件
-A 同上,但不显示 ... 目录
-C 按行打印非隐藏文件名,行内显示不下会换行
-h -l 一起使用,含义为“人性化显示”,大小以单位 KB 显示(默认 Byte
-l 以列表打印文件的详细信息,格式如下
类型 | 权限 | 硬连接数 | 所有者 | 组 | 大小 | 最后修改日期 | 文件名
-t 按时间降序排序(越近的排在越前面)
类型 含义
- 普通文件
d 目录文件
p 管理文件
l 连接文件
b 块设备文件
c 字符设备文件
s 套接字文件
硬连接数 含义
普通文件 连接数
目录文件 第一级子目录个数

mkdir

make directory 的缩写,创建目录。

mkdir [选项] <目标目录...>
选项 功能
-p 递归创建:当目标目录的上级目录没有创建时先创建上级目录
-m <参数> 指定目录文件的权限(默认为 755

mv

move 的缩写,移动文件。

mv <源文件> <目标文件>

重命名文件的命令也是它。

rm

remove 的缩写,删除文件。

rm [选项] <目标文件...>
选项 功能
-r 递归删除:删除目录下的所有文件,同时也用来删除目录文件
-f 强制删除:忽略所有提示与询问(rm -rf / ??,这条指令在 CentOS 7 下依然会有提示)

stat

status 的缩写,显示文件的 inode 内容。

stat <目标文件>

输出如下:

  File: ‘testfile’
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: fd01h/64769d	Inode: 393266      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2020-05-13 21:54:39.719866244 +0800
Modify: 2020-05-13 21:54:39.719866244 +0800
Change: 2020-05-13 21:54:39.719866244 +0800
 Birth: -

touch

修改文件的属性,如果文件不存在则创建(常用于创建文件)。

touch [选项] <目标文件...>
选项 功能
省略 修改文件时间为当前系统时间
-c 如果文件不存在,则不创建(即只修改文件属性)
-a 只修改 atime
-m 只修改 mtime
-d 修改为指定时间,格式 [YY]YYMMDDYY 时间限定为 1969-2068
-t 修改为指定时间,格式 [YY]YYMMDDhhmm[.SS],注意这个 .
时间参数 含义
Access Time ( atime ) 访问时间:文件的内容被读取时,访问时间更新
Modify Time ( mtime ) 数据修改时间:文件的内容数据发生变化时,数据修改时间更新
Change Time ( ctime ) 状态修改时间:文件的状态(权限等)发生变化时,状态修改时间更新
无法使用 touch 指令更改为指定时间(每次 touch 都会更新它为系统时间)

个人博客:https://wilfredshen.cn/

以上是关于Linux 常用命令及注意事项的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用命令

Linux 常用命令

HDFS常用文件操作命令及注意事项

ubuntu的一些常用命令及疑难杂症

hadoop入门之HDFS常用文件操作命令及注意事项

linux 磁盘分区及常用linux命令