大一升大二暑期学校 linux系统基础:常用指令 20240722
一、linux系统中常用的指令
Linux系统中有许多常用命令,它们用于文件管理、系统监控、网络操作等。以下是一些最常用的Linux命令及其使用示例:
1. ls - 列出目录内容
- 列出当前目录的文件和子目录:
ls - 以长格式列出详细信息:
ls -l - 递归列出所有子目录的内容:
ls -R
2. cd - 改变目录
- 切换到
/home/user目录:cd /home/user - 返回上一级目录:
cd ..
3. pwd - 显示当前工作目录
- 显示当前完整路径:
pwd
4. cp - 复制文件或目录
- 复制文件
file1.txt到file2.txt:cp file1.txt file2.txt - 递归复制整个目录:
cp -r /path/to/source /path/to/destination
5. mv - 移动或重命名文件
- 重命名文件
oldname.txt为newname.txt:mv oldname.txt newname.txt - 移动文件到另一个目录:
mv file.txt /path/to/directory
6. rm - 删除文件或目录
- 删除文件
file.txt:rm file.txt - 递归删除整个目录:
rm -r /path/to/directory
7. mkdir - 创建目录
- 创建新目录
newdir:mkdir newdir - 创建多个目录:
mkdir -p /path/to/newdir/subdir
8. rmdir - 删除空目录
- 删除目录
emptydir:rmdir emptydir
9. touch - 创建空文件或更新文件时间戳
- 创建新文件
newfile.txt:touch newfile.txt
10. cat - 显示文件内容
- 显示文件
file.txt的内容:cat file.txt
11. echo - 显示文本
- 显示文本“Hello, world!”:
echo "Hello, world!"
12. grep - 搜索文本
- 在文件
file.txt中搜索单词“error”:grep "error" file.txt
13. find - 查找文件
- 查找
/home/user目录下所有.txt文件:find /home/user -type f -name "*.txt"
14. chmod - 更改文件或目录权限
- 给文件
file.txt添加执行权限:chmod +x file.txt
15. chown - 更改文件或目录所有者
- 将文件
file.txt的所有者更改为username:chown username file.txt
16. du - 显示磁盘使用情况
- 显示当前目录的磁盘使用情况:
du -sh
17. df - 显示文件系统磁盘空间使用情况
- 显示所有文件系统的磁盘空间使用情况:
df -h
18. top - 显示系统进程和资源使用情况
- 显示系统资源使用情况:
top
19. ps - 显示当前进程状态
- 显示当前用户的所有进程:
ps -u username
20. kill - 终止进程
- 终止进程ID为1234的进程:
kill 1234
这些命令是Linux系统中最基础和常用的工具,掌握它们可以帮助你更有效地管理文件系统和操作系统。
二、shell中查找文件
在Shell中查找文件是一个常见的任务,可以使用多种工具来完成,例如find、locate、grep等。以下是一些使用这些工具的示例。
1. 使用find命令
find命令是最常用的文件查找工具之一,它在指定目录及其子目录下搜索符合条件的文件。
示例:查找/home/user目录下所有以.txt结尾的文件。
find /home/user -type f -name "*.txt"
/home/user:指定的搜索目录。-type f:指定查找类型为文件。-name "*.txt":指定文件名模式,这里使用通配符*来匹配所有以.txt结尾的文件。
2. 使用locate命令
locate命令使用数据库来快速定位文件的路径,比find更快,但是它不会查找数据库中不存在的新文件。
示例:查找系统中所有名为bashrc的文件。
locate bashrc
bashrc:要查找的文件名。
3. 使用grep命令
grep通常用于搜索文本内容,但也可以用来查找包含特定文本的文件名。
示例:在当前目录及其子目录下查找包含test的文件名。
grep -rl 'test' *
-r:递归搜索。-l:只打印包含匹配文本的文件名。'test':要搜索的文本。*:代表当前目录下的所有文件和目录。
4. 使用which命令
which用于查找系统可执行文件的位置。
示例:查找bash命令的路径。
which bash
5. 使用whereis命令
whereis用于定位二进制、源和手册页文件的位置。
示例:查找javac的位置。
whereis javac
这些只是Shell中查找文件的一些基本示例。每个命令都有许多选项和参数,可以用于更复杂的搜索任务。
三、管道符的作用
在Linux系统中,管道符(|)是一个强大的命令行工具,它允许你将多个命令连接起来,将一个命令的输出作为另一个命令的输入。这种技术使得你可以将多个命令的输出进行组合和处理,完成更复杂的任务。
管道符的基本用途:
- 连接命令:将一个命令的输出作为另一个命令的输入。
- 数据过滤:使用管道将数据传递给过滤器(如
grep、sort、uniq等)进行处理。 - 简化命令:减少需要编写的命令数量,提高效率。
简单例子:
例子1:查找并排序文件名
假设你想要查找/home/user目录下所有以.txt结尾的文件,并将结果按字母顺序排序:
find /home/user -type f -name "*.txt" | sort
find /home/user -type f -name "*.txt":查找/home/user目录下所有以.txt结尾的文件。|:管道符,将find命令的输出传递给sort命令。sort:对输入的文件名进行排序。
例子2:查找并计数匹配行
假设你想要在文件example.txt中查找包含单词“error”的行,并计算这些行的数量:
grep "error" example.txt | wc -l
grep "error" example.txt:在example.txt文件中搜索包含“error”的行。|:管道符,将grep命令的输出传递给wc命令。wc -l:计算行数。
例子3:过滤并显示特定列
假设你有一个名为data.txt的文件,包含多列数据,你想要显示第二列:
cat data.txt | cut -d" " -f2
cat data.txt:显示data.txt文件的内容。|:管道符,将cat命令的输出传递给cut命令。cut -d" " -f2:使用cut命令以空格为分隔符显示第二列。
例子4:查找并删除文件
假设你想要查找/tmp目录下所有超过10MB的临时文件,并删除它们:
find /tmp -type f -size +10M -exec rm {} \;
find /tmp -type f -size +10M:查找/tmp目录下所有超过10MB的文件。-exec rm {} \;:对每个找到的文件执行rm命令进行删除。{}是一个占位符,代表find命令找到的文件名。
管道符使得你可以将多个命令组合成一个强大的数据处理链,极大地提高了命令行的灵活性和效率。
四、正则表达式有关
例1:echo 'abcababc' | sed -E ‘s/(ab|bc)*//g’
这个命令使用 sed 流编辑器处理字符串 'abcababc',并且利用了扩展正则表达式功能来执行更复杂的模式匹配。下面是命令的详细解释:
echo 'abcababc':这个命令输出字符串 'abcababc' 到标准输出。
|:管道符,将 echo 命令的输出作为下一个命令的输入。
sed -E 's/(ab|bc)*//g':sed 命令用于执行替换操作,带有 -E 选项表示使用扩展正则表达式。具体解释如下:
-E:让 sed 使用扩展正则表达式,这通常允许更复杂的模式匹配,比如使用 | 作为“或”操作符。
s:表示替换操作(substitute)。
/(ab|bc)*//g:替换模式,其中:
(ab|bc):一个分组,匹配 ab 或 bc 中的一个。在扩展正则表达式中,| 用作“或”操作符。
*:量词,表示匹配前面的分组零次或多次。
第一个 / 之后和第二个 / 之前的部分是替换文本,这里为空字符串,意味着匹配到的文本将被删除。
g:全局标志,表示替换所有匹配的实例。
这个 sed 脚本的目的是删除字符串中所有连续的 ab 或 bc 序列。由于 * 可以匹配零次,这个脚本实际上会删除字符串中所有的 ab 和 bc 序列。 答案为cc.
例2:echo "abaczbda" | sed 's/[ab]//g'什么意思?
这个命令使用了sed流编辑器来处理通过管道符|传递的输入字符串 "abaczbda"。下面是命令的详细解释:
-
echo "abaczbda":这是一个echo命令,用于输出字符串"abaczbda"到标准输出。 -
|:这是管道符,它将echo命令的输出(即字符串"abaczbda")作为下一个命令的输入。 -
sed 's/[ab]//g':这是sed命令,用于处理输入的字符串。这里的's/[ab]//g'是一个sed的脚本,含义如下:s:表示替换操作(substitute)。/[ab]/:查找模式,[ab]是一个字符集,表示匹配字符a或b。在sed中,方括号用于创建字符集,匹配括号内的任意单个字符。//:第一个斜线后面的空格表示替换文本为空(即删除匹配的字符)。g:全局标志,表示对输入文本中所有匹配的实例进行替换,而不是只替换第一个匹配项。
综合来看,整个命令 echo "abaczbda" | sed 's/[ab]//g' 的作用是:输出字符串 "abaczbda",然后使用sed删除其中所有的a和b字符,最终结果是输出 "czd"。
可以在任何Unix-like系统的命令行中执行这个命令来看到结果。

浙公网安备 33010602011771号