linux基础命令
内部、外部命令
命令
在 Linux 中,命令可以分为内部命令(built-in commands)和外部命令(external commands)两种类型。
1.内部命令:内部命令是由 shell(如 Bash)本身实现的命令,它们直接在 shell 进程中运行,而不需要调用外部程序。一些常见的内部命令包括:
cd
:改变当前工作目录echo
:在标准输出中打印文本或变量pwd
:显示当前工作目录的绝对路径alias
:创建命令别名export
:设置或显示环境变量
2.外部命令:外部命令是独立于 shell 的可执行程序,它们位于系统的 PATH 变量指定的目录中。当在 shell 中输入外部命令时,shell 会在 PATH 中查找该命令并执行之。一些常见的外部命令包括:
ls
:列出目录内容cp
:复制文件或目录grep
:搜索文本模式find
:在文件系统中查找文件cat
:连接文件并打印到标准输出
查询
通过 type
命令可以查看一个命令是内部命令还是外部命令,例如:
[root@hx ~]# type -a cd
cd 是 shell 内嵌
cd 是 /usr/bin/cd
[root@hx ~]# type -a ls
ls 是 `ls --color=auto' 的别名
ls 是 /usr/bin/ls
help命令查询内部命令:
whereis查找命令具体位置:
[root@hx ~]# whereis cd cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
Hash
具体来说,当你在 shell 中执行一个外部命令时,shell 会通过 PATH 环境变量定义的目录列表来寻找该命令对应的可执行文件。为了加快命令搜索速度,shell 会将已经找到的命令路径缓存起来,以便下次执行同样的命令时可以更快地找到它。
以下是一些常见的 hash 命令及其作用:
-
hash:简单执行
hash
命令,它会列出当前 shell 缓存的所有外部命令及其路径。 -
hash -r:使用
hash -r
命令可以清除 shell 对外部命令的路径缓存,使得 shell 下次执行命令时重新搜索。 -
hash [command]:如果指定了命令名称,比如
hash ls
,那么 shell 会立即查找并缓存该命令的路径,而不必等到实际执行该命令时再去搜索。
[root@hx ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
获得命令帮助
-
help:help是一个bash内置命令,用于获取bash内置命令的简要帮助信息。当在bash shell中输入
help
时,会列出bash内置命令的简要说明。 -
--help:许多Linux命令都支持--help选项,用于获取特定命令的简要帮助信息。例如,可以通过在命令后加上--help来获取该命令的基本用法和选项说明。
-
man:man命令用于查看Linux系统中的手册页(manual page)。手册页包含了关于系统命令、函数、配置文件等的详细文档。通过使用
man
命令,可以查看特定命令或函数的详细用法、选项、示例以及其他信息。 -
info:info命令也是用于查看命令和程序的文档,类似于man命令,但提供更多的信息和交互式导航。一些软件包的文档可能更倾向于使用info格式进行编写,因此info命令对于查找特定软件包的详细文档非常有用。
[root@hx ~]# info ls [root@hx ~]# man cd [root@hx ~]# help cd [root@hx ~]# ls --help
目录命令
在Linux系统中,有一些常用的命令用于管理目录(文件夹),以下是其中一些常见的目录相关命令,具体选项查询https://www.runoob.com/:
ls:列出目录内容,显示指定目录中的文件和子目录。
ls /path/to/directory
cd:切换当前工作目录。
cd /path/to/directory
pwd:显示当前工作目录的路径。
pwd
mkdir:创建新目录。
mkdir new_directory
rmdir:删除空目录。
rmdir empty_directory
rm:删除文件或目录。
rm -r directory_to_delete(删除非空目录时需加上 -r 参数)
cp:复制文件或目录。
cp file_to_copy new_location 或 cp -r directory_to_copy new_location(复制目录时需加上 -r 参数)
mv:移动文件或目录,也可用于重命名文件或目录。
mv file_to_move new_location 或 mv old_name new_name