目录
ls 指令
pwd命令
cd 指令
touch指令
mkdir指令(重要)
rmdir指令 && rm 指令(重要)
rmdir是一个与mkdir相对应的命令
rm基本语法
删除文件的操作示例
删除目录的操作示例
man指令(重要)
cp指令(重要)
mv指令(重要)
cat指令基本语法
常用选项
主要用途
输入重定向
more指令
less指令(重要)
head指令
tail指令
时间相关的指令
data指令
Cal指令
find指令(重要)
grep指令
zip/unzip指令
tar指令(重要)
bc指令
uname指令
shutdown指令
alias
ls 指令
语法: ls [选项][目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
1. -a 列出目录下的所有文件,包括以 . 开头的隐含文件。
2. -d 将目录像文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
3. -i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
4. -k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
5. -l 列出文件的详细信息
6. -n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
7. -F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示 目录;“@”表 示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
8. -r 对目录反向排序
9. -t 以时间排序
10. -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
11. -R 列出所有子目录下的文件。(递归)
12. -1一行只输出一个文件
pwd命令
语法: pwd
功能:显示用户当前所在的目录
cd 指令
语法: cd 目录名
功能:改变工作目录。将当前工作目录改变到指定的目录下。
举例
1. cd .. : 返回上级目录
2. cd /home/litao/linux/ : 绝对路径
3. cd ../day02/ : 相对路径
4. cd ~:进入用户家目
5. cd -:返回最近访问目录
touch指令
语法: touch [选项]... 文件...
功能:touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
常用选项:
1. -a 或--time=atime或--time=access或--time=use只更改存取时间。
2. -c 或--no-create 不建立任何文档。
3. -d 使用指定的日期时间,而非现在的时间。
4. -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
5. -m 或--time=mtime或--time=modify 只更改变动时间。
6. -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
7. -t 使用指定的日期时间,而非现在的时间。
mkdir指令(重要)
语法:mkdir [选项] dirname...
功能:在当前目录下创建一个名为 “dirname”的目录
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立 好那些尚不存在的目录,即一次可以建立多个目录
举例:
mkdir –p test/test1 : 递归建立多个目录
rmdir指令 && rm 指令(重要)
rmdir是一个与mkdir相对应的命令
语法:rmdir [-p][dirName]
适用对象:具有当前目录操作权限的所有使用者
功能:删除空目录
常用选项:-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
mkdir是建立目录,而rmdir是删除命令。
1. -f 即使文件属性为只读(即写保护),亦直接删除
2. -i 删除前逐一询问确认
3. -r 删除目录及其下所有文件
rm基本语法
rm [选项] 文件或目录名称
- 例如,要删除文件
test.txt
,可以使用命令rm test.txt
1. -i(interactive)
- 作用:在删除每个文件之前提示用户进行确认。这是一个很有用的选项,可以防止误删除重要文件。
- 示例:如果要删除文件
file1.txt
,使用rm -i file1.txt
,系统会在删除前询问remove file1.txt?
,此时你可以输入y
(是)或n
(否)来决定是否删除。2. -f(force)
- 作用:强制删除文件或目录,不提示直接删除,即使文件属性是只读的也会被删除。不过,在使用这个选项时要格外小心,因为可能会导致数据丢失。
- 示例:
rm -f read - only_file.txt
会直接删除read - only_file.txt
,不会有任何提示。3. -r 或 -R(recursive)
- 作用:用于删除目录及其所有内容。如果目录非空,必须使用此选项才能删除整个目录。
-r
和-R
选项功能相同,只是书写方式不同。- 示例:要删除目录
test_dir
及其内部的所有文件和子目录,可以使用rm -r test_dir
或rm -R test_dir
4.
-v(verbose)
- 作用:显示详细的删除过程信息,包括正在删除的文件或目录名称。
- 示例:
rm -v file2.txt
会在删除file2.txt
时显示removed 'file2.txt'
的信息
删除文件的操作示例
1. 删除单个文件
示例:删除当前目录下的
example.txt
文件,命令为rm example.txt
2. 批量删除文件
示例:如果要删除当前目录下所有以
.log
结尾的文件,可以使用rm *.log
。
*
是通配符,表示匹配任意字符序列,所以*.log
表示所有以.log
结尾的文件
删除目录的操作示例
删除单个空目录
- 可以直接使用
rm -r
或rm -R
选项来删除,不过对于空目录,也可以使用rmdir
命令。例如,要删除空目录empty_dir
,可以使用rm -r empty_dir
或者rmdir empty_dir
。删除单个非空目录
- 必须使用
rm -r
或rm -R
选项。例如,要删除包含文件和子目录的non_empty_dir
,命令为rm -r non_empty_dir
。批量删除目录
- 示例:如果要删除当前目录下所有以
_backup
结尾的目录,可以使用rm -r *_backup
。同样,这里的*
通配符用于匹配目录名称。递归删除文件夹
rm -rf test - directory/
来快速清理。这里假设test - directory
是测试目录的名称。
man指令(重要)
Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。
访问Linux手册页的命令是man
用法: man [选项] 命令
1. -k 根据关键字搜索联机帮助
2. num 只在第num章节找
3. -a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用a选项,当按 下q退出,他会继续往后面搜索,直到所有章节都搜索完毕。
解释一下,面手册分为8章
1 是普通的命令
2 是系统调用,如open,write之类的(通过这个,至少可以很方便的查到调用这个函数,需要加什么头文 件)
3 是库函数,如printf,fread
4 是特殊文件,也就是/dev下的各种设备文件
5 是指文件的格式,比如passwd, 就会说明这个文件中各个字段的含义
6 是给游戏留的,由各个游戏自己定义
7 是附件还有一些变量,比如向environ这种全局变量在这里就有说明
8 是系统管理用的命令,这些命令只能由root使用,如ifconfig
cp指令(重要)
语法:cp [选项] 源文件或目录 目标文件或目录
功能: 复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存 在的目录,则会出现错误信息
常用选项:
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链 接,则一律视为普通文件处理
-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
mv指令(重要)
基本语法:mv [选项] 源文件或目录 目标文件或目录
常用选项
1. -i(interactive)
- 作用:在覆盖目标文件之前提示用户进行确认。这是一个很有用的选项,可以防止误覆盖重要文件。
- 示例:假设当前目录下有一个文件
file1.txt
,要将其移动到另一个目录test_dir
,且目标目录中已经存在同名文件。
- 命令:
mv -i file1.txt test_dir/
- 执行结果:系统会提示你是否要覆盖目标目录中的同名文件,你可以输入
y
(是)或n
(否)来决定操作是否继续。2. -f(force)
- 作用:强制移动文件或目录,不提示直接覆盖目标文件。使用这个选项要谨慎,因为可能会导致数据丢失。
- 示例:
mv -f file2.txt another_dir/
,如果another_dir
中有同名文件,会直接被覆盖,不会有任何提示。3. -v(verbose)
- 作用:显示详细的操作信息,让用户清楚地看到每个文件的移动过程。
- 示例:
mv -v file3.txt new_dir/
,在移动文件时,终端会显示类似于"renaming file3.txt to new_dir/file3.txt"
的信息,告知用户文件的源路径和目标路径。
文件移动操作
1. 同一目录下移动文件(重命名)
- 示例:假设当前目录下有一个文件叫
old_name.txt
,要将其重命名为new_name.txt
。
- 命令:
mv old_name.txt new_name.txt
2.
不同目录间移动文件
- 示例:把当前目录下的文件
source_file.txt
移动到/home/user/documents
目录下。
- 命令:
mv source_file.txt /home/user/documents/
- 如果目标目录是一个相对路径,例如将文件移动到当前目录的子目录
sub_dir
中,命令可以是mv file.txt sub_dir/
目录移动操作
1. 移动单个目录
- 示例:把目录
source_dir
移动到/home/user/new_location
目录下。
- 命令:
mv source_dir /home/user/new_location/
2. 移动多个文件或目录到一个目录中
- 示例:有文件
file1.txt
、file2.txt
和目录sub_dir1
,要将它们都移动到目录target_dir
中。
- 命令:
mv file1.txt file2.txt sub_dir1 target_dir/
- 注意:在这种情况下,目标目录必须是最后一个参数。
在使用
mv
命令时,要注意文件和目录的权限问题。如果用户没有对目标目录的写入权限,操作将无法完成。同时,也要谨慎使用-f
选项,避免不必要的数据丢失。
cat指令
基本语法
cat [选项] [文件名称]
- 例如,
cat file.txt
可以用来查看文件file.txt
的内容
常用选项
1. -n(number)
- 作用:在查看文件内容时,给每行添加行号。这在需要引用文件中的特定行或者对文件内容进行逐行分析时非常有用。
2. -b(number - nonblank)
- 作用:类似于
-n
选项,但只对非空行进行编号。如果文件中有很多空行,使用-b
选项可以使行号的显示更加简洁。3. -s(squeeze - blank)
- 作用:将连续的多个空白行压缩为一个空白行。当文件中有大量空白行时,这个选项可以使文件内容的显示更加紧凑。
4. -E(show - ends)
- 作用:在每行的末尾显示一个
$
符号,用于标记行的结束位置。这在查看文件内容是否存在换行问题或者需要精确识别行尾时很有用。
主要用途
- 查看文件内容
- 示例:要查看
/etc/passwd
文件的内容,可以使用cat /etc/passwd
。这是cat
命令最基本的用法,用于快速浏览文本文件中的信息。- 合并文件
- 示例:如果有两个文件
file1.txt
和file2.txt
,想要将它们的内容合并到一个新文件combined.txt
中,可以使用cat file1.txt file2.txt > combined.txt
。这里的>
是重定向符号,它将cat
命令输出的内容(即file1.txt
和file2.txt
的合并内容)写入到combined.txt
文件中。- 创建简单文本文件
- 示例:可以使用
cat
命令结合重定向符号来创建一个新的文本文件。例如,要创建一个名为new_file.txt
的文件,并在其中写入一行文字 “Hello, World!”,可以使用cat > new_file.txt
,然后在终端输入文字 “Hello, World!”,最后按Ctrl + D
组合键来结束输入并保存文件。
输入重定向
基本概念
- 输入重定向是一种在 Linux 和其他类 Unix 系统中用于改变命令输入源的机制。通常情况下,命令从标准输入(一般是键盘)获取数据,但通过输入重定向,可以让命令从文件或其他命令的输出中获取输入。
<
操作符(从文件读取输入)
- 语法和示例:基本语法是
命令 < 文件名
。例如,sort < input.txt
,这个命令会让sort
命令(用于排序)从input.txt
文件中获取输入内容,而不是从键盘获取。sort
命令会读取input.txt
中的内容,并对其进行排序,然后将排序后的结果输出到标准输出(一般是屏幕)。- 应用场景:在处理大量数据时非常有用。假设你有一个包含用户信息(如姓名、年龄等)的文件
user_info.txt
,并且想要对其中的用户年龄进行排序。可以使用sort -k2 < user_info.txt
(这里-k2
表示按照第二列排序)来快速实现,而不需要手动将文件内容逐行输入到sort
命令中。
<<
操作符(Here Document)
- 语法和示例:语法是
命令 << 结束标记
,在输入命令后,从下一行开始输入内容,直到输入结束标记为止,这些内容会作为命令的输入。例如,cat << EOF
,然后在下面输入几行文本,最后输入EOF
,cat
命令会将这些输入的文本输出到标准输出。- 应用场景:常用于在脚本中向命令提供多行输入。比如,在一个脚本中需要向
mail -s "Subject" user@example.com << EOF
,然后在下面输入邮件内容,最后输入EOF
,这样就可以发送一封包含指定内容的邮件,而不需要在命令行中复杂地拼接邮件内容。管道和输入重定向的结合使用
- 示例和原理:可以先使用一个命令的输出作为另一个命令的输入,并且通过输入重定向改变第二个命令的输入源。例如,
ls -l | grep "txt" | sort < other_file.txt
。首先ls -l
列出文件的详细信息,grep "txt"
筛选出包含 “txt” 的行,然后sort
命令本应从标准输入获取内容进行排序,但在这里通过< other_file.txt
,让sort
命令从other_file.txt
文件中获取输入内容,最后将结果输出到标准输出。这种组合使用可以实现复杂的数据处理流程。
more指令
语法:more [选项][文件]
功能:more命令,功能类似cat
more 常用选项:
基本功能
more
是 Linux 系统中的一个分页查看工具,主要用于查看文本文件内容。当文件内容较多,一屏无法完全显示时,more
可以逐屏显示文件内容,方便用户阅读。基本语法
more [选项] 文件名称
- 例如,
more file.txt
用于查看文件file.txt
的内容。常用选项
- -d(--display-prompt)
- 作用:在屏幕底部显示更详细的提示信息,包括已显示的百分比、当前行号等,并且会提示用户如何操作(如按空格键继续,按
q
键退出等)。- 示例:使用
more -d file.txt
查看文件内容时,屏幕底部会显示类似 “--More--(XX%) [Press space to continue, 'q' to quit.]” 的提示信息,其中XX
表示已显示内容占文件总内容的百分比。- -f(--count-lines)
- 作用:计算逻辑行,而不是屏幕显示行。在处理包含很长行(可能会换行显示在屏幕上)的文件时,这个选项可以更准确地统计行数。
- 示例:如果一个文件中有一行很长的文本,在屏幕上被分成了多行显示,使用
more -f
选项查看时,会将这一长行当作一行来计数。- -l(--ignore-case)
- 作用:在搜索功能(使用
/
和?
进行搜索,后面会介绍)中忽略字母的大小写。- 示例:如果在文件中搜索单词 “HELLO”,使用
more -l
选项时,也会找到 “hello”、“Hello” 等不同大小写形式的相同单词。- -s(--squeeze-blank-lines)
- 作用:将连续的多个空白行压缩为一个空白行。这与
cat
命令中的-s
选项功能类似,都是为了使文件内容的显示更加紧凑。- 示例:当文件中有较多连续空白行时,使用
more -s
选项查看,可以减少空白行的显示数量。操作命令(在 more 界面中)
- 空格键(space)
- 作用:显示下一屏内容。这是最常用的操作,用于逐屏查看文件内容。
- 例如,当一屏内容显示完后,按空格键可以继续查看下一屏内容。
- 回车键(enter)
- 作用:显示下一行内容。如果只想逐行查看文件内容,而不是逐屏查看,可以使用回车键。
- 例如,当一行内容显示完后,按回车键可以查看下一行内容。
- / 字符串(search forward)
- 作用:在文件内容中向前(从当前位置开始往下)搜索指定的字符串。
- 示例:在查看文件时,按
/hello
,然后按回车键,more
会开始查找文件中首次出现 “hello” 这个单词的位置,并将其显示在屏幕上。- ? 字符串(search backward)
- 作用:在文件内容中向后(从当前位置开始往上)搜索指定的字符串。
- 示例:按
?world
,然后按回车键,more
会开始查找文件中在当前位置之前首次出现 “world” 这个单词的位置。- b(back)
- 作用:显示上一屏内容。
- 例如,当查看了几屏内容后,按
b
键可以返回上一屏查看。- q(quit)
- 作用:退出
more
查看界面。- 例如,当看完文件或者不想继续查看时,按
q
键可以退出more
less指令(重要)
基本功能
less
是一个功能强大的文本文件查看器,用于查看文件内容。与more
类似,它也可以分页显示文件内容,但功能更加强劲,支持更多的操作和导航方式,并且在查看大型文件时效率更高。基本语法
less [选项] 文件名称
- 例如,
less file.txt
用于查看文件file.txt
的内容。常用选项
- -N(--LINE-NUMBERS)
- 作用:在每行前面显示行号,方便用户引用和定位具体的行。
- 示例:如果查看一个代码文件
script.cc
,使用less -N script.cc
时,每一行代码前面都会显示行号,便于查找特定行的代码内容。- -S(--chop-long-lines)
- 作用:对于过长的行,只显示从行首开始的部分内容,并且在屏幕边缘截断,而不是换行显示。这样可以避免因为长行换行导致的屏幕混乱,更方便查看文件的整体结构。
- 示例:如果文件中有一行很长的文本,使用
less -S
查看时,这一行会在屏幕边缘截断,而不是换行显示多个屏幕宽度。- -i(--ignore-case)
- 作用:在搜索时忽略字符的大小写。这在不确定要搜索的内容的大小写或者希望搜索到所有大小写形式的同一单词时很有用。
- 示例:当在文件中搜索 “HELLO” 这个单词时,使用
less -i
选项也能找到 “hello”、“Hello” 等不同大小写形式的单词。- -m(--long-prompt)
- 作用:在屏幕底部显示更详细的提示信息,包括文件的当前位置(如已显示的百分比、当前行号和列号等)。
- 示例:使用
less -m
查看文件时,屏幕底部会显示类似 “Lines 1 - 10 of 100 (10%)” 的提示信息,表示当前显示的是文件的第 1 - 10 行,文件总共有 100 行,当前显示了 10% 的内容。操作命令(在 less 界面中)
- 空格键(space)或 Page Down 键(PgDn)
- 作用:显示下一屏内容,用于快速浏览文件。
- 例如,当查看一个长篇文档时,按空格键或 Page Down 键可以快速跳转到下一屏内容。
- 回车键(enter)
- 作用:显示下一行内容,适合逐行查看文件。
- 例如,在查看代码文件时,按回车键可以查看下一行代码。
- / 字符串(search forward)
- 作用:向前(从当前位置开始往下)搜索指定的字符串。搜索到第一个匹配项后,还可以按
n
键继续查找下一个匹配项,按N
键查找上一个匹配项。- 示例:在查看文件
report.txt
时,按/keyword
,然后按回车键,less
会开始查找文件中首次出现 “keyword” 这个单词的位置,并将其显示在屏幕上。如果想继续查找下一个 “keyword”,可以按n
键。- ? 字符串(search backward)
- 作用:向后(从当前位置开始往上)搜索指定的字符串。同样,搜索到后可以按
n
键查找下一个匹配项,按N
键查找上一个匹配项。- 示例:按
?term
,然后按回车键,less
会查找在当前位置之前首次出现 “term” 这个单词的位置。- b(back)或 Page Up 键(PgUp)
- 作用:显示上一屏内容,用于回退查看。
- 例如,当发现之前的内容有遗漏或者需要重新查看时,按
b
键或 Page Up 键可以返回上一屏。- g(go to beginning)
- 作用:跳转到文件的开头。
- 例如,在查看文件中间部分后,想重新从文件开头查看,按
g
键即可。- G(go to end)
- 作用:跳转到文件的结尾。
- 例如,想直接查看文件的最后部分,按
G
键就可以跳转到文件的末尾。- q(quit)
- 作用:退出
less
查看界面。- 例如,当查看完文件或者不想继续查看时,按
q
键可以退出less
head指令
基本功能
head
是 Linux 系统中的一个命令,主要用于查看文件开头的部分内容。它在快速浏览文件的起始部分(如查看文件头部的配置信息、日志文件的开头几条记录等)时非常有用。基本语法
head [选项] [文件名称]
- 例如,
head file.txt
用于查看文件file.txt
开头的内容。常用选项
- -n(--lines)
- 作用:指定要显示的行数。如果不使用这个选项,默认会显示文件开头的 10 行内容。
- 示例:
- 要查看文件
data.log
开头的 5 行内容,可以使用head -n 5 data.log
。- 也可以使用负数,例如
head -n -5 file.txt
,这表示显示除了最后 5 行之外的所有内容(从开头到倒数第 6 行),不过这种用法相对较少。- -c(--bytes)
- 作用:指定要显示的字节数。这在需要查看文件开头固定字节数的内容时很有用,比如查看文件头部的二进制数据。
- 示例:要查看文件
binary_file
开头的 100 字节内容,可以使用head -c 100 binary_file
。- -q(--quiet)或 --silent
- 作用:当查看多个文件时,不显示文件名标题。在默认情况下,
head
命令会在每个文件内容的前面显示文件名。- 示例:如果有文件
file1.txt
和file2.txt
,使用head -q file1.txt file2.txt
查看时,不会显示文件名标题,只会依次显示文件内容。- -v(--verbose)
- 作用:总是显示文件名标题,即使只查看一个文件。这与
-q
选项相反。- 示例:使用
head -v file.txt
查看文件file.txt
时,会显示文件名标题,然后再显示文件内容。使用示例
- 查看单个文件开头内容
- 示例:要查看
/etc/passwd
文件开头的 10 行内容(默认行为),可以使用head /etc/passwd
。- 如果只想查看
/etc/passwd
文件开头的 3 行内容,可以使用head -n 3 /etc/passwd
。- 查看多个文件开头内容
- 示例:假设有文件
log1.txt
、log2.txt
和log3.txt
,想要查看每个文件开头的 7 行内容,可以使用head -n 7 log1.txt log2.txt log3.txt
。在显示结果中,会先显示log1.txt
开头的 7 行内容,然后是log2.txt
开头的 7 行内容,最后是log3.txt
开头的 7 行内容,并且每个文件内容前会显示文件名(除非使用了-q
选项)。
tail指令
基本功能
tail
是 Linux 系统中的一个命令,主要用于查看文件末尾的部分内容。这在查看日志文件的最新记录、文件的最后几行数据等场景中非常有用。基本语法
tail [选项] [文件名称]
- 例如,
tail file.txt
用于查看文件file.txt
末尾的内容。常用选项
- -n(--lines)
- 作用:指定要显示的行数。如果不使用这个选项,默认会显示文件末尾的 10 行内容。
- 示例:
- 要查看文件
access.log
末尾的 20 行内容,可以使用tail -n 20 access.log
。- 也可以使用负数,例如
tail -n -5 file.txt
,这表示显示文件的最后 5 行内容。- -c(--bytes)
- 作用:指定要显示的字节数。这在需要查看文件末尾固定字节数的内容时很有用。
- 示例:要查看文件
binary_file
末尾的 50 字节内容,可以使用tail -c 50 binary_file
。- -f(--follow)或 -F(--follow=name)
- 作用:动态跟踪文件的末尾内容。
-f
选项用于跟踪文件描述符,而-F
选项用于跟踪文件名(更智能,能处理文件被删除或重命名等情况)。当文件内容有新的行添加到末尾时,tail
命令会实时更新显示。这在查看实时更新的日志文件时非常方便。- 示例:要实时跟踪
system.log
文件的更新,可以使用tail -f system.log
或者tail -F system.log
。- -q(--quiet)或 --silent
- 作用:当查看多个文件时,不显示文件名标题。默认情况下,
tail
命令会在每个文件内容的前面显示文件名。- 示例:如果有文件
file1.txt
和file2.txt
,使用tail -q file1.txt file2.txt
查看时,不会显示文件名标题,只会依次显示文件内容。- -v(--verbose)
- 作用:总是显示文件名标题,即使只查看一个文件。这与
-q
选项相反。- 示例:使用
tail -v file.txt
查看文件file.txt
时,会显示文件名标题,然后再显示文件内容。使用示例
- 查看单个文件末尾内容
- 示例:要查看
/var/log/messages
文件末尾的 10 行内容(默认行为),可以使用tail /var/log/messages
。- 如果只想查看
/var/log/messages
文件末尾的 3 行内容,可以使用tail -n 3 /var/log/messages
。- 查看多个文件末尾内容
- 示例:假设有文件
log1.txt
、log2.txt
和log3.txt
,想要查看每个文件末尾的 7 行内容,可以使用tail -n 7 log1.txt log2.txt log3.txt
。在显示结果中,会先显示log1.txt
末尾的 7 行内容,然后是log2.txt
末尾的 7 行内容,最后是log3.txt
末尾的 7 行内容,并且每个文件内容前会显示文件名(除非使用了-q
选项)。- 实时跟踪文件更新
- 示例:要实时查看服务器的
access.log
文件,以监控网站的访问情况,可以使用tail -f access.log
。当有新的访问记录写入access.log
文件时,会自动在终端显示新的内容。
时间相关的指令
data指令
- 基本概念
date
命令用于显示或设置系统的日期和时间。在 Linux 系统中,日期和时间的管理对于系统维护、日志记录等众多任务都非常重要。- 基本语法
- 显示日期和时间:
- 简单地输入
date
,会以默认格式显示当前日期和时间。例如,在我的系统上输出可能是Tue Nov 19 14:30:00 CST 2024
,其中Tue
是星期几(星期二),Nov
是月份(11 月),19
是日期,14:30:00
是时间,CST
是时区(中国标准时间)。- 设置日期和时间(需要管理员权限):
- 格式为
date -s "新日期和时间"
。例如,date -s "2024 - 11 - 20 10:00:00"
可以将系统日期和时间设置为 2024 年 11 月 20 日 10 点整。不过,这种方式在一些现代的 Linux 系统中可能会受到限制,因为系统时间通常是通过网络时间协议(NTP)自动同步的。- 日期时间格式控制
date
命令可以通过格式化选项来输出用户指定格式的日期和时间。格式字符串以+
开头,后面跟着各种格式控制符。- 例如:
%Y
:表示四位数的年份,如2024
。date +%Y
会只输出年份。%m
:表示月份,范围是 01 - 12。date +%m
输出两位数字的月份。%d
:表示日期,范围是 01 - 31。date +%d
输出两位数字的日期。%H
:表示小时,范围是 00 - 23(24 小时制)。date +%H
输出小时数。%M
:表示分钟,范围是 00 - 59。date +%M
输出分钟数。%S
:表示秒,范围是 00 - 59。date +%S
输出秒数。%A
:表示星期几的全称,如Tuesday
。date +%A
输出完整的星期名称。%a
:表示星期几的缩写,如Tue
。date +%a
输出缩写的星期名称。%B
:表示月份的全称,如November
。date +%B
输出完整的月份名称。%b
:表示月份的缩写,如Nov
。date +%b
输出缩写的月份名称。- 可以组合这些格式控制符来得到想要的日期和时间格式。例如,
date +"%Y-%m-%d %H:%M:%S"
会输出2024 - 11 - 19 14:45:00
这样的格式(具体时间根据执行时的实际时间而定)。- 时间戳相关操作
- 时间戳是从 1970 年 1 月 1 日 00:00:00 UTC 开始到指定时间所经过的秒数。
- 获取时间戳
- 可以使用
date +%s
来获取当前时间的时间戳。例如,输出可能是1700388000
(这个数字会随着时间不断变化)。- 从时间戳转换为日期时间格式
- 可以使用
date -d @时间戳
来将时间戳转换为日期时间格式。例如,date -d @1609459200
会输出对应的日期时间,这个时间戳对应的大概是 2021 年 1 月 1 日的日期时间(具体格式取决于系统的默认设置)。
date
命令在脚本编写、日志文件命名等场景中非常有用,通过合理地使用日期时间格式控制,可以方便地生成符合要求的日期和时间相关的文本。
Cal指令
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
find指令(重要)
- 基本概念
find
命令是 Linux 系统中非常强大的文件搜索工具。它可以根据各种条件(如文件名、文件大小、文件类型、文件权限等)在指定的目录及其子目录中查找文件。- 基本语法
- 基本格式为
find [路径] [选项] [表达式]
。- 例如
find / -name "*.txt"
,这个命令会在根目录(/
)下查找所有文件名以.txt
结尾的文件。其中/
是路径,表示从根目录开始查找;-name
是选项,用于指定文件名匹配的规则;"*.txt"
是表达式,这里表示文件名的匹配模式。- 常用选项
- 按文件名查找
-name
:精确匹配文件名,支持通配符。例如,find. -name "test.txt"
会在当前目录(.
)下查找名为test.txt
的文件。通配符*
代表任意字符序列,?
代表单个任意字符。-iname
:和-name
类似,但是不区分文件名的大小写。比如find /home -iname "README"
会在/home
目录及其子目录中查找文件名是README
、readme
、ReadMe
等(不区分大小写)的文件。- 按文件类型查找
-type
:用于指定文件类型。常见的文件类型参数有:
f
:表示普通文件。例如find /var -type f
会在/var
目录及其子目录中查找普通文件。d
:表示目录。如find. -type d
会在当前目录下查找所有的子目录。l
:表示符号链接。例如find /usr/bin -type l
会在/usr/bin
目录及其子目录中查找符号链接文件。- 按文件大小查找
-size
:用于根据文件大小查找文件。文件大小的单位有:
b
:表示字节(byte)。例如find. -size +100b
会查找当前目录及其子目录中大小大于 100 字节的文件。k
:表示千字节(kilobyte)。如find /tmp -size -10k
会查找/tmp
目录及其子目录中大小小于 10KB 的文件。M
:表示兆字节(megabyte)。例如find /home -size +5M
会查找/home
目录及其子目录中大小大于 5MB 的文件。- 按文件权限查找
-perm
:用于查找具有特定权限的文件。权限可以用数字表示或者符号表示。
- 用数字表示权限,例如
find. -perm 644
会查找当前目录及其子目录中权限为rw - r - - r - -
(用户可读可写,组用户可读,其他用户可读)的文件。- 用符号表示权限,如
find /etc -perm -u = rwx,g = rx,o = rx
会查找/etc
目录及其子目录中用户具有读写执行权限、组用户具有读执行权限、其他用户具有读执行权限的文件。- 逻辑操作符
- 与操作(
-a
)
- 可以组合多个条件。例如
find. -name "*.c" -a -type f
会在当前目录及其子目录中查找文件名以.c
结尾的普通文件。这表示同时满足文件名和文件类型这两个条件的文件才会被找到。- 或操作(
-o
)
- 例如
find / -name "*.log" -o -name "*.out"
会在根目录(/
)及其子目录中查找文件名以.log
结尾或者以.out
结尾的文件。- 非操作(
-not
或!
)
- 例如
find. -not -type d
会在当前目录及其子目录中查找不是目录的文件,也可以写成find.! -type d
。- 执行操作
find
命令还可以对找到的文件执行操作。例如find. -name "*.bak" -exec rm -rf {} \;
,这个命令会在当前目录及其子目录中查找文件名以.bak
结尾的文件,然后使用rm -rf
命令删除它们。其中{}
是一个占位符,表示找到的文件路径,\;
是-exec
选项的结束标志。在使用
find
命令时,因为它可能会遍历大量的文件和目录,所以在大型文件系统上使用时要谨慎,避免对系统性能产生过大的影响。
grep指令
基本概念
grep
是一个强大的文本搜索工具,全称为 “Global Regular Expression Print”(全局正则表达式打印)。它用于在文本文件(或标准输入)中查找包含特定模式的行,并将这些行打印出来。这个模式可以是简单的字符串,也可以是复杂的正则表达式。基本语法
grep [选项] '模式' [文件列表]
- 例如:
grep 'hello' file.txt
,这个命令会在file.txt
文件中查找包含 “hello” 字符串的行,并将这些行打印出来。如果不指定文件列表,grep
默认会从标准输入中获取内容进行查找。常用选项
- -i(忽略大小写)
- 例如:
grep -i 'HELLO' file.txt
会在file.txt
文件中查找包含 “HELLO”、“hello”、“hElLo” 等各种大小写组合的行。这在不关心文本大小写的情况下非常有用。- -v(反向查找)
- 用于查找不包含指定模式的行。例如:
grep -v 'error' log.txt
会在log.txt
文件中查找所有不包含 “error” 字符串的行。这对于过滤掉含有特定错误信息的日志行很有帮助。- -n(显示行号)
- 例如:
grep -n 'keyword' document.txt
会在document.txt
文件中查找包含 “keyword” 的行,并在每行的前面显示行号。这有助于快速定位文本中的特定内容。- -r(递归查找)
- 当需要在一个目录及其子目录下的所有文件中查找模式时非常有用。例如:
grep -r 'function' src/
会在 “src” 目录及其子目录下的所有文件中查找包含 “function” 的文件行。- -l(只列出文件名)
- 与 - r 结合使用时很方便。例如:
grep -rl 'import' python_modules/
会在 “python_modules” 目录及其子目录下的所有文件中查找包含 “import” 的文件,但是只列出文件名,而不是具体的行内容。正则表达式的使用
grep
可以使用正则表达式来进行更复杂的模式匹配。- 字符匹配
- 例如,
^
表示行的开头,$
表示行的结尾。grep '^start' text.txt
会查找以 “start” 开头的行;grep 'end$' text.txt
会查找以 “end” 结尾的行。.
表示任意一个字符。grep 'a.c' text.txt
会查找包含一个 “a”,接着一个任意字符,再接着一个 “c” 的行。- 重复匹配
*
表示前面的字符(或字符组)可以出现 0 次或多次。例如:grep 'ab*c' text.txt
会查找包含一个 “a”,接着可以有 0 个或多个 “b”,再接着一个 “c” 的行。+
表示前面的字符(或字符组)至少出现 1 次。例如:grep 'ab + c' text.txt
会查找包含一个 “a”,接着至少有 1 个 “b”,再接着一个 “c” 的行。- 字符组匹配
[]
用于定义一个字符组。例如:grep '[aeiou]' text.txt
会查找包含元音字母的行。可以在字符组中使用-
来表示范围,如grep '[a - z]' text.txt
会查找包含小写字母的行。与其他命令结合使用
- 与管道(
|
)结合
- 例如,
cat file1.txt | grep 'pattern'
,这个命令先使用cat
命令读取file1.txt
文件内容,然后通过管道将内容传递给grep
,让grep
查找包含 “pattern” 的行。这种方式在不直接将文件作为grep
的参数时很方便,比如对其他命令的输出结果进行过滤。- 与
find
命令结合
- 可以使用
find
命令找到文件,然后用grep
在这些文件中查找模式。例如:find. -type f -exec grep -l 'error' {} \;
,这个命令会在当前目录及其子目录下的所有普通文件中查找包含 “error” 的文件,并列出文件名。
zip/unzip指令
- 基本功能:
zip
命令用于将一个或多个文件和目录压缩成一个 ZIP 文件。它是一种常见的文件压缩工具,在 Linux 和其他操作系统中都广泛使用。- 语法格式:
zip [选项] 压缩文件名 文件或目录列表
。例如,zip archive.zip file1.txt file2.txt
会将file1.txt
和file2.txt
压缩到archive.zip
文件中。- 常用选项:
- -r(递归):用于压缩目录及其内容。如果要压缩一个目录,必须使用
-r
选项,否则只会压缩目录本身,而不会包括其中的文件和子目录。例如,zip -r dir_archive.zip my_directory
会将my_directory
及其所有子目录和文件都压缩到dir_archive.zip
文件中。- -q(安静模式):在压缩过程中不显示详细的压缩信息。如果不使用这个选项,
zip
命令会显示每个被压缩文件的文件名和压缩进度等信息。例如,zip -q archive.zip file1.txt
会默默地完成压缩操作。- -9(最大压缩比):指定使用最高的压缩比来压缩文件。不过,更高的压缩比通常意味着压缩过程会更慢。例如,
zip -9 archive.zip file1.txt
会以尽可能小的体积压缩文件。- 添加文件到已有的 ZIP 文件:可以使用
-u
选项来更新现有的 ZIP 文件,将新的文件添加进去。例如,已经有一个archive.zip
文件,现在想添加file3.txt
,可以使用zip -u archive.zip file3.txt
。- unzip 指令
- 基本功能:
unzip
命令用于解压 ZIP 文件,将其中的文件和目录还原到当前目录或指定的目录中。- 语法格式:
unzip [选项] 压缩文件名
。例如,unzip archive.zip
会将archive.zip
文件中的内容解压到当前目录。- 常用选项:
- -d(指定解压目录):用于指定解压后的文件存放的目录。例如,
unzip -d new_directory archive.zip
会将archive.zip
中的内容解压到new_directory
目录中。- -l(列出文件内容):只列出 ZIP 文件中的文件和目录列表,而不进行实际的解压操作。例如,
unzip -l archive.zip
会显示archive.zip
中包含的文件名、文件大小等信息。- -q(安静模式):在解压过程中不显示详细的解压信息。例如,
unzip -q archive.zip
会默默地完成解压操作。
tar指令(重要)
打包/解包,不打开它,直接看内容
基本介绍
tar
是在 Linux 和 Unix 系统中广泛使用的归档工具,用于将多个文件和目录打包成一个文件(归档文件),并且可以选择进行压缩。它的名字来源于 “tape archive”,最初是用于在磁带上备份文件。语法格式
- 基本语法为
tar [选项] [归档文件名] [文件或目录列表]
。例如,tar -cf archive.tar file1.txt file2.txt
会将file1.txt
和file2.txt
打包成一个名为archive.tar
的归档文件。常用选项
- -c(创建归档文件)
- 用于创建一个新的归档文件。必须指定要创建的归档文件名以及要包含在其中的文件或目录。例如,
tar -c -f my_archive.tar dir1/ dir2/ file1.txt
会将dir1
目录、dir2
目录和file1.txt
文件打包成my_archive.tar
归档文件。- -x(解压或提取归档文件)
- 用于从归档文件中提取文件和目录。例如,
tar -x -f my_archive.tar
会将my_archive.tar
中的文件和目录解压到当前目录。如果归档文件是经过压缩的,tar
会自动检测并解压。- -f(指定归档文件名)
- 这个选项必须紧跟在归档文件名之前。例如,
tar -c -f archive.tar
是正确的格式,而tar -c archive.tar
是错误的。- -t(列出归档文件内容)
- 用于查看归档文件中的内容,而不进行实际的解压操作。例如,
tar -t -f archive.tar
会列出archive.tar
中包含的文件和目录的名称。- -v(详细模式)
- 在创建或解压归档文件时,显示详细的操作过程,包括文件名、权限、用户和组等信息。例如,在创建归档文件时,
tar -cv -f archive.tar file1.txt
会显示类似file1.txt
的详细信息,如文件大小、权限等。- -z(使用 gzip 压缩或解压)
- 当创建归档文件时,
-z
选项会使用 gzip 对归档文件进行压缩,生成的文件扩展名为.tar.gz
或.tgz
。例如,tar -cz -f archive.tar.gz file1.txt
会将file1.txt
打包并使用 gzip 压缩。在解压时,tar -xz -f archive.tar.gz
会自动检测并解压.tar.gz
文件。- -j(使用 bzip2 压缩或解压)
- 与
-z
类似,但使用 bzip2 进行压缩或解压,生成的文件扩展名为.tar.bz2
。例如,tar -cj -f archive.tar.bz2 file1.txt
会将file1.txt
打包并使用 bzip2 压缩。解压时使用tar -xj -f archive.tar.bz2
。- -Z(使用 compress 压缩或解压)
- 这是使用较老的
compress
工具进行压缩或解压的选项,生成的文件扩展名为.tar.Z
。不过,compress
工具现在已经不太常用,因为 gzip 和 bzip2 提供了更好的压缩比和性能。例如,tar -cZ -f archive.tar.Z file1.txt
会将file1.txt
打包并使用compress
压缩。解压时使用tar -xZ -f archive.tar.Z
。
bc指令
- 基本运算
- 加法和减法:在
bc
的交互式环境下(通过在终端输入bc
命令进入),直接输入数字和运算符即可进行运算。例如,输入3 + 5
,按回车键后,会输出8
;输入7 - 4
,则会输出3
。- 乘法和除法:乘法使用
*
运算符,除法使用/
运算符。例如,4 * 6
会输出24
,10 / 2
会输出5
。对于小数运算也同样适用,如2.5 * 3
会输出7.5
,5.0 / 2
会输出2.5
。- 幂运算:使用
^
运算符进行幂运算。例如,2^3
(表示 2 的 3 次方)会输出8
;3.0^2.5
(3 的 2.5 次方)也能正确计算并输出结果。- 取模运算:使用
%
运算符进行取模运算,即计算余数。例如,7 % 3
会输出1
,因为 7 除以 3 的余数是 1。- 变量操作
- 定义变量:在
bc
中定义变量的格式为变量名=值
。例如,输入x = 10
就定义了一个名为x
的变量,其值为 10。变量名可以是由字母开头,包含字母、数字和下划线的组合。- 使用变量进行计算:定义好变量后,就可以在表达式中使用它们。例如,定义
y = 5
后,输入x + y
,会输出15
。变量的值可以重新赋值,如输入x = x + 1
,此时x
的值就变为11
。- 变量的作用域:在
bc
中变量是全局的,只要在同一个bc
会话中,定义的变量可以在后续的计算中一直使用。
uname指令
基本语法和功能
uname
命令用于打印系统信息。其基本语法是uname [选项]
。如果不加任何选项,默认会打印系统的内核名称(例如Linux
)。常用选项
- -a(全部信息)
- 这个选项会输出所有的系统信息,包括内核名称、主机名、内核版本号、内核版本、硬件平台和操作系统类型。
- 其中
Linux
是内核名称,myhost
是主机名,5.15.0 - 56 - generic
是内核版本号,#62 - Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022
是内核版本相关的详细信息,x86_64
是硬件平台(64 位 x86 架构),GNU/Linux
是操作系统类型。- -s(内核名称)
- 仅输出系统内核名称。在 Linux 系统中,使用
uname -s
会输出Linux
。这个选项和不使用任何选项时的默认输出一样。- -n(主机名)
- 用于输出系统的主机名。例如,如果主机名为
server1
,那么uname -n
会输出server1
。主机名是用于在网络或者本地系统中标识这台计算机的名称。- -r(内核版本号)
- 输出操作系统的内核版本号。如前面所讲,在不同的 Linux 发行版中,输出的格式可能不同,但都是用于标识内核版本的重要信息。例如
5.10.0 - 10 - amd64
等。- -v(内核版本)
- 输出系统内核版本,这个选项输出的内容比
-r
选项更详细,可能包括构建日期、构建者等信息。例如:
- 表示内核的这个版本是单处理器(SMP),构建时间是 2022 年 1 月 21 日 15:30:13 UTC。
- -m(硬件平台)
- 输出系统的硬件平台信息。在 x86_64 架构的计算机上,
uname -m
会输出x86_64
,表示 64 位的 x86 架构。如果是 32 位的系统,可能会输出i386
或i686
等,而在 ARM 架构的设备上会输出armv7l
或aarch64
等,具体取决于 ARM 的架构版本。- -p(处理器类型)
- 用于输出处理器类型。不过这个选项的输出可能因系统而异,在一些系统中可能和
-m
(硬件平台)输出相同的信息,在其他系统中可能会提供更详细的处理器相关内容,如处理器品牌和型号等。- -i(硬件平台别名)
- 输出硬件平台的别名。这个选项在某些特定的系统配置或者硬件环境下可能会有用,不过在一般的桌面和服务器 Linux 系统中,使用频率相对较低。
- -o(操作系统类型)
- 输出操作系统类型。在 Linux 系统中,
uname -o
会输出GNU/Linux
,表示这是一个基于 Linux 内核并且使用 GNU 工具集的操作系统。在其他类 Unix 系统中,可能会输出不同的操作系统类型,如Solaris
、FreeBSD
等。
shutdown指令
立即关机
- 指令:
shutdown -h now
或halt
或poweroff
。- 解释:
shutdown -h now
是使用shutdown
命令来实现立即关机。其中-h
选项表示让系统停机(halt),now
表示立刻执行。halt
命令直接停止系统运行,它在功能上类似于shutdown -h now
,不过halt
没有像shutdown
那样复杂的时间和警告信息设置选项。poweroff
命令用于关闭计算机电源。它和halt
的主要区别在于,poweroff
更强调切断电源,而halt
可能只是停止系统运行,在某些硬件和 BIOS 设置下,电源是否切断会有所不同。延迟关机
- 指令:
shutdown -h [+时间]
。- 解释:
- 例如,
shutdown -h +10
表示系统将在 10 分钟后关机。这里的+
表示从现在开始计算的延迟时间,时间单位通常是分钟。在关机之前,系统会向所有已登录的用户发送关机警告信息,提醒他们保存工作并退出。立即重启
- 指令:
shutdown -r now
或reboot
。- 解释:
shutdown -r now
是通过shutdown
命令来立即重启系统,其中-r
选项表示重启(reboot)。reboot
命令是一个更简洁的方式来实现立即重启系统,它直接重启计算机,不需要额外的参数来指定时间等信息。延迟重启
- 指令:
shutdown -r [+时间]
。- 解释:
- 例如,
shutdown -r +20
表示系统将在 20 分钟后重启。和延迟关机类似,在重启之前也会向登录用户发送警告信息。取消关机或重启计划
- 指令:
shutdown -c
。- 解释:
- 当使用
shutdown
命令设置了关机或重启计划后,如果需要取消这个计划,可以使用shutdown -c
。例如,已经执行了shutdown -h +30
(计划 30 分钟后关机),在这 30 分钟内可以使用shutdown -c
来取消关机操作。
alias
在 Linux 系统中,
alias
是一个非常有用的命令,主要用于为命令或命令序列创建别名。以下是其详细用法:1. 创建别名
基本语法:
alias [别名]= '[命令]'
例如,如果你经常使用
ls -l
命令来查看文件的详细信息,你可以为它创建一个别名。在终端中输入:alias ll='ls -l'
。之后,当你在终端输入ll
时,系统就会执行ls -l
命令,这样可以节省输入时间。你还可以创建更复杂的别名。比如,要创建一个别名来更新系统软件包列表并且升级已安装的软件包(对于基于 Debian 或 Ubuntu 的系统,对应的命令是
apt - get update && apt - get upgrade
),可以使用以下命令:alias update_system='sudo apt - get update && sudo apt - get upgrade'
。注意,这里的sudo
是为了获取足够的权限来执行软件更新操作。2. 查看已定义的别名
- 只输入
alias
命令(不带任何参数),系统会列出当前所有已定义的别名。例如:$ alias alias ll='ls -l' alias update_system='sudo apt - get update && sudo apt - get upgrade'
- 这些别名会在当前的终端会话环境中一直有效,直到你关闭终端或者删除这些别名。
3. 删除别名
- 语法为
unalias [别名]
。例如,如果你想删除之前创建的ll
别名,可以在终端中输入unalias ll
。之后再输入ll
,系统就会提示找不到该命令。4. 在配置文件中定义别名(使其永久生效)
- 对于 Bash(大多数 Linux 发行版默认的 Shell),可以将别名定义放在用户主目录下的
.bashrc
文件中。例如,使用文本编辑器(如vi
或nano
)打开.bashrc
文件,在文件末尾添加别名定义,如alias mycommand='command - options'
。- 修改完
.bashrc
文件后,需要让更改生效。可以在终端中输入source ~/.bashrc
或者重新打开一个新的终端窗口。这样,每次打开终端时,这些别名都会自动生效。需要注意的是,别名只是一种方便用户操作的方式,它在一定程度上可以提高工作效率,但也要注意不要创建过多复杂的别名,以免造成混淆。同时,在共享的系统环境中,也要考虑到其他用户的使用习惯。