开始之前
Linux命令行,也称为终端,是Linux最强大的特性之一。通过命令行,用户可以执行几乎所有的任务,比如文件操作、程序安装、系统监控和网络配置等。了解这些基本命令,将帮助你更好地掌握Linux系统。
文件和目录操作
-
ls
- 基本用法:
ls
列出当前目录的内容。 - 查看详细信息:
ls -l
显示当前目录内容的详细列表,包括文件权限、所有者、大小等信息。 - 查看隐藏文件:
ls -a
列出包括隐藏文件(文件名以.
开头)在内的所有文件。
- 基本用法:
-
cd
- 改变到用户主目录:
cd
或cd ~
将当前目录切换到用户的主目录。 - 改变到其他目录:
cd /var/www
将当前目录切换到/var/www
。
- 改变到用户主目录:
-
pwd
- 显示当前工作目录:
pwd
输出当前用户所在的完整目录路径。
- 显示当前工作目录:
-
mkdir
- 创建目录:
mkdir photos
在当前目录下创建一个新的目录名为photos
。
- 创建目录:
-
rmdir
- 删除空目录:
rmdir empty_folder
删除名为empty_folder
的空目录。如果目录非空,此命令将失败。
- 删除空目录:
-
rm
- 删除文件:
rm example.txt
删除名为example.txt
的文件。 - 递归删除目录:
rm -r old_folder
删除old_folder
目录及其包含的所有文件和子目录。
- 删除文件:
-
cp
- 复制文件:
cp source.txt destination.txt
将source.txt
复制到destination.txt
(在同一目录或指定目录)。 - 复制目录:
cp -r source_folder new_folder
将source_folder
及其全部内容复制到新的new_folder
目录。
- 复制文件:
-
mv
- 重命名文件:
mv old_name.txt new_name.txt
将文件old_name.txt
重命名为new_name.txt
。 - 移动文件:
mv file.txt ../
将file.txt
移动到上级目录。
- 重命名文件:
系统信息和管理
-
top
- 使用示例:直接输入
top
并按回车,就会显示一个实时更新的系统进程列表,包括CPU和内存使用情况。
- 使用示例:直接输入
-
df
- 查看磁盘使用情况:
df -h
以易读的格式(如GB、MB)显示所有挂载的文件系统的磁盘空间使用情况。
- 查看磁盘使用情况:
-
free
- 查看内存使用情况:
free -m
以MB为单位显示内存(包括物理内存、交换空间等)的使用情况。
- 查看内存使用情况:
-
uptime
- 显示系统运行时间:
uptime
显示当前系统已经运行了多长时间,包括有多少用户登录,以及过去1、5和15分钟的平均负载。
- 显示系统运行时间:
-
whoami
- 显示当前用户:
whoami
显示当前登录的用户名。
- 显示当前用户:
-
chmod
- 改变文件权限:
chmod 755 script.sh
设置script.sh
文件的权限,使得文件所有者可以读、写、执行文件,而组用户和其他用户只能读取和执行文件。 - 示例解释:在
chmod 755
中,7对应所有者的权限(读4+写2+执行1),5对应组权限和其他用户的权限(读4+执行1)。
- 改变文件权限:
-
chown
- 改变文件的所有者:
chown username file.txt
将file.txt
的所有权更改为username
。 - 改变文件的所有者和组:
chown username:groupname file.txt
同时更改file.txt
的所有者为username
和所属组为groupname
。
- 改变文件的所有者:
文件查找和处理
-
find
- 查找名为
myfile.txt
的文件:find / -name myfile.txt
从根目录/
开始搜索整个系统中名为myfile.txt
的文件。 - 查找过去7天内被修改过的文件:
find /home/user -mtime -7
在/home/user
目录及子目录下搜索最近7天内修改过的所有文件。
- 查找名为
-
grep
- 在文件中搜索字符串:"
grep 'hello world' myfile.txt
" 在myfile.txt
文件中搜索包含字符串"hello world"
的行。 - 递归搜索:"
grep -r 'search term' /path/to/directory
" 在指定目录及其所有子目录下搜索每个文件中的"search term"
字符串。
- 在文件中搜索字符串:"
-
sed
- 替换文本:"
sed 's/old/new/g' file.txt
" 将file.txt
文件中所有的old
字符串替换为new
。 - 删除行:"
sed '/pattern to match/d' file.txt
" 从file.txt
中删除所有包含"pattern to match"
的行。
- 替换文本:"
-
awk
- 打印文件的第一列:"
awk '{print $1}' file.txt
" 从file.txt
中打印每一行的第一列。 - 汇总文件的第二列中的数值:"
awk '{sum += $2} END {print sum}' file.txt
" 计算并打印file.txt
文件中第二列数值的总和。
- 打印文件的第一列:"
-
find与-delete结合使用
- 删除当前目录及子目录下所有名为
temp.txt
的文件:find . -name 'temp.txt' -delete
。这个命令从当前目录开始递归搜索所有名为temp.txt
的文件,并删除它们。 - 注意:使用
-delete
选项时要非常小心,因为一旦执行,删除的文件无法恢复。
- 删除当前目录及子目录下所有名为
-
cat
- 显示文件内容:
cat filename.txt
显示名为filename.txt
的文件内容。 - 将多个文件内容合并输出:
cat file1.txt file2.txt > combined.txt
将file1.txt
和file2.txt
的内容合并,并写入combined.txt
文件。
- 显示文件内容:
网络操作
-
ping
- 检查与远程服务器的连接:
ping google.com
这将向google.com
发送ICMP回显请求,用于检查网络连接是否成功。
- 检查与远程服务器的连接:
-
ifconfig
- 显示所有网络接口的配置信息:
ifconfig
不带任何参数运行ifconfig
将列出所有可用的网络接口及其配置。 - 配置特定的网络接口:
ifconfig eth0 192.168.1.5 netmask 255.255.255.0 up
将网络接口eth0
配置为IP地址192.168.1.5
,子网掩码255.255.255.0
,并激活它。
- 显示所有网络接口的配置信息:
-
ssh
- 安全地远程登录到另一台计算机:
ssh user@192.168.1.5
使用用户名user
登录到IP地址为192.168.1.5
的远程计算机。
- 安全地远程登录到另一台计算机:
-
scp
- 从本地复制文件到远程服务器:
scp local_file.txt user@192.168.1.5:/remote/directory/
将本地的local_file.txt
复制到远程服务器上的指定目录。 - 从远程服务器复制文件到本地:
scp user@192.168.1.5:/remote/file.txt /local/directory/
将远程服务器上的file.txt
复制到本地的指定目录。
- 从本地复制文件到远程服务器:
-
wget
- 从网络上下载文件:
wget http://example.com/file.zip
这将下载http://example.com/file.zip
指向的文件。
- 从网络上下载文件:
-
curl
- 从网络服务器获取数据:
curl http://example.com
显示http://example.com
的HTML内容。 - 使用POST方法发送数据:
curl -d "param1=value1¶m2=value2" -X POST http://example.com
向http://example.com
发送POST请求,并传递数据。
- 从网络服务器获取数据:
包管理
-
apt-get (适用于Debian系的系统,如Ubuntu)
- 安装软件包:
sudo apt-get install package_name
例如,sudo apt-get install nginx
会安装Nginx。 - 更新软件包列表:
sudo apt-get update
更新本地包列表,以了解可用包的最新版本。 - 升级所有已安装的软件包:
sudo apt-get upgrade
将所有已安装的包升级到最新版本。 - 删除软件包:
sudo apt-get remove package_name
删除指定的软件包(不包括配置文件)。 - 清除不再需要的软件包:
sudo apt-get autoremove
自动删除系统不再需要的依赖包。
- 安装软件包:
-
yum (适用于Red Hat系的系统,如CentOS)
- 安装软件包:
sudo yum install package_name
例如,sudo yum install httpd
会安装Apache HTTP服务器。 - 更新软件包:
sudo yum update package_name
更新指定的软件包。若不指定包名,则更新所有已安装的包。 - 查找软件包:
sudo yum search keyword
根据关键词搜索包。 - 删除软件包:
sudo yum remove package_name
删除指定的软件包。 - 清除缓存:
sudo yum clean all
清除yum缓存,删除下载的包和头文件。
- 安装软件包:
-
snap (跨Linux发行版的包管理方案)
- 安装软件包:
sudo snap install package_name
例如,sudo snap install vscode
会安装Visual Studio Code。 - 列出已安装的snap包:
snap list
显示所有已安装的snap包。 - 更新所有snap包:
sudo snap refresh
更新所有已安装的snap包。 - 回滚软件包到先前版本:
sudo snap revert package_name
将指定的snap包回滚到先前的版本。 - 删除软件包:
sudo snap remove package_name
删除指定的snap包。
- 安装软件包:
-
flatpak (同样适用于跨Linux发行版)
- 安装软件包:
flatpak install flathub app_id
例如,flatpak install flathub com.spotify.Client
会从Flathub安装Spotify。 - 运行一个flatpak应用:
flatpak run app_id
例如,flatpak run com.spotify.Client
会运行Spotify。 - 更新所有flatpak包:
flatpak update
更新所有已安装的flatpak包。 - 列出已安装的flatpak包:
flatpak list
显示所有已安装的flatpak包。 - 删除软件包:
flatpak uninstall app_id
删除指定的flatpak包。
- 安装软件包:
总结
Linux命令行是一个强大的工具,了解和掌握这些基本命令将极大增强你操作Linux系统的能力。以上列出的命令仅仅是冰山一角,但已经足够覆盖大多数日常需求。随着你对Linux的深入了解,你会发现更多有用的命令和技巧。希望这篇博客能为你提供一个良好的起点。