目录
课上测试
作业题目:Linux命令实践
学习Linux核心命令
- ls
- who
- pwd
- cd
- man
- whereis
- which
- find
- locate
- grep
作业要求(9‘)
- 参考课件,针对上面核心命令重复老师的演示内容(3’)
- 选择自己习惯的 AI 工具, 针对上面核心命令,让 AI 给自己生成至少例子,然后自己进行验证,总结(3’)
- 让 AI工具推荐一些重要命令,然后选择自己认为会高频应用的至少 3个命令(重点推荐 echo,od,sort,bc,ls)进行自主深入学习,每个命令不少于 5 个例子,提交验证,实践过程和总结(3’)
作业内容
命令演示
- ls
~$ ls
公共的 模板 视频 图片 文档 下载 音乐 桌面 GmSSL snap
~$ ls -l
总计 40
drwxr-xr-x 2 li li 4096 9月 2 14:08 公共的
drwxr-xr-x 2 li li 4096 9月 2 14:08 模板
drwxr-xr-x 2 li li 4096 9月 2 14:08 视频
drwxr-xr-x 2 li li 4096 9月 2 14:08 图片
drwxr-xr-x 2 li li 4096 9月 2 14:08 文档
drwxr-xr-x 2 li li 4096 9月 2 14:08 下载
drwxr-xr-x 2 li li 4096 9月 2 14:08 音乐
drwxr-xr-x 2 li li 4096 9月 2 14:08 桌面
drwxrwxr-x 3 li li 4096 9月 6 21:50 GmSSL
drwx------ 4 li li 4096 9月 6 21:08 snap
~$ ls -a
. .lesshst
.. .local
公共的 .profile
模板 snap
视频 .sudo_as_admin_successful
图片 .vboxclient-clipboard-tty2-control.pid
文档 .vboxclient-clipboard-tty2-service.pid
下载 .vboxclient-draganddrop-tty2-control.pid
音乐 .vboxclient-draganddrop-tty2-service.pid
桌面 .vboxclient-hostversion-tty2-control.pid
.bash_history .vboxclient-seamless-tty2-control.pid
.bash_logout .vboxclient-seamless-tty2-service.pid
.bashrc .vboxclient-vmsvga-session-tty2-control.pid
.cache .vboxclient-vmsvga-session-tty2-service.pid
.config .viminfo
GmSSL
- who
~$ who
li tty2 2024-09-10 11:06 (tty2)
~$ whoami
li
~$ who -a
系统引导 2024-09-10 10:15
运行级别 5 2024-09-10 10:16
li + tty2 2024-09-10 11:06 01:00 2748 (tty2)
pts/1 2024-09-10 11:08 3722 id=ts/1 终止=0 退出=0
- pwd
~$ pwd
/home/li
- cd
~$ cd /
li@li-VirtualBox:/$ ls
bin dev lib libx32 mnt root snap sys var
boot etc lib32 lost+found opt run srv tmp
cdrom home lib64 media proc sbin swapfile usr
/$ cd home
li@li-VirtualBox:/home$
/home$ cd .
li@li-VirtualBox:/home$
/home$ cd ..
li@li-VirtualBox:/$
~/GmSSL$ cd ..
li@li-VirtualBox:~$ cd -
/home/li/GmSSL
li@li-VirtualBox:~/GmSSL$
- man
/$ man man
MAN(1) 手册分页显示工具 MAN(1)
名称
man - 系统参考手册的接口
概述
man [man 选项] [[章节] 页 ...] ...
man -k [apropos 选项] 正则表达式 ...
man -K [man 选项] [章节] 关键词 ...
man -f [whatis 选项] 页 ...
man -l [man 选项] 文件 ...
man -w|-W [man 选项] page ...
- whereis
/$ whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
- which
/$ which ls
/usr/bin/ls
- find
~$ find GmSSL
GmSSL
GmSSL/GmSSL-master.zip
GmSSL/GmSSL-master
~$ find 文档 -mtime -1
文档
文档/test.txt
文档/.test.txt.swp
- locate
~$ locate GmSSL
/home/li/GmSSL
/home/li/GmSSL/GmSSL-master
/home/li/GmSSL/GmSSL-master.zip
- grep
~$ grep -nr O_RDWR /usr/include
/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h:45:#define O_RDWR 02
/usr/include/asm-generic/fcntl.h:22:#define O_RDWR 00000002
/usr/include/linux/dma-heap.h:18:/* Valid FD_FLAGS are O_CLOEXEC, O_RDONLY, O_WRONLY, O_RDWR */
/usr/include/scsi/cxlflash_ioctl.h:65: * and O_RDWR flags defined in the fcntl.h header file.
/usr/include/drm/drm.h:839:#define DRM_RDWR O_RDWR
- cheat
~$ cheat ls
# To display everything in <dir>, excluding hidden files:
ls <dir>
# To display everything in <dir>, including hidden files:
ls -a <dir>
# To display all files, along with the size (with unit suffixes) and timestamp:
ls -lh <dir>
# To display files, sorted by size:
ls -S <dir>
# To display directories only:
ls -d */ <dir>
# To display directories only, include hidden:
ls -d .*/ */ <dir>
# To display all files sorted by changed date, most recent first:
ls -ltc
# To display files sorted by create time:
ls -lt
# To display files in a single column:
ls -1
# To show ACLs (MacOS):
# see also `cheat chmod` for `/bin/chmod` options for ACLs
/bin/ls -le
# To show all the subtree files (Recursive Mode):
ls -R
AI提问及验证(重复命令未列出)
下面我将为您提供这些Linux核心命令的简要说明以及使用示例。
-
ls
描述:列出目录内容。
使用示例:
ls # 列出当前目录下的文件和目录
ls -l # 以长格式列出信息,包括文件权限、所有者、大小和最后修改时间
ls -a # 列出所有文件,包括以点(.)开头的隐藏文件
ls -la # 结合-l和-a选项
实践
~$ ls -la
总计 120
drwxr-x--- 15 li li 4096 9月 10 12:46 .
drwxr-xr-x 3 root root 4096 9月 2 13:50 ..
drwxr-xr-x 2 li li 4096 9月 2 14:08 公共的
drwxr-xr-x 2 li li 4096 9月 2 14:08 模板
drwxr-xr-x 2 li li 4096 9月 2 14:08 视频
drwxr-xr-x 2 li li 4096 9月 2 14:08 图片
drwxr-xr-x 2 li li 4096 9月 2 14:08 文档
drwxr-xr-x 2 li li 4096 9月 2 14:08 下载
drwxr-xr-x 2 li li 4096 9月 2 14:08 音乐
drwxr-xr-x 2 li li 4096 9月 2 14:08 桌面
-rw------- 1 li li 2431 9月 10 11:31 .bash_history
-rw-r--r-- 1 li li 220 9月 2 13:50 .bash_logout
-rw-r--r-- 1 li li 3771 9月 2 13:50 .bashrc
drwx------ 14 li li 4096 9月 2 17:13 .cache
drwxr-xr-x 15 li li 4096 9月 6 21:41 .config
drwxrwxr-x 3 li li 4096 9月 6 21:50 GmSSL
-rw------- 1 li li 20 9月 10 11:22 .lesshst
drwx------ 3 li li 4096 9月 2 14:08 .local
-rw-r--r-- 1 li li 807 9月 2 13:50 .profile
drwx------ 4 li li 4096 9月 6 21:08 snap
-rw-r--r-- 1 li li 0 9月 2 15:25 .sudo_as_admin_successful
-rw-r----- 1 li li 5 9月 10 12:45 .vboxclient-clipboard-tty2-control.pid
-rw-r----- 1 li li 5 9月 10 12:45 .vboxclient-clipboard-tty2-service.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-draganddrop-tty2-control.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-draganddrop-tty2-service.pid
-rw-r----- 1 li li 5 9月 10 12:45 .vboxclient-hostversion-tty2-control.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-seamless-tty2-control.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-seamless-tty2-service.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-vmsvga-session-tty2-control.pid
-rw-r----- 1 li li 5 9月 10 12:46 .vboxclient-vmsvga-session-tty2-service.pid
-rw------- 1 li li 858 9月 6 21:36 .viminfo
-
who
描述:显示当前登录系统的用户信息。
使用示例:
who # 显示当前登录的所有用户信息
-
pwd
描述:打印当前工作目录的绝对路径。
使用示例:
pwd # 显示当前工作目录的路径
-
cd
描述:更改当前工作目录。
使用示例:
cd /home/user # 更改到/home/user目录
cd .. # 更改到上一级目录
cd - # 切换到上一次所在的目录
-
man
描述:显示命令的手册页(帮助文档)。
使用示例:
man ls # 显示ls命令的手册页
-
whereis
描述:定位命令的二进制程序、源代码和手册页的位置。
使用示例:
whereis ls # 显示ls命令的二进制、源代码和手册页的位置
-
which
描述:显示给定命令的绝对路径。
使用示例:
which ls # 显示ls命令的绝对路径
-
find
描述:在目录树中搜索文件,并执行指定的操作。
使用示例:
find /home -name "*.txt" # 在/home目录下查找所有扩展名为.txt的文件
~/文档$ find /home/li/文档 -name "*.txt"
/home/li/文档/test.txt
-
locate
描述:快速查找文件系统中的文件。使用预先构建的数据库来查找文件,因此比find
快,但可能不是最新的。
使用示例:
locate filename.txt # 查找所有名为filename.txt的文件
-
grep
描述:搜索文本,并将匹配的行打印出来。
使用示例:
grep "error" log.txt # 在log.txt文件中搜索包含"error"的行
grep -r "error" /home # 在/home目录及其子目录中递归搜索包含"error"的行
~/文档$ grep "123" test2.txt
12346789
~/文档$ grep -r "error" /home
grep: /home/li/GmSSL/GmSSL-master.zip: 匹配到二进制文件
/home/li/GmSSL/GmSSL-master/cmake/cert_commands.cmake: message(FATAL_ERROR "generate file error")
/home/li/GmSSL/GmSSL-master/cmake/cert_commands.cmake: message(FATAL_ERROR "generate file error")
...
总结
这些命令是Linux用户日常工作中非常基础且强大的工具。掌握它们将极大地提高我在使用Linux系统时的效率和便利性。
高频命令自主学习
在Linux系统中,有许多重要且常用的命令,这些命令对于日常的系统管理、文件操作、编程开发等任务至关重要。以下是一些重要的命令推荐。
重要命令推荐
ls
:列出目录内容。cd
:更改当前目录。pwd
:显示当前工作目录的完整路径。cp
:复制文件或目录。mv
:移动或重命名文件或目录。rm
:删除文件或目录。chmod
:更改文件或目录的权限。chown
:更改文件或目录的所有者和/或组。grep
:搜索文件内容,显示匹配的行。find
:在目录树中搜索文件,并执行操作。ps
:显示当前进程的快照。top
:实时显示系统进程的动态管理视图。kill
:发送信号到进程,通常用于终止进程。tar
:归档工具,用于打包和解包文件。ssh
:安全地远程登录到另一台计算机。
深入学习命令示例
echo
echo
命令用于在终端输出文本或变量的值。
- 基本用法:
echo Hello, World!
—— 输出Hello, World!
。 - 输出变量:
name="Alice"; echo "My name is $name"
—— 输出My name is Alice
。 - 输出带换行符的文本:
echo -e "Line 1\nLine 2"
—— 输出两行文本。 - 输出带颜色的文本:
echo -e "\e[31mRed Text\e[0m"
—— 输出红色文本。 - 抑制换行符:
echo -n "No newline at end"
—— 输出文本但不换行。
/$ echo Hello, World!
Hello, World!
/$ name="Alice"
li@li-VirtualBox:/$ echo "My name is $name"
My name is Alice
$ echo -e "Line 1\nLine 2"
Line 1
Line 2
$ echo -e "\e[31mRed Text\e[0m"
Red Text
li@li-VirtualBox:/$ echo -n "No newline at end"
No newline at endli@li-VirtualBox:/$
od
od
命令用于将文件或标准输入转换成八进制、十进制、十六进制或其他格式的输出。
- 以十六进制格式输出文件内容:
od -x filename.bin
。 - 以字符形式输出文件内容:
od -c filename.txt
。 - 以无符号单字节格式输出二进制文件:
od -t u1 filename.bin
。 - 将标准输入以八进制格式输出:
echo "Hello" | od -b
。 - 忽略前导空白字符:
echo -n " Hello" | od -b
(注意,-n
防止echo
自动添加换行符,但od
默认显示所有字符,包括空格)。
~/文档$ od -x test2.txt
0000000 3231 3433 3736 3938 610a 6362 6564 6766
0000020 000a
0000021
~/文档$ od -c test2.txt
0000000 1 2 3 4 6 7 8 9 \n a b c d e f g
0000020 \n
0000021
~/文档$ od -t u1 test2.txt
0000000 49 50 51 52 54 55 56 57 10 97 98 99 100 101 102 103
0000020 10
0000021
~/文档$ echo "Hello" | od -b
0000000 110 145 154 154 157 012
0000006
~/文档$ echo -n " Hello" | od -b
0000000 040 040 110 145 154 154 157
0000007
bc
bc
命令是一个任意精度的计算器语言,用于数学计算。
- 基础运算:
echo "2 + 3" | bc
—— 输出5
。 - 浮点数运算:
echo "scale=2; 10 / 3" | bc
—— 输出3.33
。 - 变量赋值:
echo "a = 5; a + 3" | bc
—— 输出8
。 - 使用内置函数:
echo "s(1)" | bc -l
—— 计算正弦值。 - 循环和条件判断(通过脚本实现):在
bc
的交互模式下或通过编写脚本实现更复杂的逻辑。
$ echo "2 + 3" | bc
5
$ echo "scale=2; 10 / 3" | bc
3.33
$ echo "a = 5; a + 3" | bc
8
$ echo "s(1)" | bc -l
.84147098480789650665
以上是对echo
、od
、bc
命令的深入学习和示例展示。
总结
Linux命令行界面是Linux系统的核心。通过学习命令,可以更深入地理解操作系统的内部工作原理,包括文件系统、进程管理、网络配置等。
提高工作效率:Linux命令提供了强大的文本处理、文件管理和系统监控工具。熟练使用这些命令可以极大地提高工作效率,尤其是在处理大量文件、数据分析和系统维护时。
增强问题解决能力:在Linux环境中,很多问题都需要通过命令行来解决。学习Linux命令意味着将学会如何查找系统日志、分析进程状态、调试程序等,这些技能对于快速定位和解决系统或应用问题至关重要。
作业提交要求 (1')
- 记录实践过程和 AI 问答过程,尽量不要截图,给出文本内容
- (选做)推荐所有作业托管到 gitee或 github 上
- (必做)提交作业 markdown文档,命名为“学号-姓名-作业题目.md”
- (必做)提交作业 markdown文档转成的 PDF 文件,命名为“学号-姓名-作业题目.pdf”