学习Linux核⼼命令
课上老师命令总结
ls -R
.:
公共 模板 视频 图片 文档 下载 音乐 桌面 snap test.txt
./公共:
./模板:
./视频:
./图片:
./文档:
./下载:
c735a55275a757a8043c1c33bda84370.jpeg GmSSL-master GmSSL-master.zip
./下载/GmSSL-master:
build cmake CMakeLists.txt include INSTALL.md LICENSE README.md src tests tools
zcw@zcw:~$ man -k printf | grep 3
PA_CHAR (3const) - define custom behavior for printf-like functions
PA_DOUBLE (3const) - define custom behavior for printf-like functions
PA_FLAG_LONG (3const) - define custom behavior for printf-like functions
PA_FLAG_LONG_DOUBLE (3const) - define custom behavior for printf-like functions
PA_FLAG_LONG_LONG (3const) - define custom behavior for printf-like functions
PA_FLAG_PTR (3const) - define custom behavior for printf-like functions
PA_FLAG_SHORT (3const) - define custom behavior for printf-like functions
PA_FLOAT (3const) - define custom behavior for printf-like functions
PA_INT (3const) - define custom behavior for printf-like functions
PA_LAST (3const) - define custom behavior for printf-like functions
PA_POINTER (3const) - define custom behavior for printf-like functions
PA_STRING (3const) - define custom behavior for printf-like functions
PA_WCHAR (3const) - define custom behavior for printf-like functions
PA_WSTRING (3const) - define custom behavior for printf-like functions
asprintf (3) - print to allocated string
dprintf (3) - formatted output conversion
fprintf (3) - formatted output conversion
zcw@zcw:~$ whereis gmssl
gmssl: /usr/local/bin/gmssl
zcw@zcw:~$
剩下的命令都在作业要求中,写在后面了
ai问答过程
ls
who
pwd
cd
man
whereis
which
find
locate
grep 针对上⾯核⼼命令每个命令至少给我生成三个例子
以下是每个命令的三个例子:
一、ls
ls:列出当前目录下的文件和文件夹。
ls -l:以长格式列出当前目录下的文件和文件夹信息。
ls -a:列出当前目录下包括隐藏文件在内的所有文件和文件夹。
二、who
who:显示当前登录的用户信息。
who -H:显示带有标题行的用户信息。
who -u:显示登录用户及其运行的进程信息。
三、pwd
pwd:显示当前工作目录的绝对路径。
pwd -P:显示当前工作目录的物理路径,不包含任何符号链接。
pwd -L:显示当前工作目录的逻辑路径,可能包含符号链接。
四、cd
cd /home/user:切换到 /home/user 目录。
cd..:切换到上一级目录。
cd ~:切换到当前用户的主目录。
五、man
man ls:查看ls命令的手册页。
man grep:查看grep命令的手册页。
man cd:查看cd命令的手册页。
六、whereis
whereis ls:查找ls命令的二进制文件、源代码和手册页的位置。
whereis grep:查找grep命令的相关位置。
whereis man:查找man命令的相关位置。
七、which
which ls:显示ls命令的可执行文件路径。
which grep:显示grep命令的可执行文件路径。
which cd:由于cd是 shell 内置命令,所以which cd通常不会显示结果。
八、find
find. -name "test.txt":在当前目录下查找名为 “test.txt” 的文件。
find /home -type d:在 /home 目录下查找所有目录。
find / -mtime -7:在根目录下查找 7 天内修改过的文件。
九、locate
locate test.txt:查找系统中名为 “test.txt” 的文件。
locate *.jpg:查找所有扩展名为.jpg 的文件。
locate /usr/bin/ | grep python:查找 /usr/bin/ 目录下与 “python” 相关的文件。
十、grep
grep "hello" file.txt:在 file.txt 文件中查找包含 “hello” 的行。
grep -i "world" *:在当前目录下的所有文件中忽略大小写查找 “world”。
ps aux | grep "java":在系统进程列表中查找包含 “java” 的进程信息。
locate
locate test.txt //查找名字是test.txt的文件
locate report //查找文件中带有report的文件
/etc/apport/report-ignore
/etc/apport/report-ignore/README.denylist
/etc/systemd/system/paths.target.wants/apport-autoreport.path
/etc/systemd/system/timers.target.wants/apport-autoreport.timer
/etc/systemd/user/default.target.wants/ubuntu-report.path
/etc/xdg/autostart/ubuntu-report-on-upgrade.desktop
/home/zcw/.cache/ubuntu-report
/home/zcw/.cache/ubuntu-report/ubuntu.24.04
/home/zcw/snap/firefox/common/.mozilla/firefox/1ieg6kbt.default/datareporting
/home/zcw/snap/firefox/common/.mozilla/firefox/1ieg6kbt.default/datareporting/aborted-session-ping
/home/zcw/snap/firefox/common/.mozilla/firefox/1ieg6kbt.default/datareporting/glean
/home/zcw/snap/firefox/common/.mozilla/firefox/1ieg6kbt.default/datareporting/se
locate log* //查找以log开头的文件
locate /home/user/documents/invoice //假设要在/home/user/documents目录及其子目录中查找包含invoice的文件
以上命令创建了一个test.txt文件但是没有显示,不知道啥原因
ls
ls //查看当前目录下的文件
zcw@zcw-VMware-Virtual-Platform:~$ ls
01-network-manager-all.yaml 视频 下载 GmSSL-3.1.1-Linux GmSSL-v3.1.1.zip snap
公共 图片 音乐 GmSSL-3.1.1-Linux.sh libgmssl.so.3 test
模板 文档 桌面 GmSSL-v3.1.1 README.md
ls -a//列出当前目录下包括隐藏文件在内的所有文件和文件夹。
ls -a
. .bash_logout .pki
.. .bashrc .profile
01-network-manager-all.yaml .cache README.md
公共 .config snap
模板 .dotnet .sources.list.swo
视频 GmSSL-3.1.1-Linux .sources.list.swp
图片 GmSSL-3.1.1-Linux.sh .ssh
文档 GmSSL-v3.1.1 .sudo_as_admin_successful
下载 GmSSL-v3.1.1.zip test
音乐 .lesshst .viminfo
桌面 libgmssl.so.3 .vscode
.bash_history .local
ls -l//以长格式列出当前目录下的文件和文件夹信息。
ls -l
总计 1060
-rw-rw-r-- 1 zcw zcw 0 9月 7 19:51 01-network-manager-all.yaml
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 公共
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 模板
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 视频
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 图片
drwxr-xr-x 3 zcw zcw 4096 9月 1 21:52 文档
drwxr-xr-x 2 zcw zcw 4096 9月 9 21:21 下载
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 音乐
drwxr-xr-x 2 zcw zcw 4096 9月 1 19:48 桌面
drwxrwxr-x 5 zcw zcw 4096 9月 7 20:36 GmSSL-3.1.1-Linux
-rwxrwxr-x 1 zcw zcw 437224 9月 7 20:16 GmSSL-3.1.1-Linux.sh
drwxrwxr-x 11 zcw zcw 4096 9月 7 20:58 GmSSL-v3.1.1
-rw-rw-r-- 1 zcw zcw 593112 9月 7 20:47 GmSSL-v3.1.1.zip
lrwxrwxrwx 1 zcw zcw 37 9月 7 21:19 libgmssl.so.3 -> ./GmSSL-3.1.1-Linux/lib/libgmssl.so.3
-rw-rw-r-- 1 zcw zcw 2 9月 7 20:59 README.md
drwx------ 9 zcw zcw 4096 9月 10 11:01 snap
drwxrwxr-x 3 zcw zcw 4096 9月 1 20:03 test
其中第一个字符 “l” 表示这是一个符号链接(软链接)文件。如果是 “-” 则表示普通文件,“d” 表示目录等。
接下来的三个 “rwx” 分别表示文件所有者(user)具有读(r)、写(w)和执行(x)权限。如果是 “-” 表示没有相应权限。在这里表示所有者对这个符号链接有读、写和执行的全部权限。
再接下来的三个 “rwx” 表示文件所属组(group)的权限,这里表示所属组对这个符号链接也有读、写和执行的全部权限。
最后三个 “rwx” 表示其他用户(others)的权限,同样表示其他用户对这个符号链接有读、写和执行的全部权限。
- who
who //显示当前登录的用户信息。
who
zcw seat0 2024-09-10 09:54 (login screen)
zcw tty2 2024-09-10 09:54 (tty2)
who -H //显示带有标题行的用户信息。
who -H
名称 线路 时间 备注
zcw seat0 2024-09-10 09:54 (login screen)
zcw tty2 2024-09-10 09:54 (tty2)
who -u //显示登录用户及其运行的进程信息。
who -u
zcw seat0 2024-09-10 09:54 ? 2507 (login screen)
zcw tty2 2024-09-10 09:54 00:24 2507 (tty2)
- pwd
pwd //显示当前工作目录的绝对路径。
pwd
/home/zcw
pwd -P //显示当前工作目录的物理路径,不包含任何符号链接。
pwd -P
/home/zcw
pwd -L //显示当前工作目录的逻辑路径,可能包含符号链接。
pwd -L
/home/zcw
- cd
cd
cd ~
//切换到主目录
zcw@zcw:~$ cd ..
zcw@zcw:/home$ cd
zcw@zcw:~$ cd ..
zcw@zcw:/home$ cd ~
cd /home/user //切换到 /home/user 目录。
zcw@zcw:~$ cd snap
zcw@zcw:~/snap$ cd /home/user
bash: cd: /home/user: 没有那个文件或目录
zcw@zcw:~/snap$ cd /home
zcw@zcw:/home$ cd /home/zcw
zcw@zcw:~$
cd .. //切换到上一级目录
zcw@zcw:~$ cd ..
zcw@zcw:/home$ cd..
cd..:未找到命令
zcw@zcw:/home$ cd ..
zcw@zcw:/$ cd ..
zcw@zcw:/$
- man
man ls
man grep
man find
//查看命令手册页
```bash
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci‐
fied.
Mandatory arguments to long options are mandatory for short options
too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
man 1 printf //表示printf命令
man 3 printf //表示c语言中的printf函数
printf(3) Library Functions Manual printf(3)
NAME
printf, fprintf, dprintf, sprintf, snprintf, vprintf, vfprintf, vd‐
printf, vsprintf, vsnprintf - formatted output conversion
LIBRARY
Standard C library (libc, -lc)
SYNOPSIS
#include <stdio.h>
int printf(const char *restrict format, ...);
int fprintf(FILE *restrict stream,
const char *restrict format, ...);
int dprintf(int fd,
const char *restrict format, ...);
int sprintf(char *restrict str,
const char *restrict format, ...);
int snprintf(char str[restrict .size], size_t size,
const char *restrict format, ...);
- whereis
whereis ls //查找ls命令的二进制文件、源代码和手册页的位置。
whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
whereis grep //查找grep命令的相关位置。
whereis grep
grep: /usr/bin/grep /usr/share/man/man1/grep.1.gz /usr/share/info/grep.info.gz
whereis man:查找man命令的相关位置。
whereis man
man: /usr/bin/man /usr/local/man /usr/share/man /usr/share/man/man1/man.1.gz /usr/share/man/man7/man.7.gz
常用选项
-b:仅查找二进制文件。
-m:仅查找手册页。
-s:仅查找源代码。
-u:查找无法匹配的条目,这在需要更具体的查找时有用。
-B,-M,-S:分别指定二进制文件、手册页和源代码的搜索路径。
-f:用于终止路径列表后的参数,并指出后面的名称是命令而不是路径(在使用 -B 等时常用)。
- which
which ls //显示ls命令的可执行文件路径。
which grep //显示grep命令的可执行文件路径。
which cd //由于cd是 shell 内置命令,所以which cd通常不会显示结果。
zcw@zcw-VMware-Virtual-Platform:~$ which ls
/usr/bin/ls
zcw@zcw-VMware-Virtual-Platform:~$ which cd
zcw@zcw-VMware-Virtual-Platform:~$ which grep
/usr/bin/grep
- find
find. -name "test.txt" //在当前目录下查找名为 “test.txt” 的文件。
find /home -type d //home 目录下查找所有目录。
find / -mtime -7 //在根目录下查找 7 天内修改过的文件。
find test
test
test/src
test/src/hello.c
zcw@zcw-VMware-Virtual-Platform:~$ find -name test
./test
./.vscode/extensions/twxs.cmake-0.0.17/out/test
./.vscode/extensions/twxs.cmake-0.0.17/node_modules/peg-cmake/test
./.vscode/extensions/vadimcn.vscode-lldb-1.10.0/lldb/lib/python3.9/ctypes/test
./.vscode/extensions/vadimcn.vscode-lldb-1.10.0/lldb/lib/python3.9/unittest/test
find /home -type d
/home
/home/zcw
/home/zcw/.local
/home/zcw/.local/state
/home/zcw/.local/state/wireplumber
/home/zcw/.local/share
/home/zcw/.local/share/gnome-shell
/home/zcw/.local/share/keyrings
/home/zcw/.local/share/ibus-table
/home/zcw/.local/share/gnome-settings-daemon
/home/zcw/.local/share/nautilus
/home/zcw/.local/share/nautilus/scripts
/home/zcw/.local/share/nautilus/tags
/home/zcw/.local/share/applications
/home/zcw/.local/share/evolution
/home/zcw/.local/share/evolution/addressbook
/home/zcw/.local/share/evolution/addressbook/trash
/home/zcw/.local/share/evolution/addressbook/system
- locate
locate test.txt //查找系统中名为 “test.txt” 的文件。
locate *.jpg //查找所有扩展名为.jpg 的文件。
locate /usr/bin/ | grep python //查找 /usr/bin/ 目录下与 “python” 相关的文件。
- grep
grep "hello" //file.txt:在 file.txt 文件中查找包含 “hello” 的行。
grep -i "world" * //在当前目录下的所有文件中忽略大小写查找 “world”。
ps aux | grep "java" //在系统进程列表中查找包含 “java” 的进程信息。
grep "hello" file.txt
grep: file.txt: No such file or directory
[admin@LAPTOP-LN7OVAEL ~]$ mkdir file.txt
[admin@LAPTOP-LN7OVAEL ~]$ grep "hello" file.txt
grep: file.txt: Is a directory
grep -i "world" *
grep: build: Is a directory
grep: file.txt: Is a directory
grep: gmssl: Is a directory
grep: GmSSL-3.1.1-Linux: Is a directory
grep: GmSSL-Linux.sh: binary file matches
grep: hello.c: Is a directory
grep: openssl-3.2.0: Is a directory
grep: rocopenssl: Is a directory
grep: rocopenssldir: Is a directory
grep: rocopensslsrc: Is a directory
[admin@LAPTOP-LN7OVAEL ~]$ ps aux | grep "java"
admin 96 0.0 0.0 22356 2032 pts/0 S+ 12:12 0:00 grep --color=auto java
AI工具推荐的命令的自主深入学习
问答过程
让 AI⼯具推荐⼀些重要命令,然后选择⾃⼰认为会⾼频应⽤的⾄少 3个命令(重点推荐 echo,od,
sort,bc,ls)进⾏⾃主深⼊学习,每个命令不少于 5 个例⼦,提交验证,实践过程和总结(3ʼ)
以下是对 echo、od、sort、bc、ls 这五个命令的深入学习:
一、echo 命令
echo 命令用于在终端中显示文本或变量的值。
显示简单文本:
plaintext
复制
echo "Hello, World!"
输出:Hello, World!
显示变量:
plaintext
复制
name="John"
echo "My name is $name"
输出:My name is John。
显示多行文本:
plaintext
复制
echo -e "Line 1\nLine 2\nLine 3"
输出:
Line 1
Line 2
Line 3
将文本重定向到文件:
plaintext
复制
echo "This is a test." > test.txt
这会创建一个名为 test.txt 的文件,并写入 “This is a test.”。
显示特殊字符:
plaintext
复制
echo "This is a tab:\t and this is a newline:\n"
输出:This is a tab: and this is a newline:
实践过程和总结:
echo 命令非常简单实用,可以快速输出文本信息,用于调试和输出简单的提示信息非常方便。在脚本中也经常被用来输出状态信息或结果。
二、od 命令
od 命令用于以八进制、十六进制等格式查看文件内容。
以八进制查看文件:
plaintext
复制
od -t o file.txt
以十六进制查看文件:
plaintext
复制
od -t x file.txt
查看二进制文件:
plaintext
复制
od -t x1 binary_file.bin
以特定宽度查看文件:
plaintext
复制
od -t x4 file.txt
查看文件并显示地址:
plaintext
复制
od -Ax -t x1 file.txt
实践过程和总结:
od 命令对于查看二进制文件或需要以特定格式查看文件内容时非常有用。可以帮助开发者分析文件的结构和内容,特别是在处理一些底层数据格式时。
三、sort 命令
sort 命令用于对文本文件的内容进行排序。
对文件内容进行升序排序:
plaintext
复制
sort file.txt
对文件内容进行降序排序:
plaintext
复制
sort -r file.txt
按数字大小进行排序:
plaintext
复制
sort -n file.txt
忽略大小写进行排序:
plaintext
复制
sort -f file.txt
从特定字段开始排序:
plaintext
复制
sort -k 2 file.txt
实践过程和总结:
sort 命令在处理文本数据时非常常用,可以快速对数据进行排序,方便后续的处理和分析。可以根据不同的需求选择不同的排序选项。
四、bc 命令
bc 是一个高精度计算工具。
简单计算:
plaintext
复制
echo "2+3" | bc
输出:5
浮点数计算:
plaintext
复制
echo "3.14 * 2" | bc
输出:6.28
设置精度:
plaintext
复制
scale=4; echo "3/2" | bc
输出:1.5000
定义变量进行计算:
plaintext
复制
echo "a=5;b=3;a*b" | bc
输出:15
计算平方:
plaintext
复制
echo "5^2" | bc
输出:25
实践过程和总结:
bc 命令在需要进行高精度计算时非常有用,特别是在脚本中需要进行复杂的数学运算时。可以通过定义变量和使用各种数学函数进行灵活的计算。
五、ls 命令
ls 命令用于列出目录内容。
列出当前目录下的文件和文件夹:
plaintext
复制
ls
以长格式列出:
plaintext
复制
ls -l
列出所有文件包括隐藏文件:
plaintext
复制
ls -a
按文件大小排序:
plaintext
复制
ls -S
递归列出子目录内容:
plaintext
复制
ls -R
实践过程和总结:
ls 命令是日常使用非常频繁的命令,用于查看目录结构和文件信息。不同的选项可以满足不同的需求,方便用户快速了解文件系统的状态。
echo
显示简单文本
echo "Hello, World!"
[admin@LAPTOP-LN7OVAEL ~]$ echo "Hello, World!"
Hello, World!
显示变量
name="John"
echo "My name is $name"
[admin@LAPTOP-LN7OVAEL ~]$ name="John"
echo "My name is $name"
My name is John
[admin@LAPTOP-LN7OVAEL ~]$
显示多行文本
echo -e "Line 1\nLine 2\nLine 3"
[admin@LAPTOP-LN7OVAEL ~]$ echo -e "Line 1\nLine 2\nLine 3"
Line 1
Line 2
Line 3
将文本重定向到文件
echo "This is a test." > test.txt
zcw@zcw:~$ echo "this is a test" test.txt
this is a test test.txt
zcw@zcw:~$
显示特殊字符
echo "This is a tab:\t and this is a newline:\n"
This is a tab: and this is a newline:
echo命令总结
echo 命令非常简单实用,可以快速输出文本信息,用于调试和输出简单的提示信息非常方便。在脚本中也经常被用来输出状态信息或结果。
od
以八进制查看文件
od -t o file.txt
[admin@LAPTOP-LN7OVAEL ~]$ od -t o file.txt
od: file.txt: Is a directory
0000000
以十六进制查看文件
od -t x file.txt
[admin@LAPTOP-LN7OVAEL ~]$ od -t x file.txt
od: file.txt: Is a directory
0000000
查看二进制文件
od -t x1 binary_file.bin
[admin@LAPTOP-LN7OVAEL ~]$ od -t x1 binary_file.bin
0000000 45 61 73 68 68 73 61 66 38 38 61 73 36 66 38 37
0000020 36 37 39 61 36 73 66 39 38 36 61 73 39 66 36 0a
0000040 45 0a 45 0a 61 73 66 61 73 66 0a
0000053
以特定宽度查看文件
od -t x4 file.txt
[admin@LAPTOP-LN7OVAEL ~]$ od -t x4 file.txt
od: file.txt: Is a directory
0000000
查看文件并显示地址
od -Ax -t x1 file.txt
[admin@LAPTOP-LN7OVAEL ~]$ od -Ax -t x1 file.txt
od: file.txt: Is a directory
000000
od命令总结
od 命令对于查看二进制文件或需要以特定格式查看文件内容时非常有用。可以帮助开发者分析文件的结构和内容,特别是在处理一些底层数据格式时。
sort
对文件内容进行升序排序
sort file.txt
[admin@LAPTOP-LN7OVAEL ~]$ vim 1.txt
[admin@LAPTOP-LN7OVAEL ~]$ sort 1.txt
8967568759asjksagfqw79696
对文件内容降序排序
sort -r file.txt
[admin@LAPTOP-LN7OVAEL ~]$ vim 2.txt
[admin@LAPTOP-LN7OVAEL ~]$ sort -r 2.txt
7712691824618246812461829460182461092846710824
按数字大小进行排序
sort -n file.txt
[admin@LAPTOP-LN7OVAEL ~]$ sort -n 2.txt
1 2 3 4 5 6 7 8
从特定字段开始排序
sort -k 2 file.txt
[admin@LAPTOP-LN7OVAEL ~]$ sort -k 2 2.txt
1 2 3 4 5 6 7 k 8
sort命令总结
sort 命令在处理文本数据时非常常用,可以快速对数据进行排序,方便后续的处理和分析。可以根据不同的需求选择不同的排序选项。
bc
bc是一款任意精度计算器
下面用echo打印bc结果
echo "2+3" | bc
echo "10-4" | bc
echo "5*4" | bc
echo "10/3" | bc
echo "scale=2; a=5; b=3; c=a*b; c/2" | bc
zcw@zcw:~$ echo "2+3" | bc
echo "10-4" | bc
echo "5*4" | bc
echo "10/3" | bc
echo "scale=2; a=5; b=3; c=a*b; c/2" | bc
5
6
20
3
7.50
bc命令总结
bc是一个用于进行任意精度算术运算的命令行计算器,以下是对它的总结:
主要特点:
高精度计算:可以进行高精度的整数和浮点数运算,适用于需要处理大数值或高精度要求的计算场景。
表达式支持:支持基本的算术运算符如加(+)、减(-)、乘(*)、除(/),还可以使用括号来控制运算顺序。可以进行复杂的数学表达式计算。
变量定义:允许定义变量,方便进行更复杂的计算和脚本编写。可以在表达式中使用变量来存储中间结果或重复使用特定的值。
精度控制:可以通过设置scale参数来控制浮点数运算的精度,即小数位数。这对于需要特定精度的计算非常有用。
管道输入:通常通过管道(|)将表达式传递给bc进行计算,可以与其他命令结合使用,方便在命令行中进行快速计算和数据处理。
使用场景:
数学计算和验证:在命令行中进行快速的数学计算,验证数学公式或解决数学问题。
脚本编写:可以在脚本中使用bc进行复杂的数值计算,特别是当需要高精度或特定精度的结果时。
数据处理:结合其他命令行工具,对数值数据进行处理和转换,例如提取数据中的数值进行计算、进行数据统计等。
总之,bc是一个强大的命令行工具,适用于需要进行高精度算术运算和数值处理的各种场景。