大家好,今天我们来学习Linux里常用的基本指令!希望对大家有所帮助!
目录
1. ls指令
2. pwd指令
3. cd指令
拓展
4. tree指令
5. whoami指令
6. touch指令
7. stat指令
8. mkdir指令
9. rmdir指令 && rm 指令
10. man指令
11. cp指令
12. mv指令
13. cat指令
14. more指令
15. less指令
16. head指令
17. tail指令
18. date指令
19. cal指令
20. find指令
21. which
22. alias
23. whereis
24. grep
25. sort
26. uniq
27. zip和unzip指令
28. tar指令
29. bc指令
30. uname
31. 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
32. 关机
首先强调一下在XShell中复制和粘贴不能使用ctrl + c / ctrl + v
复制 : ctrl + insert ( 有些 insert 需要配合 fn 来按 )
粘贴 : shift + insert
1. ls指令
语法 : 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的话,会出现所有当前目录下的文件。
ls -l:如果我们加上选项 -l 的话,就会列出详细的文件信息,也可以输入 ll ,ll就是 ls -l 的缩写。
ls -a:加上 -a 的话可以显示所有的文件,包括隐藏文件也就是 . 开头的文件。(选项的字母是可以一起输入的,例如 -l -a 可以输入 -la)
ls -d:当我们ll一个文件夹的时候,显示的是文件夹中的文件
如果我们想要查看文件夹的属性信息,那就需要加上 -d
ls -R: 会递归式的展开子目录的文件。如图中展开目录test1和test2的文件。
2. pwd指令
语法 : pwd
功能 :显示用户当前所在的目录
案例:
输入pwd后就会显示当前所在的路径。
这里的 / 是路径分隔符。要区别在window下用 \ 来作为文件分隔符。
3. cd指令
语法 :cd 目录名
功能 :改变工作目录。将当前工作目录改变到指定的目录下。
常用选项:
- cd .. : 返回上级目录
- cd ~:进入用户家目
- cd -:返回最近访问目录
案例:
如果我们想要回到上级路径,输入cd ..
这样就回到了上级路径。当我们一直cd .. 操作,我们最后发现到了一个地方就动不了了。
这是因为我们回到了根目录。这时候当然回退不了了。
cd -:当我们进入了别的路径想返回刚才所在的路径的时候,我们只需要cd - 即可。
拓展知识:
说到路径,分为两种:
1、绝对路径:从根目录开始的唯一的路径。例如我们使用 pwd 指令得到的路径。
2、相对路径:相对于当年文件夹的路径的位置。
如下图:
我们就从当前路径的上级目录进入了test2
当我们cd ~之后输入pwd会发现
其中 /home/XXX :叫做XXX用户的工作路径或者家目录! --- 特定用户登录时,默认所处的路径!
4. tree指令
语法 :touch [ 文件夹]
功能 :以树的形式展开一个文件夹。
案例:
当然,tree是需要下载的,如果我们没有下载过tree,我们需要以root的身份输入
命令:yum install -y tree
5. whoami指令
语法:whoami
作用:查询当前用户
案例:
6. touch指令
语法 :touch [ 选项 ] [文件名]
功能 : touch 命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。(不能用于创建目录)
常用选项 :
- -a 或--time=atime或--time=access或--time=use只更改存取时间。
- -c 或--no-create 不建立任何文档。
- -d 使用指定的日期时间,而非现在的时间。
- -f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
- -m 或--time=mtime或--time=modify 只更改变动时间。
- -r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
- -t 使用指定的日期时间,而非现在的时间
案例:
当我们 touch 我们想要的文件之后再 ll 查看就可以看到了
touch也可以用于更新文件的时间,可以看到两次文件的时间不一样了。
7. stat指令
语法:stat
作用:查看文件的详细信息
案例:
8. mkdir指令
语法:mkdir [选项] [目录名]
功能 :在当前目录下创建一个 目录
常用选项 :
- -p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
举例 :
直接mkdir开始不可以创建带路径的文件夹的。但是当我们带上 -p 的时候就可以了。
9. rmdir指令 && rm 指令
rmdir 是一个与 mkdir 相对应的命令。 mkdir 是建立目录,而 rmdir 是删除命令。
语法 : rmdir [-p][dirName]
适用对象 :具有当前目录操作权限的所有使用者
功能 : 删除空目录
常用选项 :
- -p 当子目录被删除后如果父目录也变成空目录的话,就连带父目录一起删除。
案例:
这样就删除了一个空目录。
rm 命令可以同时删除文件或目录
语法 : rm [选项][文件名]
适用对象 :所有使用者
功能 :删除文件或目录
常用选项 :
- -f 即使文件属性为只读(即写保护),亦直接删除
- -i 删除前逐一询问确认
- -r 删除目录及其下所有文件
案例:
我们删除普通文件的话只需要使用 rm+文件名就好了。
有时候我们删除文件的时候可能会被系统询问是否确定要删除某文件,如果不想要看到这个询问,直接 rm -f 就好了。f时force,强制的意思。
当我们想要删除文件夹的话,我们会发现不能直接使用 rm 删除
这时我们需要用到 rm -r,r就是递归删除的意思,这样就递归把文件夹及其所有的文件都删除了。
这样,我们就删除了文件夹a。
一定不要rm -rf / ,这个操作指令就是传说中的删库!
10. man指令
Linux 的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是 man
语法 : man [ 选项 ] 命令
有些人可能不能直接使用man手册,需要安装,我们只需要输入:yum install -y man-pages
常用选项
- -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
查找默认是从1开始查找,找到为止。
案例:
当我们想要查找scanf的时候,输入 man 3 scanf
查找完之后输入q停止。
11. cp指令
语法 : cp [ 选项 ] 源文件或目录 目标文件或目录
功能 : 复制文件或目录
说明 : cp 指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
常用选项 :
- -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
- -i 或 --interactive 覆盖文件之前先询问用户
- -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链
- 接,则一律视为普通文件处理
- -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理
案例:
把文件 a.txt 中的内容拷贝到了 b.txt 中。
把 a.txt 拷贝到目录 c 中,这样c中也有了一个 a.txt 。
将目录a拷贝到b中去,需要用到 -r 选项。
12. mv指令
mv 命令是 move 的缩写,可以用来移动文件或者将文件改名( move (rename) fifiles ),是 Linux 系统下常用的命令,经常用来备份文件或者目录。
语法 : mv [ 选项 ] 源文件或目录 目标文件或目录
功能 :
1. 视 mv 命令中第二个参数类型的不同(是目标文件还是目标目录), mv 命令将文件重命名或将其移至一个新的目录中。
2. 当第二个参数类型是文件时, mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个, mv 命令将各参数指定的源文件均移至目标目录中。
常用选项 :
- -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖
- -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
案例:
将 a.txt 改名为 b.txt
将目录 a 移动到 b目录中。
13. cat指令
语法 : cat [ 选项 ][ 文件 ]
功能 : 查看目标文件的内容
常用选项 :
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
案例:
我们输入:cnt=0;while [ $cnt -le 10000 ] ; do echo "hello qingshan [$cnt]"; let cnt++; done > test.txt 后,会发现出现了一个很大的文件 test.txt
这时候我们直接 cat test.txt ,就能看到 test.txt 中的内容。
如果想要在前面显示行号,只需要加上 -n 选项。
这时候还有一个tac命令,输入 tac test.txt 。
我们会发现,当我们想要看1000行的时候,我们会非常费劲,需要一条一条地往上翻。
这样我们得出一个结论:cat 和 tac 只适合查看小文本或者代码片段!
14. more指令
语法 : more [ 选项 ][ 文件 ]
功能 : more 命令,功能类似 cat
常用选项 :
- -n 对输出的所有行编号
- q 退出more
案例:
直接输入 more test.txt 就可以从一行查看文本了,这时候按回车键就可以向下翻动。
想到直接查看某一行,我们直接使用 more -n 即可,这里的n是想要查看的行数。
例如我们输入了 more -1000 test.txt。
我们还可以输入一个 / 之后搜索我们想要的内容:
more是更适合大本文,但是more只能向下翻。我们接下来介绍可以上下翻的less。
15. less指令
语法: less [ 参数 ] [ 文件]
功能 :
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。
选项 :
- -i 忽略搜索时的大小写
- -N 显示每行的行号
- /字符串:向下搜索“字符串”的功能
- ?字符串:向上搜索“字符串”的功能
- n:重复前一个搜索(与 / 或 ? 有关)
- N:反向重复前一个搜索(与 / 或 ? 有关)
- q:quit
less 工具也是对文件或其它输出进行分页显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大。
less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看
但若使用了 less 时,就可以使用 [pageup][pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
总的来说 more 和 less 更适合查看大文本(大型代码,日志)。
16. head指令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块, head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。
语法: head [ 参数 ] [ 文件 ]
功能 :
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
选项 :
- -n<行数> 显示的行数
案例:
我们输入 head -10 test.txt 就可以查看文本的前10行内容了。
17. tail指令
tail 命令从指定点开始将文件写到标准输出 . 使用 tail 命令的 -f 选项可以方便的查阅正在改变的日志文件 ,tail -f fifilename会把 fifilename 里最尾部的内容显示在屏幕上 , 并且不但刷新 , 使你看到最新的文件内容。
语法: tail[ 必要参数 ][ 选择参数 ][ 文件 ]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
- -f 循环读取
- -n<行数> 显示行数
案例:
查看尾部的10行内容。
那么,如果我们需要查看中间的内容呢?
例如,我们需要查看1000行到1010行的内容。我们需要先拿到头部的1010行,再拿到这1010行的尾部10行。
所以我们这里可以输入:head -1010 test.txt | tail -10
这里的 | 号是一个管道。
有人也会有疑问,为了 tail 之后不用加文件名了呢?其实 tail 是默认从文件读取数据的,head向管道中输送了10行,tail再从中拿尾部的10行。
我们再拓展一下,如何从拿到如何从1000行1010行逆置以后拿到前三行?
这时候我们只需要输入:head -1010 test.txt | tail -10 | tac | head -3
18. date指令
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. 时间戳
时间 -> 时间戳: date +%s
时间戳 -> 时间: date -d@1508749502
Unix 时间戳(英文为 Unix epoch, Unix time, POSIX time 或 Unix timestamp )是从 1970 年 1 月 1 日( UTC/GMT 的午夜)开始所经过的秒数,不考虑闰秒。
因为是有时差的,所以是我们的北京时间八点开始。
19. cal指令
cal 命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。 “ 阳历 ” 又名 “ 太阳历” ,系以地球绕行太阳一周为一年,为西方各国所通用,故又名 “ 西历 ” 。
命令格式 : cal [ 参数 ][ 月份 ][ 年份 ]
功能 : 用于查看日历等时间信息,如只有一个参数,则表示年份 (1-9999) ,如有两个参数,则表示月份和年份
常用选项 :
- -3 显示系统前一个月,当前月,下一个月的月历
- -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
- -y 显示当前年份的日历
案例:
20. find指令
Linux 下 fifind 命令在目录结构中搜索文件,并执行指定的操作。
Linux 下 fifind 命令提供了相当多的查找条件,功能很强大。由于 fifind 具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。
即使系统中含有网络文件系统 ( NFS) , fifind 命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的 fifind 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间( 这里是指 30G 字节以上的文件系统 ) 。
语法: fifind pathname -options
功能: 用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)
常用选项:
- -name 按照文件名查找文件。
案例:
find是从当年目录下开始递归寻找指定的文件。find查找的方式十分暴力,一个一个地找过去,所以当我们找某些文件的时候,往往会慢一些。
21. which
语法:which 指令名
功能:用于查找我们曾经使用过的命令
案例:
这些的命令其实都是环境变量。
22. alias
语法:alias 新命名=命令名
功能:给命令重命名。
案例:
通过给pwd重命名为qingshan,我们之后用qingshan就可以使用原先pwd的功能了。
23. whereis
语法:whereis [名字]
功能:在特定的路径下,查找指定的文件名对应的指令或者文档
案例:
24. grep
语法: grep [ 选项 ] 搜寻字符串 文件
功能: 在文件中搜索字符串,将找到的行打印出来
常用选项:
- -i :忽略大小写的不同,所以大小写视为相同
- -n :顺便输出行号
- -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行
案例:
筛选出含 ‘999’ 的内容
wc -l :可以统计行数
所以我们用管道加上wc -l 之后可以筛选出含 ‘999’的行数‘
25. sort
语法:sort [文件名]
功能:对文本内容进行排序
案例:
26. uniq
语法:uniq [文件名]
功能:对文件中内容去重
注:只有相邻并且相同的内容才能去重!
案例:
我们先排序一下再去重
27. zip和unzip指令
语法: zip 压缩文件 .zip 目录或文件
功能: 将目录或文件压缩成 zip 格式
这个命令是没有默认安装的,我们需要安装,在命令行输入:yum install -y zip unzip
注:任何安装都是需要root权限的。
常用选项:
- -r 递归处理,将指定目录下的所有文件和子目录一并处理
举例 :
zip对一个目录打包的时候,如果不加 -r ,只会打包这个目录,目录里面的文件不会打包。
解压缩想解压到某个路径下,需要加 -d 选项。
注意,压缩了未必大小就会变小。一般情况下会变小。
28. tar指令
tar [-cxtzjvf] 文件与目录
参数 :
- -c :建立一个压缩文件的参数指令(create 的意思);
- -x :解开一个压缩文件的参数指令!
- -t :查看 tarfifile 里面的文件!
- -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
- -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
- -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
- -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
- -C : 解压到指定目录
案例:
压缩的话需要用到 -czf 选项。 -c 压缩
解压的话需要用到 -xzf 选项。 -x 解压
查看压缩包里的内容需要用到 -tzf 选项。-t 查看压缩包内容
-C 指定解压的路径。我这里是解压到了当前文件。
29. bc指令
bc 命令可以很方便的进行浮点运算
重要的是,bc支持命令行使用
这个命令其实不怎么常用。
30. uname
语法 : uname [ 选项 ]
功能 : uname 用来获取电脑和操作系统的相关信息。
补充说明 : uname 可显示 linux 主机所用的操作系统的版本、硬件的名称等基本信息。
常用选项:
- -a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称
案例:
31. 重要的几个热键[Tab],[ctrl]-c, [ctrl]-d
[Tab]按键---具有『命令补全』和『档案补齐』的功能
[Ctrl]-c按键---让当前的程序『停掉』
[Ctrl]-d按键---通常代表着:『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可以用来取代exit
[Ctrl]-r按键---可以用来搜索历史中使用过的命令。
另外,命令行中也是可以用 \ 来续行的。
32. 关机
语法 : shutdown [ 选项 ]
常见选项:
- -h : 将系统的服务停掉后,立即关机。
- -r : 在将系统的服务停掉之后就重新启动
- -t sec : -t 后面加秒数,亦即『过几秒后关机』的意思
至此Linux基本指令介绍完了,希望对大家有所帮助!!!