umask
最终权限 = 起始权限 & (~umask)
umask
是一个用于设置用户文件创建权限掩码的命令。在 UNIX 和类 UNIX 操作系统中,umask
值定义了在创建新文件或目录时要屏蔽的权限位。具体来说,umask
值会从新创建的文件或目录权限中去除相应位的权限。
-
查看当前的
umask
值:- 在终端中输入
umask
命令,会显示当前的umask
值,通常以八进制形式表示。root@iZ2vch4tdjuyi8htrm9i7hZ:~/test# umask 0022
- 在终端中输入
-
设置
umask
值:- 使用
umask
命令,后面跟随一个三位八进制数,来设置新的umask
值。例如,umask 022
。
对022取反:~022(0) = ~000 010 010(b) = 111 101 101(b) = 7 5 5(0)root@iZ2vch4tdjuyi8htrm9i7hZ:~/test# umask 022 root@iZ2vch4tdjuyi8htrm9i7hZ:~/test# umask 0022
- 每一位代表一个权限位,一般来说,第一位控制所有者的权限,第二位控制与所有者同一组的用户的权限,第三位控制其他用户的权限。
root@iZ2vch4tdjuyi8htrm9i7hZ:~/test# ls -l total 4 -rw-r--r-- 1 root root 0 Aug 13 17:47 1.exe -rw-r--r-- 1 root root 0 Aug 13 17:47 1.txt drwxr-xr-x 2 root root 4096 Aug 13 17:48 dir
root@iZ2vch4tdjuyi8htrm9i7hZ:~/test# umask -S u=rwx,g=rx,o=rx
umask -S 显示创建的默认权限
若是非执行程序会默认去掉可执行权限
r-可读 ;w-可写;x-可执行
u-所有者;g-所属组;o-其他用户
rwx rwx r-x:
111 111 101
7 7 5
- 使用
-
计算新文件或目录的权限:
- 当新文件或目录创建时,系统会根据
umask
值来确定其权限。
- 当新文件或目录创建时,系统会根据
chmod
chmod
是一个常用的 UNIX 和类 UNIX 操作系统中的命令,用于更改文件或目录的权限。该命令允许用户为文件或目录添加或删除读取、写入和执行权限,以及设置文件所有者、所属组和其他用户的权限。
chmod [选项] 模式 文件名
常用选项:
-c
:显示更改的权限。-f
:不显示错误信息。-R
:递归更改目录及其子目录下的文件权限。
常见权限符号:
u
:文件所有者(user)。g
:文件所属组(group)。o
:其他用户(others)。a
:所有用户(all)。
常见权限模式:
+
:添加权限。-
:删除权限。=
:设置权限。
示例:
-
为所有用户添加读取权限:
chmod +r filename
-
为文件所有者添加写入和执行权限,为组用户和其他用户添加读取权限:
chmod u+wx,g+r,o+r filename
-
将目录及其所有子目录和文件的权限设置为
755
:chmod -R 755 directory
4.递归更改目录及其子目录下所有文件的权限:
chmod -R u=rwX,g=rX,o=rX directory
chown
chown
命令用于更改文件或目录的所有者和所属组。在 UNIX 和类 UNIX 系统中,只有超级用户(root)才能更改文件或目录的所有者。更改文件的所有者可能是必要的,尤其是在需要控制文件访问权限或在系统管理员进行维护时。
语法:
chown [选项] 新所有者:新所属组 文件名
常见选项:
-R
:递归更改,包括目录及其下所有文件和子目录。--reference=参考文件
:根据参考文件的所有者和所属组设置目标文件的所有者和所属组。-v
:显示操作的详细信息。
示例用法:
-
更改文件所有者为新用户:
chown newuser file.txt
这将把
file.txt
文件的所有者更改为newuser
。 -
更改文件所有者和所属组:
chown newuser:newgroup file.txt
这将把
file.txt
文件的所有者更改为newuser
,同时将所属组更改为newgroup
。 -
递归更改目录及其下所有文件和子目录的所有者和所属组:
chown -R newuser:newgroup directory/
这将递归更改
directory/
目录下的所有文件和子目录的所有者为newuser
,所属组为newgroup
。
chgrp
chgrp
命令用于更改文件或目录的所属组。只有超级用户(root)和文件的所有者才能更改文件或目录的所属组。更改文件的所属组可能是必要的,特别是在需要控制文件访问权限或在系统管理员进行维护时。
chgrp
命令与 chown
不同,它只更改文件或目录的所属组,而不涉及文件的所有者。这使得管理员能够更灵活地管理文件的权限和访问控制。
语法:
chgrp [选项] 新所属组 文件名
常见选项:
-R
:递归更改,包括目录及其下所有文件和子目录。--reference=参考文件
:根据参考文件的所属组设置目标文件的所属组。-v
:显示操作的详细信息。
示例用法:
-
更改文件的所属组为新组:
chgrp newgroup file.txt
这将把
file.txt
文件的所属组更改为newgroup
。 -
递归更改目录及其下所有文件和子目录的所属组:
chgrp -R newgroup directory/
这将递归更改
directory/
目录下的所有文件和子目录的所属组为newgroup
。
su,sudo
su
和 sudo
都是用于在 UNIX 和类 UNIX 系统中切换用户身份的命令,但它们之间有一些重要的区别。
su
命令:
- 用途:
su
是 "switch user" 的缩写,用于切换到其他用户的身份。 - 权限:通常需要知道目标用户的密码才能切换到该用户。
- 使用方式:一般使用
su
命令时需要指定目标用户,例如su username
。 - 切换到 root 用户:可以使用
su
命令切换到 root 用户,然后输入 root 用户的密码。
sudo
命令:
- 用途:
sudo
是 "superuser do" 的缩写,允许授权用户以超级用户(root)的身份执行命令。 - 权限:需要在授权用户的 sudoers 文件中配置允许执行的命令。
- 使用方式:一般使用
sudo
命令时,需要在命令前加上sudo
,例如sudo command
。 - 权限提升:通过
sudo
执行的命令会要求输入当前用户的密码,而不是目标用户的密码。
示例用法:
-
使用
su
切换用户:su username
-
使用
sudo
执行具有特权的命令:sudo apt-get update
-
使用
sudo
切换到 root 用户:sudo su
sudo
相对更安全,因为它允许对用户进行更细的控制,并且用户不必知道目标用户的密码。su
更适合在需要切换到其他用户的情况下使用,而 sudo
更适合在需要执行具有特权的命令时使用。
在使用 sudo
命令时,可以通过编辑 /etc/sudoers
文件或使用 visudo
命令来配置 sudoers
文件。sudoers
文件中包含了 sudo
命令的配置信息,定义了哪些用户可以以超级用户的身份执行哪些命令。
使用 visudo
命令编辑 sudoers
文件:
-
执行以下命令以编辑
sudoers
文件:sudo visudo
-
visudo
将打开一个文本编辑器(通常是vi
或vim
),显示sudoers
文件的内容。 -
在文件中,可以为特定用户或用户组添加权限规则。以下是一些示例配置:
-
允许用户执行所有命令:
username ALL=(ALL:ALL) ALL
-
允许用户执行特定命令而无需密码:
username ALL=NOPASSWD:/path/to/command
-
允许用户执行任何命令,但需要输入密码:
username ALL=(ALL) ALL
-
-
在编辑完成后,保存并退出编辑器。
visudo
会检查文件的语法错误,以防止配置错误导致权限问题。
谁可以使用 允许使用的主机 = (以谁的身份) 可执行命令的列表
谁可以使用:稍后要为哪位用户进行命令授权。
允许使用的主机:可以填写ALL表示不限制来源的主机,亦可填写如192.168.10.0/24这样的网段限制来源地址,使得只有从允许网段登录时才能使用sudo命令。
以谁的身份:可以填写ALL表示系统最高权限,也可以是另外一位用户的名字。
可执行命令的列表:可以填写ALL表示不限制命令,亦可填写如/usr/bin/ls这样的文件名称来限制命令列表,多个命令文件之间用逗号间隔。
注意事项:
- 不要直接编辑
/etc/sudoers
文件,应始终使用visudo
命令进行编辑,以避免可能的语法错误。 - 配置
sudoers
文件需要谨慎操作,错误的配置可能导致系统安全问题。 - 在配置
sudoers
文件时,应该严格遵循格式规范和权限原则,以确保系统安全性和可维护性。
通过配置 sudoers
文件,管理员可以灵活地控制哪些用户可以以超级用户权限执行哪些命令,从而提高系统的安全性和管理效率。
grep
grep
是一个常用的文本搜索工具,用于在文件或输入流中查找匹配指定模式的行,并将匹配的行打印出来。grep
是一个强大的命令行工具,可以帮助用户快速定位和过滤所需的信息。
基本语法:
grep [选项] 模式 [文件...]
常见选项:
-i
:忽略大小写。-r
:递归搜索目录及其子目录。-n
:显示匹配行的行号。-v
:反向匹配,只显示不匹配的行。-c
:只显示匹配行的数量。-l
:只列出包含匹配内容的文件名,而不显示匹配的行。- -F: 用于指定搜索时将模式视为固定字符串而不是正则表达式。这意味着
grep
将按照字面上的方式匹配模式,而不会将其解释为正则表达式。 - -E: 用于启用扩展正则表达式(Extended Regular Expression)模式匹配。
- -o: 用于仅显示匹配到的文本而不是整行。这在需要提取匹配文本而不是整行内容时非常有用。
示例用法:
-
在文件中查找匹配的行:
grep pattern file.txt
-
忽略大小写进行搜索:
grep -i pattern file.txt
-
递归搜索目录及其子目录:
grep -r pattern directory/
-
显示匹配行的行号:
grep -n pattern file.txt
-
只显示匹配行的数量:
grep -c pattern file.txt
-
只列出包含匹配内容的文件名:
grep -l pattern directory/
-
搜索一个固定的字符串而不是正则表达式
grep -F "pattern" file.txt
-
-E
选项可以扩展grep
对正则表达式的支持,使其能够更灵活地匹配文本模式。这对于需要更复杂匹配模式的情况非常有用。grep -E "word1|word2" file.txt
-
-o
选项可以有效地提取并显示匹配到的文本部分,而不必显示整个包含匹配的行。grep -o "example" file.txt
grep
命令非常灵活,可以与管道符 |
结合使用,也可以与其他命令一起使用,使其成为命令行中强大的搜索工具。
cat
cat
命令在 Unix 和类 Unix 系统上用于连接文件并打印它们的内容到标准输出。除了连接文件外,cat
还可用于创建文件、追加文件内容和输出文件内容等操作。
cat [options] [file(s)]
常见的 cat
命令选项包括:
-n
:显示行号-b
:显示非空行的行号-s
:压缩连续空行为一行-E
:在每行的结尾显示$
-T
:将制表符显示为^I
-A
:相当于-vET
chattr
chattr
命令是 Linux 系统中用于改变文件或目录的属性的命令。它允许用户改变文件的扩展属性,这些属性对文件系统的正常运行有一定的影响。
chattr [+-=][属性标志] [文件名]
+
:添加属性标志-
:移除属性标志=
:设置属性标志
常见的属性标志包括:
a
:只允许以追加模式打开文件i
:设置文件为不可修改c
:当文件被删除时自动将其内容置零u
:当文件被删除时保留其数据块以便恢复
例如,如果要将文件 example.txt
设置为不可修改,可以使用以下命令:
chattr +i example.txt
cksum
cksum
命令用于生成文件的校验和(checksum)。校验和是通过对文件的内容进行特定算法计算得到的固定长度的值,用于验证文件的完整性或检测文件是否被篡改。
cksum
命令的基本语法如下:
cksum [文件名]
当在命令行中运行 cksum
命令并指定要计算校验和的文件名时,它将输出两个值:第一个是 CRC(循环冗余校验)校验和,第二个是字节数。这两个值可以用来验证文件的完整性。
例如,假设要计算文件 example.txt
的校验和,可以运行以下命令:
cksum example.txt
cksum
命令通常用于验证数据传输的准确性或检查文件是否在传输过程中被损坏。当接收方在接收文件后再次计算校验和并将其与发送方提供的校验和进行比较时,如果两个校验和不匹配,就表示文件在传输过程中可能发生了损坏或篡改。
cmp
cmp
命令用于比较两个文件并确定它们是否有任何不同之处。如果文件相同,cmp
命令将不会输出任何内容;如果文件不同,它将显示第一个不同处的字节偏移和相应的行号。
cmp
命令的基本语法如下:
cmp [option] file1 file2
常见的选项:
-s
:静默模式,不产生输出-l
:显示所有不同处的字节偏移和十进制、八进制、十六进制形式的不同字节值-n bytes
:指定比较的字节数-i bytes
:指定忽略的前几个字节
如,要比较两个文件 file1.txt
和 file2.txt
,可以运行以下命令:
cmp file1.txt file2.txt
如果文件相同,cmp
命令将不会输出任何内容。如果文件不同,它将会显示第一个不同处的字节偏移和相应的行号。
cmp
命令在文件比较和验证过程中非常有用,可用于确保文件的准确传输、备份的完整性以及检查文件是否在复制过程中发生了变化。
file
file
命令是一个在 Unix 和类 Unix 系统上用于确定文件类型的命令。它会检查文件的内容并尝试猜测文件的类型。
file
命令的基本语法如下:
file [选项] [文件名]
一些常见的选项包括:
-b
:不显示文件名称-i
:以 MIME 类型输出- -c 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
- -L 直接显示符号连接所指向的文件的类别。
- -m<魔法数字文件> 指定魔法数字文件。
- -v 显示版本信息。
- -z 尝试去解读压缩文件的内容。
例如,要查看文件 example.txt
的类型,可以运行以下命令:
file example.txt
file
命令通常根据文件的魔术数字(magic number)和其他特征来确定文件类型。它可以识别各种类型的文件,如文本文件、二进制文件、压缩文件等,并且对于许多文件类型都有很好的识别能力。
在系统管理和文件处理中,file
命令是一个很有用的工具,可以帮助用户快速了解文件的类型,有助于正确选择合适的处理方式。
find
find
命令是在 Unix 和类 Unix 系统中用于在文件系统中搜索文件和目录的强大工具。它能够根据指定的条件在指定的路径下查找文件,并执行相应的操作。
find
命令的基本语法如下:
find [路径] [表达式]
一些常见的用法包括:
- 查找所有文件和目录:
find /path/to/directory
- 根据文件名查找:
find /path/to/directory -name "filename"
- 根据文件类型查找:
find /path/to/directory -type f
(查找文件)或find /path/to/directory -type d
(查找目录) - 根据大小查找:
find /path/to/directory -size +10M
(查找大于 10MB 的文件) - 根据权限查找:
find /path/to/directory -perm 644
(查找权限为 644 的文件) - 结合执行操作:
find /path/to/directory -name "*.txt" -exec rm {} \;
(删除所有扩展名为.txt
的文件)
例如,要在当前目录下查找所有名称为 example.txt
的文件,可以运行以下命令:
find . -name "example.txt"
find
命令非常有用,特别是在需要批量处理文件或需要搜索特定文件类型或属性的情况下。通过结合不同的表达式和选项,find
命令可以满足各种文件搜索和处理需求。
cut
cut
命令是一个在 Unix 和类 Unix 系统上用于提取文件内容的命令行工具。它通常用于从文件或标准输入中提取特定字段或列,并将结果输出到标准输出。
cut
命令的基本语法如下:
cut [选项] 文件名
常见的选项:
-f
:指定要提取的字段或列-d
:指定字段的分隔符,默认为制表符\t
-c
:提取指定的字符
如,要从一个以逗号分隔的文件 data.csv
中提取第二列,可以运行以下命令:
cut -d ',' -f 2 data.csv
这将输出 data.csv
文件中的第二列数据。
cut
命令在处理文本文件时非常有用,特别是当需要从大量数据中提取特定字段或列时。通过结合不同的选项和参数,可以轻松地提取所需的信息并进行进一步处理。
ln
ln
是在 Unix 和类 Unix 系统中用于创建链接(link)的命令。在 Linux 系统中,ln
命令通常用于创建硬链接和符号链接(符号链接也称为软链接)。
ln命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
以下是 ln
命令的基本语法:
ln [选项] 源文件 目标文件
其中,源文件
是要链接的原始文件,而 目标文件
是要创建的链接文件的名称。
选项:
-s
:创建符号链接(软链接)-f
:如果目标文件已存在,则强制执行操作
-
创建硬链接:
硬链接是指多个文件名指向同一数据块的链接,修改其中一个文件将影响其他文件。
ln 源文件 目标文件
-
创建符号链接(软链接):
软链接是指一个文件名指向另一个文件名的链接,类似于 Windows 中的快捷方式。
ln -s 源文件 目标文件
例如,要在当前目录创建一个指向 /path/to/file
的符号链接 link_to_file
,可以运行以下命令:
ln -s /path/to/file link_to_file
ln
命令在 Linux 系统中用于管理文件链接,可以帮助用户在文件系统中创建链接以方便地访问和管理文件。硬链接和符号链接在不同的使用场景中有各自的优势,根据需要选择适合的类型。
less
less
是一个在 Unix 和类 Unix 系统上常用的查看文件内容的命令行工具。它允许用户浏览文件的内容,支持向前和向后滚动,搜索文本等功能。less
比 more
命令更加强大和灵活。
以下是一些常见的 less
命令用法:
-
打开文件:
less 文件名
-
向下滚动:
- 使用箭头键或者 Page Down 键向下滚动。
- 按下空格键向下滚动一页。
- 按下
j
键向下滚动一行。
-
向上滚动:
- 使用箭头键或者 Page Up 键向上滚动。
- 按下
b
键向上滚动一页。 - 按下
k
键向上滚动一行。
-
搜索文本:
- 按下
/
键后输入要搜索的内容,然后按下 Enter 键进行搜索。 - 按下
n
键查找下一个匹配项。 - 按下
N
键查找上一个匹配项。
- 按下
-
退出:
按下q
键退出less
。
less
命令是一个非常有用的工具,特别是在需要查看大文件内容或搜索特定信息时。它提供了比简单的命令如 cat
更多的功能和交互性。
purge
purge
是一个用于完全移除软件包及其相关配置文件的 apt
命令选项。在 Ubuntu 或其他基于 Debian 的 Linux 发行版上,purge
选项通常与 apt remove
命令一起使用,可以彻底清除软件包及其配置文件,使系统恢复到安装软件包之前的状态。
安装 Midnight Commander(mc):
sudo apt update # 更新包列表
sudo apt install mc # 安装 Midnight Commander
sudo
:以超级用户权限运行命令。apt update
:更新可用软件包列表,确保安装最新版本。apt install mc
:安装 Midnight Commander。
移除 Midnight Commander(mc):
sudo apt remove mc # 移除 Midnight Commander
sudo
:以超级用户权限运行命令。apt remove mc
:卸载 Midnight Commander。
如果你希望在移除 Midnight Commander 时同时删除其配置文件,可以使用 purge
命令:
sudo apt purge mc # 卸载 Midnight Commander 并删除配置文件
使用 purge
选项:
sudo apt purge 软件包名称
sudo
:以超级用户权限运行命令。apt purge
:卸载软件包并删除其配置文件。
例子:
如果你想完全移除 Midnight Commander(mc)软件包及其相关配置文件,你可以运行:
sudo apt purge mc
这将卸载 Midnight Commander 并删除其配置文件,使系统不再保留与该软件包相关的任何文件。
使用 purge
选项时要小心,因为它会删除软件包的所有配置文件,包括用户自定义的配置。确保你真的想要删除软件包的所有相关文件,以免造成不必要的数据丢失或配置重置。
mv
mv
是一个在 Unix 和类 Unix 系统上用于移动文件或重命名文件的命令行工具。它的基本语法如下:
mv 源文件 目标位置/目标文件名
源文件
:要移动或重命名的文件或目录的路径。目标位置/目标文件名
:文件移动到的目标位置或重命名后的目标文件名。
- -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
- -n: 不要覆盖任何已存在的文件或目录。
- -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
用法示例:
-
移动文件:
若要将
file.txt
移动到Documents
目录中,可以使用以下命令:mv file.txt Documents/
-
重命名文件:
若要将
oldfile.txt
重命名为newfile.txt
,可以使用以下命令:mv oldfile.txt newfile.txt
-
移动并重命名文件:
若要将
file.txt
移动到Documents
目录并重命名为newfile.txt
,可以使用以下命令:mv file.txt Documents/newfile.txt
注意事项:
- 如果目标位置已经存在同名文件,并且你没有使用
-i
选项进行交互式确认,mv
命令会覆盖目标文件。 - 如果你没有足够的权限在目标位置移动文件,需要使用
sudo
命令获取足够权限。
mv
命令是在 Unix 系统中非常常用的命令,用于在文件系统中移动和重命名文件或目录。确保在使用 mv
命令时小心谨慎,以免意外删除或丢失重要文件。
od
od
是一个用于查看文件的八进制、十六进制等形式的工具。它通常用于显示文件的内容,尤其是对于非文本文件或二进制文件。od
命令允许你以不同的进制(八进制、十六进制等)来查看文件的内容。
一般用法:
od [选项] [文件名]
一些常用选项和用法:
-
显示十六进制内容:
od -t x1 file.txt
-
显示八进制内容:
od -t o1 file.txt
-
显示十六进制和ASCII内容:
od -t x1a file.txt
-
显示十六进制和ASCII字符:
od -t x1c file.txt
-
显示整数值:
od -t d2 file.txt
-
显示不同字节长度的整数值:
od -t d4 file.txt
-
显示指定长度的字节:
od -N 16 -t x1 file.txt
od
命令非常灵活,可以通过不同的选项来定制显示文件内容的格式。它对于检查文件的二进制内容或查看非文本文件的内部结构非常有用。
rm
rm
是一个常用的 Unix/Linux 命令,用于删除文件或目录。rm
命令非常强大,但在使用时需要小心,因为删除的文件通常无法恢复。以下是 rm
命令的一般用法和一些常见选项:
一般用法:
rm [选项] [文件/目录]
一些常用选项和用法:
-
删除文件:
rm file.txt
-
删除目录及其所有内容:
rm -r directory/
-
交互式删除,提示用户确认:
rm -i file.txt
-
递归删除,包括子目录:
rm -r directory/
-
强制删除,无需确认:
rm -f file.txt
-
删除空目录:
rmdir empty_directory/
请注意,使用 rm
命令时要格外小心,特别是在使用 -r
(递归)和 -f
(强制)选项时,以免误删重要文件。建议在执行删除操作之前仔细检查要删除的文件和目录,或者使用 -i
选项来进行交互式删除,以避免意外删除。
split
split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]
split
是一个在 Unix/Linux 系统中常用的命令,用于将文件分割成较小的部分。这个命令通常用于将大文件分割成更小的文件,以便于传输、备份或处理。以下是 split
命令的一般用法和一些常见选项:
一般用法:
split [选项] [源文件] [目标文件前缀]
一些常用选项和用法:
-
将文件按照行数分割:
split -l 1000 large_file.txt output_
这将把
large_file.txt
文件按照每个文件包含 1000 行的方式分割,并以output_
作为前缀生成分割后的文件。 -
将文件按照指定大小分割:
split -b 1M large_file.txt output_
这将把
large_file.txt
文件按照每个文件大小为 1MB 的方式分割,并以output_
作为前缀生成分割后的文件。 -
指定分割后文件名字长度:
split -a 2 -l 1000 large_file.txt output_
这将把
large_file.txt
文件按照每个文件包含 1000 行的方式分割,并以output_
作为前缀生成分割后的文件,文件名字长度为 2。
split
命令非常有用,可以帮助你有效地分割大文件为更小的部分,以便于处理和管理。根据需求选择合适的选项和参数来使用 split
命令。
tee
tee
是一个常见的 Unix/Linux 命令,通常用于从标准输入读取数据,并同时将数据输出到标准输出和一个或多个文件中。tee
命令的主要功能是在数据流中插入一个分支,允许数据在流向标准输出的同时被保存到文件中。
一般用法:
command | tee file1 file2 ...
或者
command | tee -a file1 file2 ...
一些常用选项和用法:
-
将命令的输出保存到文件并输出到屏幕:
ls -l | tee file.txt
这会将
ls -l
命令的输出同时显示在终端中并保存到file.txt
文件中。 -
追加输出到文件:
ls -a | tee -a file.txt
这会将
ls -a
命令的输出追加到file.txt
文件中。 -
将输出同时保存到多个文件:
ps aux | tee file1.txt file2.txt
这会将
ps aux
命令的输出同时保存到file1.txt
和file2.txt
文件中。 -
在输出中插入
tee
,以便查看中间结果:command1 | tee >(command2) | command3
这样可以将
command1
的输出同时传递给command2
和command3
,并且还可以在终端上查看command2
处理的中间结果。
tee
命令非常有用,特别是在需要同时输出到屏幕和文件时。使用 tee
可以方便地保存命令的输出,同时查看输出结果。
touch
touch
是一个在 Unix 和类 Unix 系统上常用的命令,用于创建空白文件或更新现有文件的时间戳。这个命令的主要作用是修改文件的访问和修改时间戳,如果文件不存在,则会创建一个新的空文件。
一般用法:
touch [选项] 文件名
一些常见选项和用法:
-
创建一个空文件:
touch file.txt
这会在当前目录下创建一个名为
file.txt
的空文件。 -
更新现有文件的时间戳:
touch file.txt
这会更新
file.txt
文件的访问时间和修改时间戳为当前时间。 -
同时创建多个文件:
touch file1.txt file2.txt file3.txt
这会在当前目录下同时创建名为
file1.txt
,file2.txt
,file3.txt
的空文件。 -
指定日期时间来创建或修改文件的时间戳:
touch -t 202308141200.00 file.txt
这会将
file.txt
文件的访问时间和修改时间戳设置为指定的日期时间(2023 年 8 月 14 日 12:00:00)。
touch
命令在日常工作中很常见,特别是在脚本和自动化任务中。它不仅可以创建空文件,还可以方便地修改文件的时间戳。
which
which
是一个在 Unix 和类 Unix 系统上常用的命令,用于查找并显示指定命令的绝对路径。当你输入一个命令时,系统会从环境变量 $PATH
中列出的目录中查找该命令的可执行文件,并返回找到的第一个匹配项。
一般用法:
which [命令名]
示例:
-
查找命令的绝对路径:
which ls
这会显示
ls
命令的绝对路径,例如/bin/ls
。 -
查找自定义命令的路径:
如果你安装了自定义的命令或脚本,并且想知道它们的绝对路径,可以使用
which
命令来查找。which myscript
这会显示
myscript
命令的绝对路径,如果存在的话。 -
查找多个命令的路径:
which ls cat
这样可以一次性查找多个命令的绝对路径。
which
命令可以帮助你确定系统中特定命令的位置,这在理解系统中命令的执行方式以及调试路径问题时非常有用。
cp
cp
是一个在 Unix 和类 Unix 系统上常用的命令,用于复制文件和目录。cp
命令的一般语法如下:
cp [选项] 源文件 目标文件
一些常见选项和用法:
-
将文件复制到目标位置:
cp file1.txt /path/to/directory/
这会将
file1.txt
复制到/path/to/directory/
目录下。 -
同时复制多个文件到目标位置:
cp file1.txt file2.txt /path/to/directory/
这会将
file1.txt
和file2.txt
复制到/path/to/directory/
目录下。 -
复制目录及其内容:
cp -r directory1 /path/to/destination/
这会将
directory1
目录及其所有内容递归地复制到/path/to/destination/
。 -
保留源文件的权限、时间戳等信息:
cp -p file1.txt /path/to/directory/
使用
-p
选项可以保留源文件的权限、时间戳等信息。 -
交互式复制:
cp -i file1.txt /path/to/directory/
使用
-i
选项可以进行交互式复制,提示是否覆盖已存在的文件。
cp
命令在日常工作中非常常用,用于文件和目录的复制操作。
whereis
whereis
是一个在 Unix 和类 Unix 系统上常用的命令,用于查找指定命令的可执行文件、源代码文件以及帮助文档的路径。
一般用法:
whereis [选项] 命令名
示例:
-
查找命令的可执行文件、源代码文件和帮助文档:
whereis ls
这会显示
ls
命令的可执行文件、源代码文件以及帮助文档的路径(如果有的话)。 -
指定搜索路径:
whereis -B /usr/bin -f ls
这会在
/usr/bin
目录下查找ls
命令的可执行文件。 -
仅限搜索可执行文件路径:
whereis -b ls
这会仅显示
ls
命令的可执行文件路径。 -
仅限搜索帮助文档路径:
whereis -m ls
这会仅显示
ls
命令的帮助文档路径。
whereis
命令通常用于快速查找命令的位置以及相关文件的路径,有助于用户在系统中查找所需的信息。
scp
scp
是 Secure Copy 的缩写,它是一种在 Unix 和类 Unix 系统上用于在网络上安全地传输文件的命令。scp
命令使用 SSH 协议进行数据传输,可以在本地主机和远程主机之间复制文件和目录。
一般用法:
scp [选项] 源文件 目标位置
示例:
-
从本地复制到远程主机:
scp file.txt user@remotehost:/path/to/destination/
这会将本地的
file.txt
文件复制到远程主机的/path/to/destination/
目录下。 -
从远程主机复制到本地:
scp user@remotehost:/path/to/file.txt /local/path/
这会将远程主机上的
/path/to/file.txt
文件复制到本地的/local/path/
目录下。 -
复制目录及其内容:
scp -r directory user@remotehost:/remote/path/
使用
-r
选项可以递归地复制整个目录及其内容。 -
指定端口号:
scp -P 2222 file.txt user@remotehost:/path/to/destination/
使用
-P
选项可以指定 SSH 连接的端口号。
scp
命令非常有用,可以在不同主机之间安全地传输文件和目录。
awk
awk
是一种强大的文本处理工具,在 Unix 和类 Unix 系统中广泛使用。它可以用于逐行扫描和处理文本文件,执行各种文本处理任务,例如提取数据、格式化输出、计算等等。
基本语法:
awk 'pattern { action }' filename
pattern
可以是正则表达式或条件,用于匹配输入的行。action
是在匹配到的行上执行的操作。
示例用法:
-
打印文件中的每一行:
awk '{print}' file.txt
-
打印文件中第一列的内容:
awk '{print $1}' file.txt
-
计算文件中所有数字的总和:
awk '{sum += $1} END {print sum}' file.txt
-
根据条件筛选行并打印:
awk '$1 > 10 {print $0}' file.txt
-
使用字段分隔符:
awk -F':' '{print $1, $NF}' /etc/passwd
-
自定义输出格式:
awk '{printf "Name: %s, Age: %d\n", $1, $2}' file.txt
awk
是一种非常灵活和强大的文本处理工具,对于处理结构化文本数据非常有用。它允许根据需求编写简单到复杂的脚本来处理文本数据
read
read
是一个基本的 shell 命令,用于从标准输入(键盘输入)或其他文件描述符中读取输入并将其分配给一个或多个变量。
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-
从标准输入读取用户输入并赋值给变量:
echo "Enter your name: " read name echo "Hello, $name!"
这段脚本会提示用户输入名字,将用户输入赋值给
name
变量,然后打印出一个问候语。 -
从标准输入读取多个值并赋值给多个变量:
echo "Enter your first name and last name: " read first_name last_name echo "Hello, $first_name $last_name!"
-
指定提示信息:
read -p "Enter a number: " number echo "You entered: $number"
使用
-p
选项可以在读取输入之前显示自定义的提示信息。 -
设置超时时间:
read -t 5 -p "Enter something: " input
使用
-t
选项可以设置读取输入的超时时间(秒)。
使用 -a
选项创建数组:
#!/bin/bash
# 读取一行输入并将其分割存储到数组中
read -a names -p "Enter names separated by spaces: "
echo "The entered names are: ${names[@]}"
使用 -d
选项指定结束标志符:
#!/bin/bash
# 读取输入直到遇到分号为止
read -d ';' message
echo "Message read until semicolon: $message"
使用 -e
选项启用命令补全功能:
#!/bin/bash
# 启用命令补全功能
read -e -p "Enter a command: " command
echo "Command entered: $command"
使用 -n
选项限制输入文本的长度:
#!/bin/bash
# 限制输入文本长度为5
read -n 5 -p "Enter a 5-character word: " word
echo "Word entered: $word"
使用 -r
选项避免反斜杠转义:
#!/bin/bash
# 读取包含反斜杠的输入
read -r -p "Enter a string with backslashes: " input
echo "Input with backslashes: $input"
使用 -s
选项安静模式输入密码:
#!/bin/bash
# 输入密码不显示在屏幕上
read -s -p "Enter your password: " password
echo "Password entered."
col
col
是一个用于将文本文件中的控制字符、回车符和退格符进行处理的命令行工具。它通常用于过滤掉或处理文本文件中包含的特殊字符,以便更好地显示或处理这些文件。
col命令用于过滤控制字符。
在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。
基本语法:
col [选项] [文件名]
示例用法:
-
过滤控制字符并输出到屏幕:
col file.txt
这会将
file.txt
中的控制字符进行处理后输出到屏幕。 -
过滤控制字符并保存到新文件:
col file.txt > new_file.txt
这会将
file.txt
中的控制字符进行处理后保存到new_file.txt
文件中。
col
命令通常在需要处理包含控制字符的文本文件时使用,以便更清晰地查看文本内容或对其进行进一步处理。
sed
sed
是一个流编辑器,用于对文本进行处理、转换和过滤。它在 Unix 系统中非常常见,并且在 shell 脚本中被广泛使用。sed
可以根据指定的规则(正则表达式)对输入文本进行编辑和转换。
基本语法:
sed [选项] '命令' 文件名
一些常见的 sed
命令:
-
替换文本:
sed 's/old_text/new_text/g' file.txt
这将在
file.txt
中将所有出现的old_text
替换为new_text
。 -
删除行:
sed '/pattern/d' file.txt
这将删除包含指定模式
pattern
的行。 -
插入或追加行:
sed '1i This is the first line' file.txt sed '$a This is the last line' file.txt
第一个命令会在第一行前插入一行,第二个命令会在最后一行后追加一行。
-
打印特定行:
sed -n '5p' file.txt
这会打印第 5 行的内容。
-
使用正则表达式进行匹配:
sed -n '/pattern/p' file.txt
这会打印包含指定模式
pattern
的行。
示例用法:
-
在文件中替换指定文本:
sed 's/Hello/Hi/g' file.txt
-
删除空行并保存到新文件:
sed '/^$/d' file.txt > new_file.txt
-
打印文件中包含关键词的行:
sed -n '/important/p' file.txt
sed
是一个功能强大的文本处理工具,可以通过使用不同的命令和选项来执行各种文本编辑操作。
sort
sort
命令是 Linux 系统中用于对文本文件进行排序的命令。它可以按照不同的规则对文件的内容进行排序,并输出排序后的结果。
基本语法:
sort [options] [file]
options
:可选参数,用于指定排序的规则和方式。file
:要排序的文件名,如果不指定文件名,则从标准输入读取内容进行排序。
例子:
- 对文件进行排序:
sort example.txt
这会按默认规则对 example.txt
文件的内容进行排序,并将排序后的结果输出到标准输出。
- 按数字排序:
sort -n numbers.txt
这会按照数字顺序对 numbers.txt
文件的内容进行排序。
- 反向排序:
sort -r example.txt
这会以逆序(降序)对 example.txt
文件的内容进行排序。
- 指定字段排序:
sort -k2 file.txt
这会按照第二个字段(以空格或制表符分隔的列)对 file.txt
文件的内容进行排序。
- 去除重复行并排序:
sort -u example.txt
这会对 example.txt
文件的内容进行排序,并去除重复行。
选项:
-n
:按照数字大小排序。-r
:逆序排序。-k
:指定要排序的字段。-u
:去除重复行。-f
:忽略大小写。
注意:
sort
命令默认按照字典顺序排序。- 如果不指定文件名,则
sort
命令将从标准输入读取内容进行排序。 sort
命令可以与管道符一起使用,用于对命令的输出进行排序。
tr
tr
命令是一个用于替换、删除或压缩字符的实用程序,通常用于对文本进行简单的字符级操作。在 Unix/Linux 环境下,tr
命令通常用于处理文本流,可以在管道中使用。
基本语法:
tr [options] set1 [set2]
set1
:指定要替换的字符集。set2
:指定替换为的字符集。
例子:
- 替换字符:
echo "hello" | tr 'a-z' 'A-Z'
这会将字符串 "hello" 中的小写字母替换为大写字母。
- 删除特定字符:
echo "hello123" | tr -d '0-9'
这会删除字符串 "hello123" 中的数字。
- 字符压缩:
echo "hello" | tr -s 'l'
这会将字符串 "hello" 中的连续重复字符 "l" 压缩为单个字符。
- 转换空格为制表符:
cat file.txt | tr ' ' '\t'
这会将文件 file.txt
中的空格转换为制表符。
选项:
-d
:删除指定字符集中的字符。-s
:压缩重复字符,将连续出现的字符压缩为单个字符。-c
:对set1
中未指定的字符取补集。-t
:将set1
中的字符映射到set2
中字符的截断替换。
注意:
tr
命令是基于字符集进行操作的,无法处理多字节字符。- 可以通过管道结合其他命令使用,例如与
echo
、cat
、sed
等命令一起使用。
expr
expr
是一个用于进行数学运算和字符串处理的实用程序,通常在 shell 脚本中使用。expr
命令可以执行各种操作,包括算术运算、字符串比较和匹配等。
基本语法:
expr expression
expression
:要计算或评估的表达式。
例子:
- 算术运算:
expr 5 + 3
这会将 5 和 3 相加并输出结果。
- 字符串长度:
expr length "hello"
这会返回字符串 "hello" 的长度。
- 字符串比较:
expr "hello" : 'h.*'
这会检查字符串 "hello" 是否以 'h' 开头。
- 变量计算:
x=5
y=3
result=$(expr $x + $y)
echo $result
这会将变量 x
和 y
的值相加,并将结果存储在 result
变量中。
常见操作:
- 算术运算符:
+
(加法)、-
(减法)、*
(乘法)、/
(除法)、%
(取模)。 - 字符串操作:
length
(字符串长度)、index
(匹配子字符串)、match
(匹配正则表达式)等。
注意:
- 在进行算术运算时,操作数和运算符之间需要有空格分隔。
- 字符串操作需要在表达式中使用引号,以避免被 shell 解释器解释。
expr
命令的返回值通常以退出状态码的形式返回,0 表示成功,1 表示失败。
uniq
uniq
命令用于从已排序的文本输入中删除重复的行,或者仅显示重复的行。这个命令通常与 sort
命令结合使用。
基本语法:
uniq [options] [input_file [output_file]]
input_file
:要处理的输入文件。output_file
:输出结果的文件。options
:用于指定uniq
命令的选项,如-d
、-u
等。
例子:
- 删除重复行并输出结果:
sort file.txt | uniq
这个命令会先对 file.txt
文件进行排序,然后删除其中的重复行,并将结果输出到标准输出。
- 仅显示重复行:
sort file.txt | uniq -d
这个命令会显示 file.txt
文件中的重复行,而不显示不重复的行。
- 仅显示不重复的行:
sort file.txt | uniq -u
这个命令会显示 file.txt
文件中不重复的行,而删除重复的行。
- 显示重复行出现次数:
sort file.txt | uniq -c
这会在输出中显示每行重复出现的次数。
选项:
-c
:显示每行重复出现的次数。-d
:仅显示重复的行。-u
:仅显示不重复的行。-f
:忽略前 N 个字段。-s
:忽略前 N 个字符。-i
:忽略大小写。
注意:
uniq
命令通常需要在输入之前进行排序,以确保重复行相邻。- 当
uniq
用于非排序的输入时,它仅会删除相邻的重复行。 uniq
命令通常在处理文本文件时非常有用,特别是当需要处理大量数据并需要删除或标识重复行时。
wc
wc
命令用于统计文件中的字节数、字数、行数等信息。它是一个非常有用的命令,特别是在处理文本文件时。
基本语法:
wc [options] [file]
file
:要处理的文件名。options
:用于指定wc
命令的选项,如-l
、-w
、-c
等。
例子:
- 统计文件中的行数、字数和字节数:
wc file.txt
这将输出文件 file.txt
中的行数、字数和字节数。
- 仅统计行数:
wc -l file.txt
这将仅显示文件 file.txt
中的行数。
- 仅统计字数:
wc -w file.txt
这将仅显示文件 file.txt
中的字数。
- 仅统计字节数:
wc -c file.txt
这将仅显示文件 file.txt
中的字节数。
选项:
-l
:仅显示行数。-w
:仅显示字数。-c
:仅显示字节数。-m
:仅显示字符数。-L
:显示文件中最长行的长度。
注意:
- 如果不提供文件名作为参数,
wc
命令将从标准输入中读取数据并计算统计信息。 wc
命令通常用于统计文本文件的信息,但也可以用于统计其他类型的文件。- 通过结合不同的选项,Fning可以根据需要选择性地显示特定的统计信息
let
let
是一个用于执行算术运算的 Bash shell 内置命令。它可以用于进行简单的算术操作,如加法、减法、乘法和除法。下面是关于 let
命令的基本用法和一些示例:
基本语法:
let expression
例子:
加法:
let result=5+3
echo $result
这将输出 8,表示将 5 和 3 相加的结果。
减法:
let result=7-2
echo $result
这将输出 5,表示将 7 减去 2 的结果。
乘法:
let result=4*6
echo $result
这将输出 24,表示将 4 乘以 6 的结果。
除法:
let result=10/2
echo $result
这将输出 5,表示将 10 除以 2 的结果。
注意:
- 在使用
let
命令时,表达式中的操作符和变量之间不需要空格。 - 变量赋值时,等号两侧也不需要空格。
- 可以在一个表达式中结合多个操作,如
let result=(5+3)*2
,这将首先计算括号内的加法,然后将结果乘以 2。
lprm
lprm
命令通常在 Unix/Linux 系统上使用,用于从打印队列中移除打印作业。lprm
命令的基本语法如下:
lprm [options] [job ID(s)]
options
:可选参数,用于指定不同的选项来控制lprm
命令的行为。job ID(s)
:要取消的打印作业的 ID。如果省略job ID
,lprm
将删除当前用户在默认打印队列中的所有作业。
以下是一些常用的 lprm
命令选项:
-U username
:指定要取消其作业的用户名。-P destination
:指定要使用的打印机。
示例用法:
取消当前用户在默认打印队列中的所有作业:
lprm
取消指定作业 ID 的打印作业:
lprm 123
取消指定用户的所有打印作业:
lprm -U username
取消指定打印机上的打印作业:
lprm -P printer_name
lpr
lpr
是一个常用的命令,用于将文件发送到打印机打印。下面是 lpr
命令的基本语法和选项:
lpr
命令用法:
lpr [options] [filename]
filename
:要打印的文件名。
选项说明:
-# copies
:指定要打印的副本数。-P destination
:指定打印目的地(打印机名称)。-C title
:设置打印作业的标题。-J job
:设置打印作业的名称。-U user
:指定要用于身份验证的用户名。-o option[=value]
:设置打印选项。-q priority
:设置打印作业的优先级。-m
:在发送作业后发送邮件通知用户。-h server
:指定打印服务器。
示例用法:
打印单个文件:
lpr filename.txt
指定打印机名称和打印副本数:
lpr -P printer_name -# 2 filename.txt
设置打印作业标题和用户名:
lpr -C "My Document" -U username filename.txt
ftp
FTP是ARPANet的标准文件传输协议,该网络就是现今Internet的前身。
语法
ftp [-dignv][主机名称或IP地址]
参数:
- -d 详细显示指令执行过程,便于排错或分析程序执行的情形。
- -i 关闭互动模式,不询问任何问题。
- -g 关闭本地主机文件名称支持特殊字符的扩充特性。
- -n 不使用自动登陆。
- -v 显示指令执行过程。
实例
例如使用ftp命令匿名登录ftp.kernel.org服务器,该服务是Linux 内核的官方服务器,可以使用如下命令:
ftp ftp.kernel.org #发起链接请求
cd
Linux cd(英文全拼:change directory)命令用于改变当前工作目录的命令,切换到指定的路径。
若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
语法
cd [dirName]
- dirName:要切换的目标目录,可以是相对路径或绝对路径。
换到绝对路径:指定完整的目录路径来切换到目标目录。
cd /path/to/directory
切换到相对路径:指定相对于当前目录的路径来切换到目标目录。
cd relative/path/to/directory
实例
切换到 /usr/bin/ 目录:
cd /usr/bin
切换到上级目录:使用 .. 表示上级目录,可以通过连续多次使用 .. 来切换到更高级的目录。
cd .. cd ../../ // 切换到上上级目录
切换到用户主目录(home):使用 ~ 表示当前用户的主目录,可以使用 cd 命令直接切换到主目录。
cd ~
切换到上次访问的目录:使用 cd - 可以切换到上次访问的目录。
cd -
切换到环境变量指定的目录:可以使用环境变量来指定目标目录,并使用 cd 命令切换到该目录。
cd $VAR_NAME
df
Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
语法
df [选项]... [FILE]...
-a, --all
:显示所有文件系统,包括虚拟文件系统。-B, --block-size=SIZE
:指定块大小,以特定单位显示磁盘空间信息(如 MB、GB)。-h, --human-readable
:以人类可读的格式显示输出结果。-H, --si
:以 1000 作为基数,以 SI 单位显示输出结果(例如,MB、GB)。-i, --inodes
:显示 inode 使用情况而不是块使用情况。-k, --kilobytes
:以 KB 作为单位显示磁盘空间信息。-l, --local
:仅显示本地文件系统。-m, --portability
:使用 POSIX 输出格式。-n, --no-sync
:不执行文件系统同步操作。-P, --portability
:使用 POSIX 输出格式。-t, --type=TYPE
:仅显示指定类型的文件系统。-T, --print-type
:显示文件系统的类型。-x, --exclude-type=TYPE
:排除指定类型的文件系统。--sync
:在显示文件系统信息之前执行文件系统同步操作。--total
:在输出的最后一行显示总计。-v, --verbose
:详细显示文件系统信息。-l, --local
:仅显示本地文件系统。--help
:显示帮助信息并退出。--version
:显示版本信息并退出。
实例
显示文件系统的磁盘使用情况统计:
# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 29640780 4320704 23814388 16% / udev 1536756 4 1536752 1% /dev tmpfs 617620 888 616732 1% /run none 5120 0 5120 0% /run/lock none 1544044 156 1543888 1% /run/shm
说明:
Filesystem
:文件系统的名称或标识符。1K-blocks
:文件系统的总容量,以 1KB 块为单位。即文件系统总大小。Used
:文件系统已经使用的容量,以 1KB 块为单位。Available
:文件系统中仍然可用的容量,以 1KB 块为单位。Use%
:文件系统已使用容量占总容量的百分比。Mounted on
:文件系统被挂载到的目录或位置。
-h 选项会以人类可读的方式显示磁盘空间使用情况:
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda6 29G 4.2G 23G 16% / udev 1.5G 4.0K 1.5G 1% /dev tmpfs 604M 892K 603M 1% /run none 5.0M 0 5.0M 0% /run/lock none 1.5G 156K 1.5G 1% /run/shm
df 也可以显示磁盘使用的文件系统信息:
# df test Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 29640780 4320600 23814492 16% /
用一个 -i 选项的 df 命令的输出显示 inode 信息而非块使用量。
df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda6 1884160 261964 1622196 14% / udev 212748 560 212188 1% /dev tmpfs 216392 477 215915 1% /run none 216392 3 216389 1% /run/lock none 216392 8 216384 1% /run/shm
显示所有的信息:
# df --total Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda6 29640780 4320720 23814372 16% / udev 1536756 4 1536752 1% /dev tmpfs 617620 892 616728 1% /run none 5120 0 5120 0% /run/lock none 1544044 156 1543888 1% /run/shm total 33344320 4321772 27516860 14%
我们看到输出的末尾,包含一个额外的行,显示总的每一列。
我们可以看到输出显示的数字形式的 'G'(千兆字节),'M'(兆字节)和'K'(千字节)。
du
du
命令用于显示文件或目录所占用的磁盘空间大小。在 Linux 和类 Unix 系统中,du
命令通常用于检查文件和目录的磁盘使用情况,以帮助用户了解哪些文件或目录占用了大量的磁盘空间。
可以在终端中输入 du
命令来查看当前目录下每个文件或子目录的磁盘使用情况,通常会按照字节或者更大的单位(如 KB、MB)显示文件或目录的大小。如果想要查看更详细的信息,可以结合 -h
参数,以更友好的方式显示文件大小。
以下是 du
命令的简单示例用法:
du -h
这个命令将列出当前目录下所有文件和子目录的磁盘使用情况,并以更易读的格式显示文件大小。
-h
:以人类可读的格式显示文件大小,例如 KB、MB、GB 等。-s
:仅显示每个参数的总大小,而不显示其子目录中的具体大小。-c
:显示所有参数的总大小。-a
:显示所有文件和目录的大小,而不仅仅是目录。--max-depth=N
:限制显示的层级深度,只显示到指定深度的目录大小。-k
:以 KB 为单位显示文件大小。-m
:以 MB 为单位显示文件大小。--exclude=PATTERN
:排除符合指定模式的文件或目录。-L
:统计符号链接指向的对象的大小,而不是符号链接本身的大小。-h
:显示帮助信息,列出命令的选项和用法。
mkdir
mkdir
是在 Unix 和类 Unix 操作系统中用来创建目录的命令。在终端中使用 mkdir
命令时,可以创建一个新的目录,其语法通常如下:
mkdir [选项] 目录名
- 如果没有指定路径,则会在当前工作目录下创建一个新目录。
- 可以同时创建多个目录,只需在命令中列出它们的名称。
- 若目录名包含空格或特殊字符,可以使用引号将其括起来。
- 一些常用的选项:
-p
:递归创建目录,即如果上级目录不存在也会一并创建。-m
:指定所创建目录的权限模式(如mkdir -m 755 新目录
)。-v
:显示创建过程中的详细信息。
示例:
mkdir 新目录
mkdir -p 父目录/子目录
mkdir -m 755 目录
使用 mkdir
命令可以方便地在终端中创建新的目录,适用于文件组织和管理。
pwd
pwd
是一个常见的 Unix 和类 Unix 操作系统中的命令,用于显示当前工作目录的绝对路径。在终端中输入 pwd
命令后,系统会显示当前工作目录的完整路径。
实例
查看当前所在目录:
root@iZ2vch4tdjuyi8htrm9i7hZ:/home/ptm# pwd
/home/ptm
mount
Linux mount命令是经常会使用到的命令,它用于挂载Linux系统外的文件。
语法
mount [-hV] mount -a [-fFnrsvw] [-t vfstype] mount [-fnrsvw] [-o options [,...]] device | dir mount [-fnrsvw] [-t vfstype] [-o options] device dir
参数说明:
- -V:显示程序版本
- -h:显示辅助讯息
- -v:显示较讯息,通常和 -f 用来除错。
- -a:将 /etc/fstab 中定义的所有档案系统挂上。
- -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
- -f:通常用在除错的用途。它会使 mount 并不执行实际挂上的动作,而是模拟整个挂上的过程。通常会和 -v 一起使用。
- -n:一般而言,mount 在挂上后会在 /etc/mtab 中写入一笔资料。但在系统中没有可写入档案系统存在的情况下可以用这个选项取消这个动作。
- -s-r:等于 -o ro
- -w:等于 -o rw
- -L:将含有特定标签的硬盘分割挂上。
- -U:将档案分割序号为 的档案系统挂下。-L 和 -U 必须在/proc/partition 这种档案存在时才有意义。
- -t:指定档案系统的型态,通常不必指定。mount 会自动选择正确的型态。
- -o async:打开非同步模式,所有的档案读写动作都会用非同步模式执行。
- -o sync:在同步模式下执行。
- -o atime、-o noatime:当 atime 打开时,系统会在每次读取档案时更新档案的『上一次调用时间』。当我们使用 flash 档案系统时可能会选项把这个选项关闭以减少写入的次数。
- -o auto、-o noauto:打开/关闭自动挂上模式。
- -o defaults:使用预设的选项 rw, suid, dev, exec, auto, nouser, and async.
- -o dev、-o nodev-o exec、-o noexec允许执行档被执行。
- -o suid、-o nosuid:
- 允许执行档在 root 权限下执行。
- -o user、-o nouser:使用者可以执行 mount/umount 的动作。
- -o remount:将一个已经挂下的档案系统重新用不同的方式挂上。例如原先是唯读的系统,现在用可读写的模式重新挂上。
- -o ro:用唯读模式挂上。
- -o rw:用可读写模式挂上。
- -o loop=:使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
实例
将 /dev/hda1 挂在 /mnt 之下。
#mount /dev/hda1 /mnt
将 /dev/hda1 用唯读模式挂在 /mnt 之下。
#mount -o ro /dev/hda1 /mnt
将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom之下。用这种方法可以将一般网络上可以找到的 Linux 光 碟 ISO 档在不烧录成光碟的情况下检视其内容。
#mount -o loop /tmp/image.iso /mnt/cdrom
rmdir
Linux rmdir(英文全拼:remove directory)命令删除空的目录。
语法
rmdir [-p] dirName
参数:
实例
将工作目录下,名为 AAA 的子目录删除 :
rmdir AAA
在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
rmdir -p BBB/Test
- -p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
tree
tree
是一个命令行工具,用于以树状结构显示目录和文件的层次结构。通过 tree
命令,可以查看指定目录下的所有文件和子目录,以及它们之间的关系。
基本的 tree
命令使用方式如下:
tree [选项] [目录]
其中:
[选项]
:可选的参数,用于控制tree
命令的输出。[目录]
:要显示目录结构的目标目录。如果未提供目录参数,则默认显示当前目录的结构。
一些常用的 tree
命令选项包括:
-L <级别>
:指定要显示的目录层级深度。-a
:显示所有文件和目录,包括隐藏文件。-f
:显示完整路径。-d
:只显示目录,不显示文件。-h
:以人类可读的格式显示文件大小。-p
:以 ASCII 字符显示文件名。
umount
Linux umount(英文全拼:unmount)命令用于卸除文件系统。
umount可卸除目前挂在Linux目录中的文件系统。
语法
umount [-ahnrvV][-t <文件系统类型>][文件系统]
参数:
- -a 卸除/etc/mtab中记录的所有文件系统。
- -h 显示帮助。
- -n 卸除时不要将信息存入/etc/mtab文件中。
- -r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
- -t<文件系统类型> 仅卸除选项中所指定的文件系统。
- -v 执行时显示详细的信息。
- -V 显示版本信息。
- [文件系统] 除了直接指定文件系统外,也可以用设备名称或挂入点来表示文件系统。
实例
下面两条命令分别通过设备名和挂载点卸载文件系统,同时输出详细信息:
# umount -v /dev/sda1 通过设备名卸载 /dev/sda1 umounted # umount -v /mnt/mymount/ 通过挂载点卸载 /tmp/diskboot.img umounted
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录:
# umount -v /mnt/mymount/ umount: /mnt/mymount: device is busy umount: /mnt/mymount: device is busy
ls
ls
是一个用于列出目录内容的常见命令,通常在 Unix 和 Linux 系统中使用。在终端中输入 ls
命令时,它会显示当前工作目录下的文件和子目录列表。
基本的 ls
命令使用方法如下:
ls [选项] [目录]
[选项]
:可选参数,用于控制ls
命令的输出格式和内容。[目录]
:要列出内容的目标目录。如果未提供目录参数,则默认为当前目录。
一些常用的 ls
命令选项包括:
-l
:以长格式显示列表,包括文件权限、所有者、组、大小等详细信息。-a
:显示所有文件,包括以.
开头的隐藏文件。-h
:以人类可读的格式显示文件大小。-t
:按修改时间排序文件和目录。-r
:逆序显示。
poweroff 命令
poweroff 命令命令用于关闭计算器并切断电源。
使用权限:系统管理者。
语法
poweroff [-n] [-w] [-d] [-f] [-i] [-h]
参数说明:
- -n : 在关机前不做将记忆体资料写回硬盘的动作
- -w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
- -d : 不把记录写到 /var/log/wtmp 文件里
- -i : 在关机之前先把所有网络相关的装置先停止
- -p : 关闭操作系统之前将系统中所有的硬件设置为备用模式。
kill 命令
Linux kill 命令用于终止正在运行的进程。
kill 命令可以发送不同的信号给目标进程,来实现不同的操作,如果不指定信号,默认会发送 TERM 信号(15),即终止。若仍无法终止该程序,可使用 SIGKILL(9) 信息尝试强制删除程序。
语法
kill [options] <PID>
<PID> 是要终止进程的进程 ID。
参数说明:
-l
:列出所有可用的信号。-<signal>
:发送特定的信号给目标进程,如-9
表示发送 KILL 信号,即强制终止进程。
基本用法
终止进程:默认情况下,kill命令发送SIGTERM(信号15),这可以请求进程终止。如果进程没有捕获这个信号,它将被终止。
kill PID
其中 PID 是进程的 ID。
发送指定信号:通过 -s 选项可以发送指定的信号。
kill -s SIGNAL PID
例如,发送 SIGKILL(信号9)将立即结束进程,不能被忽略或捕获。
kill -9 PID
杀死进程组:使用 -9 选项可以杀死整个进程组。
kill -9 -PID
使用 kill -l 命令列出所有可用信号。
最常用的信号是:
SIGKILL
(信号9):立即结束进程,不能被捕获或忽略。SIGTERM
(信号15):正常结束进程,可以被捕获或忽略。SIGSTOP
(信号19):暂停进程,不能被捕获、忽略或结束。SIGCONT
(信号18):继续执行被暂停的进程。SIGINT
(信号2):通常是Ctrl+C产生的信号,可以被进程捕获或忽略。
实例
终止 PID 为 1234 的进程:
kill 1234
强制终止 PID 为 1234 的进程:
kill -9 1234
向 PID 为 1234 的进程发送 SIGSTOP:
kill -s SIGSTOP 1234
dd 命令
dd
命令是一个常用的命令行工具,用于数据转换和复制。它可以用来创建镜像、备份数据、复制文件等操作。dd
命令的语法如下:
dd [options]
一些常见的 dd
命令选项包括:
if=input_file
:指定输入文件(源文件)。of=output_file
:指定输出文件(目标文件)。bs=bytes
:指定每次读写的字节数。count=blocks
:指定要复制的块数。skip=blocks
:在输入文件开始处跳过指定块数。seek=blocks
:在输出文件开始处跳过指定块数。status=progress
:显示复制进度。
以下是一些 dd
命令的示例用法:
-
从一个设备复制到另一个设备:
dd if=/dev/sda of=/dev/sdb bs=4k
这将从设备
/dev/sda
复制到设备/dev/sdb
,每次读写 4KB。 -
创建文件的镜像:
dd if=input_file of=output_file
这将创建
input_file
的镜像并保存为output_file
。 -
以指定块大小和块数复制文件:
dd if=input_file of=output_file bs=1M count=10
这将每次读写 1MB 数据,并且只复制 10 个块。
dd
命令非常强大,但同时也很危险,因为它允许直接访问硬件设备并执行低级别的数据操作。因此,在使用 dd
命令时,请务必小心谨慎,确保正确指定输入和输出文件,以免意外删除或覆盖重要数据。
ip命令
ip
命令是一个用于配置网络接口的强大工具,可以在 Linux 系统上使用。它取代了传统的 ifconfig
命令,提供更多功能和灵活性。ip
命令可以用来查看和配置网络接口、路由表、策略路由、ARP 缓存等。
以下是一些常见的用法示例:
-
显示网络接口信息:
ip addr show
这将显示当前系统上所有网络接口的详细信息,包括 IP 地址、MAC 地址等。
-
显示路由表:
ip route show
这将显示系统的路由表,包括目标地址、网关和接口信息。
-
启用/禁用网络接口:
ip link set dev <interface> up
ip link set dev <interface> down
通过将
<interface>
替换为网络接口名称,可以启用或禁用特定的网络接口。 -
配置 IP 地址:
ip addr add <ip_address>/<subnet_mask> dev <interface>
通过将
<ip_address>
替换为所需的 IP 地址,<subnet_mask>
替换为子网掩码,<interface>
替换为网络接口名称,可以配置特定网络接口的 IP 地址。 -
添加静态路由:
ip route add <network>/<subnet_mask> via <gateway>
这将向系统的路由表添加一个静态路由。
-
清除 ARP 缓存:
ip neigh flush all
这将清除系统的 ARP 缓存。
Linux ip 命令与 ifconfig 命令类似,但比 ifconfig 命令更加强大,主要功能是用于显示或设置网络设备。
ip 命令是 Linux 加强版的的网络配置工具,用于代替 ifconfig 命令。
语法
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT 为常用对象,值可以是以下几种:
OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }
常用对象的取值含义如下:
- link:网络设备
- address:设备上的协议(IP或IPv6)地址
- addrlabel:协议地址选择的标签配置
- route:路由表条目
- rule:路由策略数据库中的规则
OPTIONS 为常用选项,值可以是以下几种:
OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }
常用选项的取值含义如下:
- -V:显示命令的版本信息;
- -s:输出更详细的信息;
- -f:强制使用指定的协议族;
- -4:指定使用的网络层协议是IPv4协议;
- -6:指定使用的网络层协议是IPv6协议;
- -0:输出信息每条记录输出一行,即使内容较多也不换行显示;
- -r:显示主机时,不使用IP地址,而使用主机的域名。
-
help 为该命令的帮助信息。
实例
ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 promisc on # 开启网卡的混合模式 ip link set eth0 promisc offi # 关闭网卡的混个模式 ip link set eth0 txqueuelen 1200 # 设置网卡队列长度 ip link set eth0 mtu 1400 # 设置网卡最大传输单元 ip addr show # 显示网卡IP信息 ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1 ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址 ip route show # 显示系统路由 ip route add default via 192.168.1.254 # 设置系统默认路由 ip route list # 查看路由信息 ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口 ip route add default via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254 ip route del 192.168.4.0/24 # 删除192.168.4.0网段的网关 ip route del default # 删除默认路由 ip route delete 192.168.1.0/24 dev eth0 # 删除路由
用 ip 命令显示网络设备的运行状态:
[root@localhost ~]# ip link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff
显示更加详细的设备信息:
[root@localhost ~]# ip -s link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 RX: bytes packets errors dropped overrun mcast 5082831 56145 0 0 0 0 TX: bytes packets errors dropped carrier collsns 5082831 56145 0 0 0 0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 3641655380 62027099 0 0 0 0 TX: bytes packets errors dropped carrier collsns 6155236 89160 0 0 0 0 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:00:1e:52 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 2562136822 488237847 0 0 0 0 TX: bytes packets errors dropped carrier collsns 3486617396 9691081 0 0 0 0
显示核心路由表:
[root@localhost ~]# ip route list 112.124.12.0/22 dev eth1 proto kernel scope link src 112.124.15.130 10.160.0.0/20 dev eth0 proto kernel scope link src 10.160.7.81 192.168.0.0/16 via 10.160.15.247 dev eth0 172.16.0.0/12 via 10.160.15.247 dev eth0 10.0.0.0/8 via 10.160.15.247 dev eth0 default via 112.124.15.247 dev eth1
显示邻居表:
[root@localhost ~]# ip neigh list 112.124.15.247 dev eth1 lladdr 00:00:0c:9f:f3:88 REACHABLE 10.160.15.247 dev eth0 lladdr 00:00:0c:9f:f2:c0 STALE
获取主机所有网络接口:
ip link | grep -E '^[0-9]' | awk -F: '{print $2}'