目录
- 指令介绍
指令介绍
1.1 pwd
pwd来查看当前目录
1.2 ls指令
ls [选项][目录或文件]
对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息
-a 列出目录下的所有文件,包括以
.
开头的隐含文件。-l 列出文件的详细信息。
- 以
.
和..
开头的文件是隐藏目录,任何目录下都会有 ,-a可以进行查看
- 以
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
不会列出其下的任何子目录或文件
-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-n 用数字的 UID,GID 代替名称。 (介绍 UID, GID)
-F 在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;“=”表示套接字(sockets)。(目录类型识别)
-r 对目录反向排序。
-t 以时间排序。
-s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)
-R 列出所有子目录下的文件。(递归)
-1 一行只输出一个文件。
1.3 cd指令
语法:cd 目录名
改变工作目录。将当前工作目录改变到指定的目录下
cd ..
: 返回上级目录cd ~
:进入用户家目cd -
:返回最近访问目录
家目录的名称通常与用户的用户名相对应,并位于特定的高级目录下。例如,在标准的Linux系统中,家目录通常位于/home
目录下(如用户john
的家目录通常是/home/john
),而在macOS中,它们通常位于/Users
目录下(如用户john
的家目录会是/Users/john
)。对于root用户(超级用户),家目录通常是/root
。
路径
绝对路径:
- 绝对路径是从文件系统的根目录(在UNIX/Linux系统中是
/
(路径分隔符),在Windows系统中通常是某个盘符如C:\
)开始的完整路径,它详尽地指出了文件或目录的位置,不管当前位置在哪里。 - 绝对路径总是以同一种方式解析,它不依赖于当前工作目录或者程序的运行上下文。
- 例如,在Linux系统中,
/home/user/documents/report.txt
是一个绝对路径,它明确指向了/home/user/documents
目录下的report.txt
文件。
相对路径:
- 相对路径是相对于当前工作目录的路径。换句话说,它根据当前的位置来指定目标文件或目录的位置。
- 相对路径可能包括
./
表示当前目录,../
表示上一层目录。它们通常比绝对路径短,并且可以在当前工作目录改变时保持不变(只要相对关系没变)。 - 例如,如果当前的工作目录是
/home/user/documents
,则可以使用相对路径./report.txt
来引用同一目录下的report.txt
文件,或者使用../pictures/image.jpg
来引用上一级目录中pictures
目录下的image.jpg
文件
路径必须具有唯一性,任何一个文件都只有一个父目录,访问任何文件前都得先找到这个文件
指令本质都是程序—指令、程序、可执行程序都是一回事。指令就是程序 --安装和卸载是在做什么呢?
把可执行程序拷贝/删除到系统路径下
which指令
which pwd 打印出系统所在的路径
alias
alias指令作用是给其他命令起别名
ll就是ls -l的别名
ls 直接执行的时候,带颜色
1.4 touch指令
语法:touch [选项]… 文件…
touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件
- -a 或–time=atime或–time=access或–time=use只更改存取时间。
- -c 或–no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m 或–time=mtime或–time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间
在当前路径下创建一个普通文件
stat 指令
我们可以看见更详细的内容
1.5 mkdir指令(重要)
语法:mkdir [选项] dirname…
功能:在当前目录下创建一个名为 “dirname”的目录
这个蓝色的list就是新的目录
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
tree指令
以树状结构形式打印出目录结构
第一次是找不到这个执行命令的
yum -y install tree
进行安装
ctrl + c
终止异常的命令
1.6 rmdir指令 && rm 指令
rmdir 它只能删除空目录
rm命令可以同时删除文件或目录
语法:rm [-f-i-r-v][dirName/dir]
适用对象:所有使用者
功能:删除文件或目录
-f 即使文件属性为只读(即写保护),亦直接删除
-i 删除前逐一询问确认
-r 删除目录及其下所有文件
root账号下,它每次会进行询问,y代表yes,n代表no
一旦有不确定的目录或者文件,宁可备份,不可删除
*
*:表示一个通配符,匹配任意文件名
1.7 man指令(重要)
man
是 Linux 和 UNIX 系统中一个常用的命令,用于查看手册页面(manual pages)。手册页面是系统中大多数命令、程序、配置文件格式和通常的编程库函数的文档。手册页面提供了详细的用户级的文档,有助于用户了解如何使用这些命令和工具。
要使用 man
命令,可以在命令行终端输入 man
后跟你想了解相关信息的命令或程序名称。例如:
man ls
以上命令将显示 ls
命令的手册页面,其中包含了关于如何使用 ls
以及它的各种选项的信息。
手册页面被分为几个不同的部分,以便于查找和浏览:
- 可执行程序或者 shell 命令
- 系统调用(内核提供的函数)
- 库调用(程序库中的函数)
- 特殊文件(通常在 /dev 下的设备文件)
- 文件格式与约定(例如 /etc/passwd)
- 游戏等杂项
- 宏包和约定(例如 man 文档格式)
- 系统管理员命令(通常只能由 root 用户执行)
- 内核例程(非标准)
如果你想查看某个特定部分的手册页面,可以指定部分的数字。例如,要查看 printf
程序的手册页(通常是第 1 部分),可以输入:
man 1 printf
而查看 printf
C 库函数的手册页(第 3 部分),则可以输入:
man 3 printf
还有一些有用的选项,可以用在 man
命令中:
-k
: 搜索手册页的简短描述,对于不知道准确命令的情况很有用。-f
: 相当于whatis
命令,显示命令的简短描述。
手册页对于新学习和使用 Linux 系统的用户来说是极其有用的资源,因为它们包含了所有命令的官方文档。在实践中,经常使用 man
命令可以更好地了解使用的工具和服务。
yum -y install man-pages
1.8 cp指令(重要)
cp
是 Linux 和 Unix 系统中使用的一个基本命令,用于复制文件和目录。这个命令的一般语法如下:
cp [options] source destination
source
是要复制的文件或目录的路径。destination
是要将文件或目录复制到的路径。
如果 destination
是一个已经存在的目录,那么 source
文件会被复制进这个目录,并且保留原文件名。如果 destination
是一个文件名(在当前目录下不存在这个名字的文件),那么 source
文件会被复制并重命名为 destination
。如果将多个文件复制到一个目录,需要在命令的最后指定目标目录。
以下是一些常用的 cp
命令选项:
-i
: 询问用户在覆盖已存在的目标文件之前是否继续。-r
或-R
: 递归地复制目录及其内容。-v
: 显示详细信息,展示文件复制的过程。-p
: 保持原文件的属性(权限、时间戳)。-a
: 归档模式,复制目录及其全部内容,同时保持属性和符号链接等。-f
: 强制复制,如果目标文件已经存在,不提示用户即删除原文件。--preserve
: 保留指定的文件属性(如:所有权、时间戳),类似-p
。--no-preserve
: 不保留指定的文件属性。--backup
: 在覆盖文件之前为其创建备份。
这里有一些 cp
命令的示例:
- 将单个文件复制到另一个目录中:
cp file.txt /path/to/directory/
- 将文件复制到当前目录中的另一个名称:
cp file.txt newfile.txt
- 递归地复制一个目录及其所有内容:
cp -R /path/to/source/directory /path/to/destination/directory
- 在覆盖目标文件之前询问用户:
cp -i file.txt /path/to/directory/
- 复制文件时显示详细信息:
cp -v file.txt /path/to/directory/
把file.txt拷贝到上级目录并改名为1234.txt
Linux中同一个目录下,不允许存在同名文件
1.9 mv指令(重要)
mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录
它的语法如下:
mv [options] source destination
source
是要移动或重命名的文件或目录的路径。destination
是文件或目录的新位置或名称。
如果 destination
是一个存在的目录,source
文件会被移动到这个目录中,并保持原文件名。如果 destination
是一个文件名,并且不存在与其相同名称的文件,source
文件或目录会被重命名为 destination
。如果命令中包含了多个 source
参数,那么最后的 destination
必须是一个已存在的目录。
以下是一些 mv
命令的选项:
-i
: 在覆盖目标文件之前提示用户确认。-u
: 仅当源文件比目标文件新,或者目标文件不存在时,才移动文件。-v
: 显示详细的操作信息,包括每次移动的文件。-f
: 强制移动文件,无视目标位置的文件是否存在,不提示用户。--no-clobber
: 不会覆盖目标目录中已存在的文件。
这里有一些 mv
命令的使用示例:
将文件重命名:
mv old_name.txt new_name.txt
将文件移动到另一个目录:
mv file.txt /path/to/directory/
将目录重命名:
mv old_directory_name new_directory_name
在覆盖目标文件之前询问用户:
mv -i file.txt /path/to/directory/
移动一个目录到另一个目录中:
mv /path/to/source_directory /path/to/destination_directory/
mv
命令非常高效,因为它没有实际移动文件数据本身,而只是更新了文件系统中的索引,除非是跨文件系统移动。若要查看 mv
命令的完整文档和可用的选项,可以使用 man mv
来查看其手册页。
将xuan.txt移入0623并改名为abcd.txt
快速写出代码
cat本质就是查看文件内容
-n 打印出行号
1.10 重定向
在 Unix 和类 Unix 系统中,包括 Linux,在命令行中,重定向(Redirection)是一种将命令的输出发送到除了标准输出(屏幕)以外的其他位置(如文件或另一个程序)的方法。它还可以用于从文件或程序而不是键盘获取输入。以下是几种重定向操作的基本介绍:
标准输出重定向(STDOUT)
- 使用
>
符号可以将命令的输出重定向(原本要打印到显示屏上,现在重定向到文件中)到文件中,如果文件已经存在,则会覆盖文件的内容。例如,将ls
命令的输出保存到list.txt
文件中:ls > list.txt
- 使用
>>
符号可以将内容附加到文件中,而不是覆盖它。例如,将追加ls
命令的输出到list.txt
文件中:ls >> list.txt
标准错误重定向(STDERR)
- 使用
2>
符号可以将命令的错误输出重定向到文件中。例如,将ls
对于不存在的文件的错误信息保存到errors.txt
:ls file_not_found 2> errors.txt
- 使用
2>>
符号可以将错误信息附加到文件中。例如:ls file_not_found 2>> errors.txt
标准输入重定向(STDIN)
- 使用
<
符号可以使用文件内容作为命令的输入。例如,将file.txt
的内容作为grep
命令的输入:grep 'some_text' < file.txt
同时重定向标准输出和标准错误
- 使用
&>
或>&
符号可以同时重定向标准输出和错误输出到同一个文件中。例如:
或者ls > all_output.txt 2>&1
ls &> all_output.txt
使用特殊文件 /dev/null
/dev/null
是一个特殊文件,它会丢弃所有写入其中的数据(称为位桶)。将输出重定向到/dev/null
就像是将输出丢弃掉了:ls > /dev/null
使用重定向时,需要注意文件权限和已有内容可能被覆盖的问题。使用这些技巧可以在脚本中进行高级的数据流控制,或在日常使用命令行时更有效率地处理输出和输入。
我们可以直接用下面的方式创建新文件
>file.txt
所以,echo本身是写在显示器的文件中,现在输出或追加到新的文件中,重定向
cat 后面不接任何东西,默认从键盘文件读取内容,输入重定向从文件中读取内容
1.11 less指令
i=1; while [ $i -le 10000 ]; do echo "hello worle $i"; let i++; done > big.txt
我们构建一个大文件
- less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。
- less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
- 但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!
- 除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜
语法: less [参数] 文件
less与more类似,但使用less可以随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
head和tail指令
如果我现在只想拿到开头的一点信息,我只需要用head指令即可:
tail指令提取文件的结尾
规定取五行
如果现在要取文件的8000到8010这十行呢?
方法一:我们先将前8010行提取到一个新文件中再取尾
方法二:|
这个竖划线符号,我们称为管道
Linux中的管道(pipe)是一种强大而常用的特性,它允许你将一个命令的输出直接作为下一个命令的输入。这使得你可以将多个简单的工具组合在一起,完成复杂的任务。管道在Linux命令行中使用竖线符号(|
)表示。
下面是一些常用管道的例子:
基本示例:将
ls
命令的输出通过管道传递给grep
,以过滤出包含特定字符串的文件或目录。ls | grep 'pattern'
逐层处理:将
ps
命令的输出通过管道传递给grep
,然后再通过sort
排序。ps aux | grep 'some_process' | sort
与其他命令结合:将
cat
命令的输出通过管道传递给awk
,处理文本数据。cat file.txt | awk '{ print $1 }'
多层管道:将多个命令连接在一起进行复杂的处理。
dmesg | grep 'keyword' | less
- 统计数据:使用
wc
命令统计文件内容的行数、单词数和字符数。cat file.txt | wc -l
- 重定向和管道结合:可以将命令的输出通过管道传递并重定向到文件。
ls -l | grep 'pattern' > output.txt
通过管道,可以有效地组织和处理数据,减少手动操作,提升效率。熟练使用管道是成为Linux命令行高手的关键之一
1.12时间相关的指令
date显示
date 指定格式显示时间: date +%Y:%m:%d
date 用法:date [OPTION]… [+FORMAT]
1.在显示方面,使用者可以设定欲显示的格式,格式设定为一个加号后接数个标记,其中常用的标记列表如下
- %H : 小时(00…23)
- %M : 分钟(00…59)
- %S : 秒(00…61)
- %X : 相当于 %H:%M:%S
- %d : 日 (01…31)
- %m : 月份 (01…12)
- %Y : 完整年份 (0000…9999)
- %F : 相当于 %Y-%m-%d
2.在设定时间方面
- date -s //设置当前时间,只有root权限才能设置,其他只能查看。
- date -s 20080523 //设置成20080523,这样会把具体时间设置成空00:00:00
- date -s 01:01:01 //设置具体时间,不会对日期做更改
- date -s “01:01:01 2008-05-23″ //这样可以设置全部时间
- date -s “01:01:01 20080523″ //这样可以设置全部时间
- date -s “2008-05-23 01:01:01″ //这样可以设置全部时间
- date -s “20080523 01:01:01″ //这样可以设置全部时间
3.时间戳
- 时间戳(Timestamp)是一种用于记录事件发生的特定时间点的数据。在计算机和信息技术领域,时间戳通常以特定的格式表示日期和时间,可以精确到秒或毫秒。这些时间信息可以用于多个目的,包括事件记录、数据同步、日志记录、版本控制等
时间->时间戳:date +%s
时间戳->时间:date -d@1508749502
Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒
例如,Unix时间戳 1633096800 对应于2021年10月1日00:00:00
1.13 cal指令
cal命令可以用来显示公历(阳历)日历
-3 显示系统前一个月,当前月,下一个月的月历
-j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
-y 显示当前年份的日历
1.14 find指令(重要)
find
是一个强大和灵活的命令,用于在Linux文件系统中搜索文件和目录。它能够按多种条件搜索文件,并对找到的文件执行操作。下面是一些 find
基本用法和常见示例:
基本用法
find [搜索路径] [搜索条件] [操作]
常用选项和条件
-name [名称]
:按名称搜索(支持通配符)。-iname [名称]
:按名称搜索(忽略大小写,支持通配符)。-type [类型]
:按文件类型搜索(文件:f
,目录:d
,符号链接:l
)。-size [大小]
:按文件大小搜索(如+100M
表示大于100MB的文件)。-mtime [天数]
:按修改时间搜索(如-mtime -7
表示7天内修改的文件)。-atime [天数]
:按访问时间搜索。-ctime [天数]
:按创建时间搜索。-exec [命令] \;
:对找到的文件执行指定命令。-delete
:删除找到的文件(使用时需谨慎)。
示例
在当前目录及其子目录中按名称搜索文件:
find . -name "filename.txt"
在指定目录中模糊匹配名字(忽略大小写):
find /path/to/search -iname "*.txt"
搜索大于100MB的文件:
find / -size +100M
搜索类型为目录的文件:
find /path/to/search -type d
搜索最近7天内修改过的文件:
find /path/to/search -mtime -7
搜索并执行命令(如删除文件):
find /path/to/search -name "*.tmp" -exec rm {} \;
搜索并重定向结果到文件:
find /path/to/search -name "*.log" > log_files.txt
按权限搜索文件:
find /path/to/search -perm 644
高级用法
利用 find
可以组合使用多个条件,如逻辑操作符 -and
(默认)、-or
和 -not
:
# 查找目录中修改时间在7天内并且文件名包含 ".log" 的文件 find /path/to/search -mtime -7 -name "*.log" # 查找目录中名字为 ".log" 或 ".txt" 的文件 find /path/to/search \( -name "*.log" -or -name "*.txt" \) # 查找目录中文件名不包含 ".bak" 的文件 find /path/to/search -not -name "*.bak"
通过结合多种条件和操作,find
命令可以实现几乎任何文件搜索需求,成为Linux系统中极为重要的工具。系统管理员和开发人员通过熟练掌握 find
可以有效提高工作效率,执行复杂的文件操作。
1.15 grep指令
语法: grep [选项] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行
1.16 zip/unzip指令
zip
和 unzip
是Linux系统中常用的压缩和解压缩工具。它们分别用来创建和解压缩ZIP格式的压缩文件。
使用 zip
创建压缩文件
基本用法
zip [选项] 压缩文件名.zip 要压缩的文件或目录
常用选项
-r
:递归地压缩目录中的文件。-x
:排除特定文件。-9
:使用最佳压缩方法(范围从-0
到-9
,数字越大压缩比越高但速度越慢)。-q
:安静模式,不显示压缩过程中的信息。-e
:对压缩文件进行加密。
示例
压缩单个文件:
zip archive.zip file.txt
递归压缩目录:
zip -r archive.zip directory/
高压缩比压缩文件:
zip -9 archive.zip file.txt
排除目录中的某些文件:
zip -r archive.zip directory/ -x "*.tmp"
创建加密的压缩文件:
zip -e archive.zip file.txt
使用 unzip
解压缩文件
基本用法
unzip [选项] 压缩文件名.zip
常用选项
-d
:指定解压缩目录。-n
:若文件已存在,不覆盖。-o
:若文件已存在,覆盖。-q
:安静模式,不显示解压缩过程中的信息。-l
:列出压缩文件中的内容而不解压。
示例
解压缩文件到当前目录:
unzip archive.zip
解压缩到指定目录:
unzip archive.zip -d /path/to/destination/
若文件已存在,不覆盖:
unzip -n archive.zip
覆盖已存在的文件:
unzip -o archive.zip
列出压缩文件中的内容而不解压:
unzip -l archive.zip
结合zip
和 unzip
你经常可能会在脚本中组合使用这两个命令。例如,你可能需要先压缩当前目录下的文件,然后在另一台机器解压缩:
# 在当前目录下创建一个压缩文件 zip -r backup.zip /path/to/data # 传输 backup.zip 到另一台机器后,在目标机器解压 unzip backup.zip -d /path/to/extract/
通过熟练掌握 zip
和 unzip
命令,你可以方便、快捷地处理文件压缩和解压缩,提高工作效率。