一、Linux基本指令
ls指令
ls [选项] [目录/文件夹];
对于目录时,该指令会列出这个目录下的所有子目录与文件;
对于文件时,该指令会列出文件名及其他信息。
其中ls有其对应的选项:
- -a:列出该目录下的所有文件,包括以 . 开头的隐藏文件
- -d:将目录像文件一样显示,而非显示该目录下的文件
- -i:输出文件的i节点的索引信息
- -k:以k字节的形式表示文件的大小
- -l:列出文件的详细信息,比如文件的类型属性
- -n:用数字UID,GID代替名称
- -F:在每个文件名后面加上一个字符说明该文件的类型,(* 表示可执行文件,/ 表示目录,@ 表示符号链接,| 表示FIFOs)
- -r:对目录反向排序
- -t:以时间排序
- -s:在|文件名后输出该文件的大小
- -R:列出所有子目录下的文件
- -1:一行只输出一个文件
pwd指令
pwd:显示用户当前所在的目录(该指令简单,没有复杂的选项)。
cd指令
cd 目录名;
改变工作目录,将当前的目录改到指定的目录下。
- cd.. :返回上级目录
- cd~ :返回用户家目录
- cd- :返回最近访问的目录(这个操作就像windows不同页面的切换:tab+alt)
注意:/ home / asy / Linux —— 绝对路径
../asy/Linux —— 相对路径
touch指令
touch [选项] 文件名;
touch指令的参数可以更改文档或目录的日期时间,或者创建一个文件;
- -a:只更改存取时间
- -c:不建立任何文档
- -d:使用指定的日期时间
- -f:此参数忽略,不予处理
- -m:只更改变动时间
- -r:把指定文档或目录的日期时间统一设置和参考文档或目录的日期时间相同
- -t:使用指定的的日期时间
mkdir指令
mkdir [选项] dirname;
在当前目录下创建一个名为dirname的目录
-p:可以是一个路径名称;如果这个路径名称的某些目录不存在,加上此选项后系统会 自动创建不存在的目录,也就是说一次可以创建多个目录。
rmdir/rm指令
rmdir与mkdir相对应,前者删除目录,后者创建目录。
rmdir [-p] [dirname];
-p :当前子目录被删除后,若父目录变为空目录,在父目录也会被删除。
rm指令可以同时删除文件或目录。
rm [选项][dirname/dir];
- -f :即使文件的属性为只读,也会被删除(强力删除);
- -i :删除前逐一询问;
- -r :删除目录及其下所有文件;
接下来逐一介绍以上指令的基本使用:
首先使用pwd指令查看我所在的目录,
可以看到,当前目录下没有任何内容,我开始创建目录及文件:
如上图:使用mkdir创建一个连续的目录,这就要使用到mkdir指令的-p选项;
使用cd指令进入到2023-11-19目录中 ,这是相对路径;
若是 cd/home/asy/Linux/2023-11-19 ,这是绝对路径。
接下来,我简单的创建一个文件夹,输出“Hello World”
在2023-11-19目录下创建文件test.c用于代码的编写;
输入:nano test.c + “回车” 即可进入页面,编写完成后,“ctrl+x”保存,“回车”退出;
结果如下:通过gcc编译后生成了a.out的文件,在Linux中,这是一个可执行的文件
而 ./a.out 表示从当前目录下执行这个文件。
如上图,ls指令的不同选项下,执行结果是不一样的,这里就不再赘述,-n表示用数字代替名称,其实在Linux中用户的名字使用数字代替的,因此每个用户都有自己的数字。
接下来演示删除等操作:
如上图,当前我在2023-11-19这个文件夹下,当我使用rmdir删除2023-11-19时,系统就会 报错:因为rmdir会在2023-11-19这个文件夹下找2023-11-19,显然这是错误的操作。只有返回到上一级目录下删除才是正确的。
在Linux文件夹下删除时,又会发现,报错“Directory not empty”:因为rmdir只能删除空文件夹,因此也会报错。
在我使用rm指令删除2023-11-19文件夹下的test.c文件后再删除,此时就不会再报错。
man指令
man [语法] 命令;
man指令一般用来查询手册,如下图,在Linux中输入以下代码:
man printf
就会出现printf的详细用法。
cp指令
cp [选项] 源文件/目录 目标文件/目录;
- -f:强制复制文件或目录,不论目的文件或目录是否存在;
- -i:覆盖文件之前先询问用户;
- -r:递归处理,将指定目录下的文件与子目录一并处理;
cp指令的在于对文件/目录的复制:
- 如果要拷贝的是文件且与目标文件在相同路径下,那么拷贝文件名称不能相同;
- 如果要拷贝的是目录,则需要加-f强制复制;
如上图所示,我在dir1路径下创建文件test2.txt,在通过cp指令对其进行相同路径下的复制,注意这里的因为在相同路径下,所以复制文件名称不能相同。
如上图所示,使用cp指令复制dir2目录生成dir3。
mv指令
mv [选项] 源文件/目录 目标文件/目录;
作用:用来移除文件或者修改文件名;
- -f:目标文件已经存在,不会询问,直接覆盖;
- -i:目标文件已经存在时,则会询问是否覆盖;
如上图,使用mv指令将test1.txt改名为test-bak.txt;
如上图,使用mv指令将dir3文件夹中的test4-bak.txt文件移动到dir1文件夹中,从代码结果中可以看出,dir3中的test4-bak.txt文件出现在dir1中。
如上图,使用mv指令将dir3文件中的dir2文件夹移动到dir1中。
cat/tac指令
cat [选项] 文件;
- -b:对非空输出行编号;
- -n:对输出的所有行编号;
- -s:不输出多行空行;
如上图,使用cat指令按顺序查看文件的内容,而tac则倒叙显示文件的内容;但是一般来说这个指令并不适合多行多行内容的文件,若文件有10000行,则屏幕无法显示完全。
使用cat指令还可以实现快速复制,直接输入cat后,在屏幕中输入什么字符串,就会显示什么字符串。
more/less指令
more [选项] [文件];
- -n:对输出的所有行进行编号;
- q:退出more指令;
less [参数] 文件
more的功能是显示的内容刚好可以沾满整个屏幕,按住回车键可以向下浏览;而less的功能与more相似,但是less支持任意浏览,使用pagedown/pageup上下浏览。
head/tail指令
head [参数] [文件];
head显示文档开头的数据,默认是显示10行,在参数一栏可以设置;
tail [必要参数] [选择文件] [文件]
如上图,使用head/tail参数时,默认都是显示10行,使用参数可以调整显示行数。
如上图,使用head和tail指令查看文件中固定行数的内容,这里涉及到“管道通信”。
grep指令
grep [选项] 目标字符串 文件;
- -i:忽略目标字符串的大小写;
- -n:标记行号;
- -v:反向选择;
在目标文件中搜索字符串,并将行打印出来:
echo指令
使用echo指令可以将字符串直接显示在屏幕上;
可以通过“输出重定向”使该字符串保存在文件中;
通过“追加重定向”使字符追加在文件中。
zip/unzip指令
zip [-r] 压缩文件 源文件;
-r:表示递归处理,将指定目录下的所有文件和子目录一并处理,在下面的这个代码演示中,test1文件夹下的所有文件会被一并压缩。
unzip 压缩文件 [选项] 目标目录;
-d:表示解压到指定文件夹下面。
如上图,压缩和解压缩的操作示范,注意上述代码中-r的使用。
如上图,在解压操作时,使用-d选项将文件解压到指定的文件夹下面。
tar指令
tar [选项] 压缩文件 文件;
- -c:建立一个压缩文件的参数指令;
- -x:解开一个压缩文件的参数指令;
- -f:指定文件名;
- z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -C : 解压到指定目录;
z表示压缩,f表示指定文件名,x表示解压缩