目录
Ⅰ.Linux环境下的热键
1.复制粘贴
在Windows环境下,对于复制粘贴我们常常使用ctrl+c/ctrl+v,但是这在Linux环境中是不适用的,而在我所使用的xshell软件中,使用ctrl+insert来进行复制,使用shift+insert来进行粘贴。
2.命令补全
在输入一些命令后,双击tab键就能自动补齐命令,如果不止一个命令则会显示所有命令
3.强制退出
在一些时候,程序运行到无法停止时,可以使用ctrl+C键强制停止
4.退出&键盘输入结束
可以直接使用ctrl+d来代表exit
Ⅱ.Linux的基础指令
1.ls
-a 列出目录下的所有文件,包括以 . 开头的隐含文件。-d 将目录象文件一样显示,而不是显示其下的文件。 如: ls –d 指定目录-i 输出文件的 i 节点的索引信息。 如 ls –ai 指定文件-k 以 k 字节的形式表示文件的大小。 ls –alk 指定文件-l 列出文件的详细信息。-n 用数字的 UID,GID 代替名称。 (介绍 UID , GID )-F 在每个文件名后附上一个字符以说明该文件的类型, “*” 表示可执行的普通文件; “/” 表示目录; “@” 表 示符号链接;“|” 表示 FIFOs ; “=” 表示套接字 (sockets) 。(目录类型识别)-r 对目录反向排序。-t 以时间排序。-s 在 l 文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件)-R 列出所有子目录下的文件。 ( 递归 )-1 一行只输出一个文件。
举例:
ls:
ls -a:
其中.开头的文件为隐藏文件 有两个特殊的隐藏文件一个为 . ,一个为 .. ,其中.表示当前位置(即当前路径),..表示上一级位置(即当前路径的根路径)
ls -l:
注:选项可以连用,如
ls -al:
我们可以发现在输入-l指令后,最前面有一串字符,在这之中第一个字符表示该文件的文件类型,如d表示dir(即文件夹(目录)),-表示一个普通文件, l表示符号链接。
注:可以使用ll指令表示ls -l指令这在之后的alias指令中会提到。
2.pwd
![](https://img-blog.csdnimg.cn/2e9587b3bac04aff945cd0cb9e622416.png)
3.cd
在Linux系统中,文件和目录等均是以树的形式储存的
举例:
![](https://img-blog.csdnimg.cn/1eb3eab093a743e98c0e5c2502b03845.png)
![](https://img-blog.csdnimg.cn/631292ee3cba4af496f5db9a19478622.png)
cd ../tmp/ : 相对路径
绝对路径与相对路径:绝对路径:指定文件或目录的完整路径,从根目录开始,直到目标文件或目录的位置。绝对路径总是以根目录(通常是“/”)开头,并包含完整的路径结构。绝对路径可以确保精确地找到文件或目录,无论当前工作目录在哪里。
相对路径:指定文件或目录相对于当前工作目录的路径。相对路径通常不包含根目录,并且可以使用“.”(当前目录)和“..”(上一级目录)符号来引用其他目录。
![](https://img-blog.csdnimg.cn/909a084ccb4d4b43bd6573563a1b8ea9.png)
4.touch
-a 或 --time=atime 或 --time=access 或 --time=use 只更改存取时间。-c 或 --no-create 不建立任何文档。-d 使用指定的日期时间,而非现在的时间。-f 此参数将忽略不予处理,仅负责解决 BSD 版本 touch 指令的兼容性问题。-m 或 --time=mtime 或 --time=modify 只更改变动时间。-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。-t 使用指定的日期时间,而非现在的时间。
5.mkdir
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在 , 加上此选项后 , 系统将自动建立好那些尚不存在的目录, 即一次可以建立多个目录 ;
举例:
![](https://img-blog.csdnimg.cn/5b7397282f764c3398eedc9061245c24.png)
6.rmdir&rm
-p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
![](https://img-blog.csdnimg.cn/b4f32ec1ad5543c8846d61fcdd420112.png)
-f 即使文件属性为只读 ( 即写保护 ) ,亦直接删除-i 删除前逐一询问确认-r 删除目录及其下所有文件
举例:
rm -rf test:
7.man
-k 根据关键字搜索联机帮助num 只在第 num 章节找-a 将所有章节的都显示出来,比如 man printf 它缺省从第一章开始搜索,知道就停止,用 a 选项,当按下q 退出,他会继续往后面搜索,直到所有章节都搜索完毕。
面手册分为 8 章1 是普通的命令2 是系统调用 , 如 open,write 之类的 ( 通过这个,至少可以很方便的查到调用这个函数,需要加什么头文件)3 是库函数 , 如 printf,fread4 是特殊文件 , 也就是 /dev 下的各种设备文件5 是指文件的格式 , 比如 passwd, 就会说明这个文件中各个字段的含义6 是给游戏留的 , 由各个游戏自己定义7 是附件还有一些变量 , 比如向 environ 这种全局变量在这里就有说明8 是系统管理用的命令 , 这些命令只能由 root 使用 , 如 ifconfifig
8.cp
-f 或 --force 强行复制文件或目录,不论目的文件或目录是否已经存在-i 或 --interactive 覆盖文件之前先询问用户-r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
举例:
cp -r test tmp_test:
9.mv
-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖
可以理解为:使用mv指令操作一个文件(目录),会将其剪切并重命名至指定位置。
举例:
mv test.txt dir/test1.txt:
10.echo
-n
:不在输出末尾自动添加换行符。-e
:启用转义字符的解释,比如可以用\n
表示换行符。-E
:禁用转义字符的解释。-x
:显示每个字符的16进制值。
注:在字符串后使用>(>>)将字符串内容输出重定向到文件中。
输出重定向
输出重定向是指将程序或命令的输出流(通常是标准输出)重定向到另一个地方,而不是默认的终端窗口。这通常用于将输出保存到文件中,或将输出传递给其他程序进行处理。
举例:
echo "hello Linux" > test_23_5_1.txt:
echo "hello Linux" >> test_23_5_1.txt:
注:>与>>在使用时有所区别
>
向目标文件进行写入的时候,覆盖写入1.清空文件2.写入新内容
>>追加重定向,不进行清空操作,直接往文件中写入
10.cat
-b 对非空输出行编号-n 对输出的所有行编号-s 不输出多行空行
举例:
cat -n test_23_5_2.txt
cat test_23_5_1.txt:
注:在字符串后使用<(<<)将文件内容输入重定向到屏幕中。
cat < test_23_5_1.txt:
输入重定向
输入重定向是将文件中的内容作为程序或命令的输入流,而不是从终端读取输入。
<
用于将文件内容作为命令输入传递
<<
操作符用于在命令行中指定一段文本作为命令的输入。
11.more
-n 对输出的所有行编号q 退出 more
在观察一些大文件时,cat指令不能完整的显示出所有行数,这时就需要类似于more这种指令
举例:
cnt=1; while [ $cnt -le 10000 ]; do echo "hello Linux $cnt" ; let cnt++; done > test.txt(生成一个大文件)
more -500 test.txt:
12.less
less 工具也是对文件或其它输出进行分页显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
-i 忽略搜索时的大小写-N 显示每行的行号/ 字符串:向下搜索 “ 字符串 ” 的功能? 字符串:向上搜索 “ 字符串 ” 的功能n :重复前一个搜索(与 / 或 ? 有关)N :反向重复前一个搜索(与 / 或 ? 有关)q: quit
![](https://img-blog.csdnimg.cn/413b5c01648f4046be073d9b21a12eee.png)
13.head
-n< 行数 > 显示的行数
![](https://img-blog.csdnimg.cn/28ea38c073bc41268ae9b74f970b4546.png)
14.tail
f 循环读取-n< 行数 > 显示行数
![](https://img-blog.csdnimg.cn/ca69ed354c3749e5a6a594ee7600841a.png)
注:可以搭配head指令(和管道)做到显示任意一段的内容
管道
管道(Pipeline)是一种将一个命令的输出直接传递给另一个命令的机制,以便在不使用临时文件的情况下将多个命令组合成一个单一的操作。管道使用竖杠符号 " | " 来连接两个或多个命令,将一个命令的输出作为另一个命令的输入。
举例:
比如我想显示4521——4564行就可以如此操作
head -4564 test.txt | tail -44:
15.alias
这是一个非常有用的命令,它可以用于为其他命令创建别名。这样做可以简化命令的输入,缩短命令行长度,并提高命令行的效率。
常常有三种用法
- 创建命令别名
- 列出所有别名
- 删除别名
举例:
1. alias myls='ls -alF'
2. alias
3. unalias myls
16.date
date命令用于显示或设置系统日期和时间。
%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
date -s // 设置当前时间,只有 root 权限才能设置,其他只能查看。date -s 20080523 // 设置成 20080523 ,这样会把具体时间设置成空 00:00:00date -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″ // 这样可以设置全部时间
时间 -> 时间戳: date +%s时间戳 -> 时间: date -d@1508749502
举例
date +%Y-%m-%d
date +%Y-%m-%d_%H:%M:%S
date +%s
date -d@1683988998
date -d@1683988998 +%Y-%m-%d_%H:%M:%S
17.cal
-3 显示系统前一个月,当前月,下一个月的月历-j 显示在当年中的第几天(一年日期按天算,从 1 月 1 号算起,默认显示当前月在一年中的天数)-y 显示当前年份的日历
![](https://img-blog.csdnimg.cn/25dfa558f0974d6d8fd95ee39be7a9f7.png)
cal -y 2012
cal -j 200
18.find
-name 按照文件名查找文件
![](https://img-blog.csdnimg.cn/e8f9e7861679423e8164f1247557297a.png)
find /home/tr/tr_108 -name *.cpp
19.which
用于查找指定命令的可执行文件路径。
语法:which [选项] [命令]
常用选项:
-a:查找所有匹配的命令路径。
-s:仅查找指定的路径中是否存在命令,不显示命令路径。
举例
which ll
which ls
20.whereis
用于查找指定命令的二进制文件、源代码文件和man手册文件的路径。默认情况下,它将搜索所有可用的路径并显示与每个路径相关联的文件。
语法:whereis [选项] [命令]
常用选项:
-b:仅查找可执行文件路径。
-m:仅查找man手册路径。
-s:仅查找源代码文件路径。
举例
whereis ls
whereis pwd
21.grep
-i :忽略大小写的不同,所以大小写视为相同-n :顺便输出行号-v :反向选择,亦即显示出没有 ' 搜寻字符串 ' 内容的那一行
在这里创建一个含有不同内容的文件
grep -n '' test_23_5_14.txt
grep -n 'hello' test_23_5_14.txt
grep -nv 'hello' test_23_5_14.txt
grep -ni 'linux' test_23_5_14.txt
grep -Rn 'int main()' /home
22.zip/unzip
-r 递归处理,将指定目录下的所有文件和子目录一并处理
举例
zip -r tmp d1
unzip tmp.zip -d .
23.tar
-c :建立一个压缩文件的参数指令 (create 的意思 ) ;-x :解开一个压缩文件的参数指令!-t :查看 tarfifile 里面的文件!-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!-f :使用档名,要留意,在 f 之后要立即接档名!不能再加参数!-C : 解压到指定目录
打包和压缩的方案有很多种
tar czf XXX —— 打包压缩
tar tzf XXX.tgz —— 预览
tar xzf XXX.tgz —— 解压
24.bc
举例
echo '125154-215415*55+11445*23' | bc
25.uname
-a 或 –all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
举例
uname -a
26.shutdown
-h : 将系统的服务停掉后,立即关机。-r : 在将系统的服务停掉之后就重新启动-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
在Linux的服务器中,一般会一直运行,所以最好不将服务器关机。
Ⅲ.对于Linux的部分理解
1.如何看待指令?
指令和可执行程序都是可以被执行的,且指令一定是存在系统的某个文件(bin)中
因此可以认为,一个指令就是一个可执行程序。
2.在执行指令前,先做什么?
因为指令是一个可执行程序,因此在执行前需要到对应的文件夹中搜索是否有这个指令。
3.在Linux中,一切都为文件
在我们正常的理解中,显示器和键盘显然不属于文件,但是在Linux中它们都具有相应的读写方法。