Linux 速成教程 - 基础命令
一、文件管理命令
1. 目录操作
ls 命令
-
功能:列出目录内容,支持使用通配符*进行文件名模式匹配,可列出符合特定模式的文件或目录。
-
常见参数:
-
-l:以长格式显示文件和目录的详细信息,包括文件权限、所有者、大小、修改时间等。
-
-a:显示所有文件和目录,包括隐藏文件(以点开头的文件)。
-
-h:与-l一起使用,以人类可读的方式显示文件大小,例如1K、2M等。
-
示例:
ls -l # 以长格式显示当前目录内容
ls -a # 显示当前目录下所有文件和目录
ls -lh # 以长格式和人类可读方式显示当前目录内容
ls *.txt # 列出当前目录下所有txt文件
ls -l backup* # 以长格式列出当前目录下所有以backup开头的文件和目录
cd 命令
- 功能:切换目录。
- 常见用法:
- cd 目录路径:切换到指定目录。例如cd /home,切换到/home目录。
- cd…:返回上一级目录。
- cd ~:回到当前用户的主目录。
示例:
cd /var/log # 切换到 /var/log 目录
cd.. # 返回上一级目录
cd ~ # 回到用户主目录
mkdir 命令
- 功能:创建目录。
- 常见参数:
- -p:递归创建目录,即如果父目录不存在,会自动创建。
示例:
mkdir new_dir # 在当前目录下创建名为 new_dir 的目录
mkdir -p parent/child # 创建 parent 目录及其子目录 child
2.文件操作
cp 命令
- 功能:复制文件或目录,支持通配符*来批量复制符合特定文件名模式的文件或目录。
- 常见参数:
-
-r:递归复制目录及其子目录和文件,用于复制目录。
-
-i:在覆盖目标文件前提示用户确认。
-
示例:
cp file1.txt file2.txt # 复制 file1.txt 为 file2.txt
cp -r dir1 dir2 # 复制 dir1 目录及其内容到 dir2
cp *.log backup/ # 将当前目录下所有log文件复制到backup目录
cp -r project_* new_project/ # 将当前目录下所有以project_开头的目录及其内容复制到new_project目录
mv 命令
- 功能:移动文件或目录,也可用于重命名,支持通配符*来批量移动或重命名符合特定文件名模式的文件或目录。
示例:
mv file1.txt /new_dir/ # 将 file1.txt 移动到 /new_dir 目录
mv old_name new_name # 将文件或目录 old_name 重命名为 new_name
mv *.tmp temp_files/ # 将当前目录下所有tmp文件移动到temp_files目录
mv report_* /archive/ # 将当前目录下所有以report_开头的文件和目录移动到/archive目录
rm 命令
- 功能:删除文件或目录,支持通配符*来批量删除符合特定文件名模式的文件或目录,但使用时需谨慎,尤其是配合-f参数强制删除时,以免误删重要数据。
- 常见参数:
- -r:递归删除目录及其子目录和文件,用于删除目录。
- -f:强制删除,不提示确认,谨慎使用,以免误删重要数据。
- -i:在删除前提示用户确认。
示例:
rm file.txt # 删除文件file.txt,删除前会提示确认
rm -r dir # 递归删除目录dir及其内容,删除前会提示确认
rm -f force_delete_file.txt # 强制删除文件force_delete_file.txt,不提示确认
rm -ri important_dir # 递归删除目录important_dir及其内容,每次删除前都提示确认
rm -i *.swp # 提示确认是否删除当前目录下所有swp临时文件
rm -rf temp_* # 强制递归删除当前目录下所有以temp_开头的文件和目录,谨慎使用
which 命令
- 功能:查找并显示给定命令的可执行文件路径,用于确定某个命令在系统中的位置。
示例:
which ls # 查找ls命令的可执行文件路径
which java # 查找java命令的可执行文件路径
find 命令
- 功能:在指定目录及其子目录中查找文件或目录,支持根据文件名、文件大小、修改时间等多种条件进行查找,在-name参数按照文件名查找时,支持通配符*来进行灵活的文件名匹配。
- 常见参数:
- -name:按照文件名查找。
- -size:按照文件大小查找。
- -mtime:按照文件修改时间查找。
示例:
find /home -name "*.txt" # 在/home目录及其子目录中查找所有txt文件
find /tmp -name "temp_file*" # 在/tmp目录及其子目录中查找以temp_file开头的文件
find / -size +10M # 在根目录及其子目录中查找大于10MB的文件
find / -size -500k # 在根目录及其子目录中查找小于500KB的文件
find /var/log -mtime -3 # 在/var/log目录及其子目录中查找最近3天内修改过的文件
find /var/log -mtime +7 # 在/var/log目录及其子目录中查找7天前修改过的文件
find /data -name "*_backup_*.zip" # 在/data目录及其子目录中查找文件名包含_backup_且后缀为.zip的文件
二、权限管理命令
1. chmod 命令
- 功能:改变文件或目录的权限。
- 权限表示方法:
- 字母表示法:r(读)、w(写)、x(执行)。
- 数字表示法:r对应 4,w对应 2,x对应 1 。
- 常见参数:
- u:用户(所有者)。
- g:组。
- o:其他用户。
- a:所有用户。
- 数字权限表示法详细解析:每个权限位的数字是由对应权限的数值相加得到。
- 例如,当设置权限为755时:
所有者权限:数字7是由4(读)+2(写)+1(执行)得到,这意味着文件所有者对该文件或目录拥有读、写和执行的全部权限。所有者可以读取文件内容、修改文件、运行文件(如果是可执行文件),对于目录则可以列出目录内容、在目录中创建和删除文件,以及进入该目录。
所属组权限:数字5是由4(读)+1(执行)得到,即所属组的用户对文件或目录拥有读和执行权限。他们可以读取文件内容,运行文件(如果是可执行文件),对于目录可以列出目录内容和进入该目录,但不能在目录中创建或删除文件。
其他用户权限:同样数字5,也是4(读)+1(执行),表示其他用户和所属组用户拥有相同的读和执行权限。
- 例如,当设置权限为755时:
示例:
chmod u+x file.txt # 给文件所有者添加执行权限
chmod 755 dir # 将目录权限设置为所有者有读、写、执行权限,组和其他用户有读、执行权限
chmod g+w file.txt # 给文件所属组添加写权限
chmod o-r file.txt # 移除其他用户对文件的读权限
chmod a=rwx file.txt # 设置所有用户对文件有读、写、执行权限
chmod 644 script.sh # 设置文件所有者有读、写权限,组和其他用户有读权限,常用于普通文件
chmod 700 private_dir # 设置目录所有者有读、写、执行权限,组和其他用户无任何权限,常用于私有目录
2. chown 命令
- 功能:改变文件或目录的所有者和所属组。
- 常见用法:
- chown 用户名:组名 文件或目录:同时改变所有者和所属组。
- chown 用户名 文件或目录:只改变所有者。
示例:
chown user1:group1 file.txt # 将 file.txt 的所有者改为 user1,所属组改为 group1
chown user2 dir # 将 dir 的所有者改为 user2
三、文本处理命令
1. grep 命令
- 功能:在文本中搜索指定的字符串,支持通配符* ,但需注意通配符*不是直接用于匹配搜索内容,而是在指定搜索文件路径时,可结合路径使用通配符匹配多个文件。
- 常见参数:
- -i:忽略大小写。
- -r:递归搜索目录下的所有文件。
- -n:显示匹配行的行号。
示例:
grep "hello" file.txt # 在 file.txt 中搜索包含 "hello" 的行
grep -i "world" file.txt # 忽略大小写在 file.txt 中搜索 "world"
grep -r "error" /var/log/ # 递归搜索 /var/log/ 目录下所有文件中包含 "error" 的行
grep -n "important" document.txt # 在document.txt中搜索包含important的行,并显示行号
grep "config" /etc/*.conf # 在/etc目录下所有conf文件中搜索包含config的行
grep -r "password" /home/user_* # 递归在/home目录下所有以user_开头的用户目录中搜索包含password的行"error" 的行
2. sed 命令
- 功能:流编辑器,可对文本进行替换、删除、插入等操作。
- 常见用法:
- sed’s/原字符串/新字符串/g’ 文件:全局替换文件中的字符串。
示例:
sed's/old/new/g' file.txt # 将 file.txt 中的所有 "old" 替换为 "new"
3. awk 命令
- 功能:文本处理工具,擅长按字段处理文本。
- 常见用法:
- awk ‘{print $1}’ file.txt:打印文件中每一行的第一个字段。
示例:
echo "apple 10 2.5" | awk '{print $2}' # 输出 10
4. wc 命令
- 功能:统计文件的行数、单词数和字节数。
- 常见参数:
- -l:统计行数。
- -w:统计单词数。
- -c:统计字节数。
示例:
wc -l file.txt # 统计file.txt的行数
wc -w file.txt # 统计file.txt的单词数
wc -c file.txt # 统计file.txt的字节数
5. echo 命令
- 功能:在终端输出指定的文本或变量值。
示例:
echo "Hello, Linux!" # 输出字符串
name="John"
echo $name # 输出变量值
echo -n "No new line" # -n参数表示不换行输出
6. tail 命令
- 功能:查看文件的末尾几行内容,默认显示最后 10 行。
- 常见参数:
- -n:指定显示的行数。
示例:
tail file.txt # 查看file.txt的最后10行
tail -n 20 file.txt # 查看file.txt的最后20行
tail -f /var/log/syslog # 实时查看/var/log/syslog文件的新增内容,常用于监控日志
四、特殊符号
1. 管道符(|)
- 功能:将前一个命令的输出作为后一个命令的输入,实现多个命令的组合使用,提高处理效率。
示例:
ls -l | grep "txt" # 列出当前目录详细信息,并筛选出包含txt的行
grep "error" /var/log/messages | wc -l # 在/var/log/messages文件中搜索error,并统计出现的行数
ps aux | grep "java" # 查看当前系统中运行的java相关进程
2. 重定向符
- 功能:分为输出重定向(> 和 >>)和输入重定向(<)。输出重定向用于将命令的输出结果保存到文件中,> 会覆盖原有文件内容,>>则是追加到文件末尾;输入重定向用于将文件内容作为命令的输入。
示例:
ls -l > file_list.txt # 将ls -l的结果覆盖写入file_list.txt
echo "This is a test" >> test.txt # 将字符串追加到test.txt文件末尾
wc -l < file.txt # 将file.txt的内容作为wc -l的输入,统计行数
sort < numbers.txt # 对numbers.txt中的内容进行排序