【Linux系统编程】2. Linux基本指令(上)

文章目录

一、Linux下基本指令

1、ls指令

语法: ls [选项] [目录或文件]
功能: 对于⽬录,该命令列出该⽬录下的所有⼦⽬录与⽂件。对于⽂件,将列出⽂件名以及其他信息。
常⽤选项:

  • -a 列出⽬录下的所有⽂件,包括以 . 开头的隐含⽂件。
  • -d 将⽬录像⽂件⼀样显⽰,⽽不是显⽰其下的⽂件。如:ls ‒d 指定目录
  • -i 输出⽂件的 i 节点的索引信息。如:ls ‒ai 指定文件
  • -k 以 k 字节的形式表⽰⽂件的⼤⼩。如:ls ‒alk 指定文件
  • -l 列出⽂件的详细信息。
  • -n ⽤数字的 UID,GID 代替名称。
  • -F 在每个⽂件名后附上⼀个字符以说明该⽂件的类型,"*"表⽰可执⾏的普通⽂件;"/"表⽰⽬录;"@"表⽰符号链接;"|"表⽰FIFOs;"="表⽰套接字(sockets)。
  • -r 对⽬录反向排序。
  • -t 以时间排序。
  • -s 在l⽂件名后输出该⽂件的⼤⼩。(⼤⼩排序,如何找到⽬录下最⼤的⽂件)
  • -R 列出所有⼦⽬录下的⽂件。(递归)
  • -1 ⼀⾏只输出⼀个⽂件。

举例:

列出当前⽬录下的所有子目录和⽂件:ls

列出当前⽬录下的所有⼦⽬录与⽂件,包括 . 开头的隐含文件:ls -a

以详细信息列出当前目录下的所有子目录和文件(包括隐含文件):ls -al

以详细信息列出当前目录下的所有文件和目录(包括隐藏文件),并在不同类型的文件 / 目录名称后添加特殊符号标记其类型:ls -alF

注意:llls -l的缩写。

2、pwd指令

语法: pwd
功能: 显⽰⽤⼾当前所在的⽬录。
常⽤选项:

举例:

3、cd指令

Linux理论知识: 路径的认识

  • Linux系统中,磁盘上的⽂件和⽬录被组成⼀棵⽬录树,每个节点都是⽬录或⽂件。
  • 其中普通⽂件⼀定是⽬录树的叶⼦节点。
  • ⽬录可能是叶⼦(空⽬录),也可能是路上节点。

理解路径存在的意义: 树状组织⽅式,都是为了保证快速定位查找到指定的⽂件,⽽定位⽂件就需要具有唯⼀性的⽅案来进⾏定位⽂件。其中任何⼀个节点,都只有⼀个⽗节点,所以,从根⽬录开始,定位指定⽂件,路径具有唯⼀性。

  • 绝对路径:⼀般从 / 开始,不依赖其他⽬录的定位⽂件的⽅式。
  • 相对路径:相对于当前⽤⼾所处⽬录,定位⽂件的路径⽅式。
  • 绝对路径⼀般不会随着⽤⼾的路径变化⽽丧失唯⼀性,⼀般在特定服务的配置⽂件中经常被使⽤。
  • 相对路径因为它的便捷性,⼀般在命令⾏中使⽤较多。

语法: cd 目录名
功能: 改变⼯作⽬录,将当前⼯作⽬录改变到指定的⽬录下。

举例:

返回上级目录:cd ..

绝对路径定位目录:cd /home/mydir

相对路径定位目录:cd ../mydir

快速进入自己的家目录:cd ~

返回到最近访问目录:cd -

4、touch指令

语法: touch [选项] 文件
功能: touch命令参数可更改⽂档或⽬录的⽇期时间,包括存取时间和更改时间,或者创建⼀个空的⽂件。
常⽤选项:

  • -a:仅更改访问时间
  • -c:仅更改修改时间

举例:

创建普通文件:touch newFile.txt

查看文件时间:stat newFile.txt

修改文件access时间:touch -a newFile.txt

修改文件Modify时间:touch -m newFile.txt

5、mkdir 指令

语法: mkdir [选项] dirname
功能: 在当前⽬录下创建⼀个名为"dirname"的⽬录
常⽤选项:

  • -p/--parents:可以是⼀个路径名称。此时若路径中的某些⽬录尚不存在,加上此选项后,系统将⾃动建⽴好那些尚不存在的⽬录,即⼀次可以建⽴多个⽬录。

举例:

创建普通空目录:mkdir mydir

递归建立多个目录,创建指定路径:mkdir -p path1/path2/path3/path4

tree命令是一个递归以树状结构显示指定目录的命令,如果没有安装且当前用户是root:yum install -y tree 可以下载tree命令。

如果当前用户是普通用户: sudo yum install -y tree

6、rmdir指令 和 rm指令

1)rmdir指令

rmdir是⼀个与mkdir相对应的命令,mkdir是建⽴⽬录,⽽rmdir是删除目录。

语法: rmdir [-p] [dirName]
适⽤对象: 具有当前⽬录操作权限的所有使⽤者
功能: 删除空⽬录
常⽤选项:

  • -p 当⼦⽬录被删除后如果⽗⽬录也变成空⽬录的话,就连带⽗⽬录⼀起删除。

举例:

删除空目录:rmdir mydir

删除路径:rmdir -p path1/path2/path3/path4

指定路径中有不为空的路径,便无法删除

2)rm指令

rm指令可以同时删除⽂件或⽬录,一般更习惯于使用rm来进行删除。

语法: rm [-f-i-r-v] [dirName/dir]
适⽤对象: 所有使⽤者
功能: 删除⽂件或⽬录
常⽤选项:

  • -f 即使⽂件属性为只读(即写保护),亦直接删除
  • -i 删除前逐⼀询问确认
  • -r 删除⽬录及其下所有⽂件

举例:

删除普通文件:rm hello.txt

删除目录文件:rm -r dir

删除普通文件前询问:rm -i newFile.txt

删除目录前询问:rm -ri d

递归强制删除非空目录:rm -rf path1

7、man指令

Linux的命令有很多参数,我们不可能全记住,可以通过查看联机⼿册获取帮助。
语法: man [选项] 命令
常⽤选项:

  • -k 根据关键字搜索联机帮助
  • -num 只在第num章节查找
  • -a 将所有章节的都显⽰出来,⽐如man printf 它缺省从第⼀章开始搜索,知道就停⽌,直到所有章节都搜索完毕,当按下q退出。

解释⼀下: man⼿册分为9章(不同系统可能会有差别)

  • 1 是普通的命令
  • 2 是系统调⽤,如open,write之类的(通过这个,⾄少可以很⽅便的查到调⽤这个函数,需要加什么头⽂件)
  • 3 是库函数,如printf,fread是特殊⽂件,也就是/dev下的各种设备⽂件
  • 4 略
  • 5 是指⽂件的格式,⽐如passwd,就会说明这个⽂件中各个字段的含义
  • 6 是给游戏留的,由各个游戏⾃⼰定义
  • 7 是附件还有⼀些变量,⽐如像environ这种全局变量在这⾥就有说明
  • 8 是系统管理⽤的命令,这些命令只能由root使⽤,如ifconfig
  • 9 略

举例:

查看printf指令:man printf

查看系统调⽤:man 2 fork

查看C库函数:man 3 printf

查看变量:man 7 signal

查看man⼿册⾃⼰:man man

8、cp指令

语法: cp [选项] 源文件或目录 目标文件或目录
功能: 复制⽂件或⽬录
说明:

  • cp指令⽤于复制⽂件或⽬录。
  • 如同时指定两个以上的⽂件或⽬录,且最后的⽬的地是⼀个已经存在的⽬录,则它会把前⾯指定的所有⽂件或⽬录复制到此⽬录中。

常⽤选项:

  • -f 或 --force 强⾏复制⽂件或⽬录,不论⽬的⽂件或⽬录是否已经存在
  • -i 或 --interactive 覆盖⽂件之前先询问⽤⼾
  • -r 递归处理,将指定⽬录下的⽂件与⼦⽬录⼀并处理。若源⽂件或⽬录的形态,不属于⽬录或符号链接,则⼀律视为普通⽂件处理

cp普通文件:cp myfile.txt myfile-backup.txt

将多个文件拷贝到指定路径下:cp *.txt dir

注:*表⽰通配符,匹配所有.txt结尾的文件名。

cp如果目标文件存在,就覆盖:cp myfile.txt myfile-backup.txt

递归强制拷贝整个目录:cp -rf test test-backup

9、mv指令

mv命令是move的缩写,可以⽤来移动⽂件或者将⽂件改名(move(rename) files,经常⽤来备份⽂件或者⽬录。
语法: mv [选项] 源文件或目录 目标文件或目录
功能:

  • 视mv命令中第⼆个参数类型的不同(⽬标⽂件或⽬标⽬录),mv命令将⽂件重命名或将其移⾄⼀个新的⽬录中。
  • 当第⼆个参数类型是⽂件时,mv命令完成⽂件重命名,此时,源⽂件只能有⼀个(也可以是源⽬录),它将所给的源⽂件或⽬录重命名为给定的⽬标⽂件名。
  • 当第⼆个参数是已存在的⽬录名称时,源⽂件或⽬录参数可以有多个,mv命令将各参数指定的源⽂件均移⾄⽬标⽬录中。

常⽤选项:

  • -f :force 强制的意思,如果⽬标⽂件已经存在,不会询问⽽直接覆盖
  • -i:若⽬标⽂件(destination)已经存在时,就会询问是否覆盖!

举例:

更改名称:mv myfile.txt yourfile.txt

如果当前路径存在同名文件,改名即覆盖:mv yourfile.txt myfile.txt

如果当前路径存在同名文件,改名前可以添加 i 选项,让系统提出警告供用户做选择:mv -i yourfile.txt myfile.txt

移动文件:mv myfile.txt temp

移动目录:mv tmp tmp1

10、cat指令

语法: cat [选项] [文件]
功能: 查看⽬标⽂件的内容
常⽤选项:

  • -b 对⾮空输出⾏编号
  • -n 对输出的所有⾏编号
  • -s 不输出多⾏空⾏

举例:

命令行构建多行文本:cnt=0; while [ $cnt -le 10 ]; do echo "hello Linux"; let cnt++; done > temp.txt

查看文件内容:cat temp.txt

修改temp.txt,使其携带多行空行:vim temp.txt

先点击 i 进入编辑模式,编辑完成后点击Esc退出编辑模式,再输入:wq保存并退出。

测试 -b 对非空输出行编号:cat -b temp.txt

测试 -n 对输出的所有行编号:cat -n temp.txt

测试 -s 不输出多行空行,多行空行压缩成为⼀行:cat -s temp.txt

11、more指令

语法: more [选项]
功能: more命令,功能类似cat
常⽤选项:

  • -n 指定输出⾏数
  • q 退出more

举例:

命令行输出多行文本:cnt=0; while [ $cnt -le 2000 ]; do echo "hello Linux"; let cnt++; done > temp.txt

测试 -n 指定输出行数:more -10 temp.txt

12、less指令

  • less⼯具也是对⽂件或其它输出进⾏分⻚显⽰的⼯具,应该说是linux正统查看⽂件内容的⼯具,功能极其强⼤。

  • less 的用法⽐起 more 更加的有弹性,在 more 的时候,我们并没有办法向前⾯翻,只能往后⾯看。

  • 但若使用了 less 时,就可以使用 pageup pagedown 以及 上、下等按键的功能来往前往后翻看文件,更容易用来查看⼀个文件的内容。

  • 除此之外,在 less ⾥头可以拥有更多的搜索功能,不⽌可以向下搜,也可以向上搜。

语法: less [参数] 文件
功能: less与more类似,但使⽤less可以随意浏览⽂件,⽽more仅能向前移动,却不能向后移动,⽽且less在查看之前不会加载整个⽂件。

选项:

  • -i 忽略搜索时的⼤⼩写
  • -N 显⽰每⾏的⾏号
  • /字符串:向下搜索"字符串"的功能
  • ?字符串:向上搜索"字符串"的功能
  • n:重复前⼀个搜索(与 / 或 ? 有关)
  • N:反向重复前⼀个搜索(与 / 或 ? 有关)
  • q:quit

举例:

命令行输出多行文本:cnt=0; while [ $cnt -le 2000 ]; do echo "hello Linux"; let cnt++; done > temp.txt

测试搜索功能:less -N temp.txt

13、head指令

head 与 tail 就像它的名字⼀样的浅显易懂,它是⽤来显⽰开头或结尾某个数量的⽂字区块,head ⽤来显⽰档案的开头⾄标准输出中,⽽ tail 想当然就是看档案的结尾。

语法: head [参数] [文件]
功能: head ⽤来显⽰档案的开头⾄标准输出中,默认head命令打印其相应⽂件的开头10⾏。
选项:

  • -n 打印的行数

举例:

默认打印文件前10行:head temp.txt

打印前5行:head -5 temp.txt

14、tail指令

tail 命令从指定点开始将⽂件写到标准输出。使⽤ tail 命令的 -f 选项可以⽅便的查阅正在改变的⽇志⽂件,tail -f filename会把 filename ⾥最尾部的内容显⽰在屏幕上,并且不断刷新,使你看到最新的⽂件内容。

语法: tail [参数] [文件]
功能: ⽤于显示指定⽂件末尾内容,不指定⽂件时,作为输⼊信息进⾏处理。常⽤查看⽇志⽂件。
选项:

• -f 循环读取

• -n 打印的⾏数

举例:

默认打印后10行:tail temp.txt

打印后5行:tail -5 temp.txt

如何显示文件的 180,200 行的内容:head -200 temp.txt | tail -20

15、date指令

指定格式显⽰时间: date +%Y:%m:%d
⽤法: date [OPTION] [+FORMAT]

在显⽰⽅⾯,使⽤者可以设定欲显⽰的格式,格式设定为⼀个加号后接数个标记,其中常⽤的标记列表如下:

  • %H:⼩时
  • %M:分钟
  • %S:秒
  • %X:相当于%H:%M:%S
  • %d:日
  • %m:⽉份
  • %Y:完整年份
  • %F:相当于 %Y-%m-%d

在设定时间⽅⾯:

  • 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″ // 这样可以设置全部时间

时间戳:

  • 时间->时间戳:date +%s
  • 时间戳->时间:date -d@1932342323
  • Unix时间戳(英⽂为Unix epoch,Unix time,POSIX time 或 Unix timestamp)是从1970年1⽉1⽇(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

举例:

显示常规时间 :
date
date +%Y/%m/%d
date +%Y/%m/%d-%H:%M:%S

显示时间戳:date +%s

时间戳转成可视时间:date +%Y/%m/%d-%H:%M:%S -d @时间戳

相关推荐
大树8810 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠10 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质11 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush411 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52011 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz11 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工12 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智12 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩12 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
shushangyun_12 小时前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化