Linux系统编程 day01 Linux常用基础命令

Linux系统编程 day01 Linux常用基础命令

  • 01. 命令解释器
  • 02. Linux下常用的快捷键
  • 03. Linux下的目录结构
  • 04. 文件和目录操作的相关命令
    • 04.01 `tree`
    • 04.02 `ls`
    • 04.03 `cd`
    • 04.04 `pwd`
    • 04.05 `which`
    • 04.06 `touch`
    • 04.07 `mkdir`
    • 04.08 `rmdir`
    • 04.09 `rm`
    • 04.10 `cp`
    • 04.11 `mv`
    • 04.12 `cat`
    • 04.13 `more`
    • 04.14 `less`
    • 04.15 `head`
    • 04.16 `tail`
    • 04.17 软链接
    • 04.18 硬链接
    • 04.17 `wc`
    • 04.18 `whoami`
  • 05. 用户权限、用户、用户组命令
    • 0501 修改文件权限`chmod`
    • 0502 修改文件所有者`chown`
    • 0503 修改文件所属组`chgrp`
  • 06. 查找命令
    • 06.01 `find`
    • 06.02 `grep`
  • 07. Linux中常用的压缩工具
  • 08. 软件的安装与卸载
    • 08.01 在线安装
    • 08.02 软件包安装

01. 命令解释器

**shell**就是命令解析器。命令解析器的作用是对用户输入到终端的命令进行解析,调用相应的执行程序。

Linux系统编程 day01 Linux常用基础命令_第1张图片
当我们在终端输入命令的时候,由shell命令解析器对命令按照$PATH环境变量搜索命令进行解析,解析成内核能够识别的指令,然后内核再执行命令,最后将执行的结果由终端显示给用户。如果shell$PATH环境变量中找不到对应的命令,就会报错。我们可以通过echo $PATH查看环境变量的值。

在这里插入图片描述

例如此处就查看了本机的环境变量。Linux的系统结构如下:

Linux系统编程 day01 Linux常用基础命令_第2张图片
可以从图中看到shell是位于应用层与内核层之间的。我们常用的命令解析器有shbash。查看当前系统使用的shell可以使用echo $SHELL。查看系统下可以使用的shell可以使用cat /etc/shells

Linux系统编程 day01 Linux常用基础命令_第3张图片

02. Linux下常用的快捷键

在Linux中,我们会经常使用TAB键,该键可以帮我们补全命令以及补全文件名(包括目录和文件)。在补全的时候,如果后续对应的命令或者文件有多个,则按下TAB键之后会显示后续可以补全的所有内容。使用TAB可以减少用户的输入,加快输入的速度,减少出错的机会。但是在sh中该功能会失效,TAB键依然会以制表符的形式进行输出,不会自动补全。

Linux系统编程 day01 Linux常用基础命令_第4张图片
接下来看一下关于Linux中输入命令可以使用的快捷键。

快捷键 功能
ctrl + p 或者 ↑ 上一条命令
ctrl + n 或者 ↓ 下一条命令
ctrl + b 或者 ← 光标左移
ctrl + f 或者 → 光标右移
ctrl + a 或者 home 光标移动到头部
ctrl + e 或者 end 光标移动到尾部
ctrl + h 或者 Backspace 删除前边字符
ctrl + d 删除后边字符
ctrl + u 删除光标前所有内容
ctrl + k 删除光标后所有内容

03. Linux下的目录结构

Linux和Windows不一样,Windows的文件管理系统是分为一个又一个的盘符,而在Linux中,文件系统都是从根目录开始,结构像一棵树,根目录用/表示。如下面就是一个Linux的文件系统。

Linux系统编程 day01 Linux常用基础命令_第5张图片

接下来说一下关于Linux中主要的一些目录。

  • /bin: binary,二进制文件,存放可执行程序,shell命令。如ls、rm、mv、cp等。
  • /sbin:存放系统管理员使用的系统管理程序。如ifconfig、shutdown等系统命令。
  • /dev:存放设备文件。在Linux下一切皆文件,所以硬盘、显卡、显示器等都是以文件的形式存储的。如在input目录下执行sudo cat mouse0移动鼠标会显示有输入。
  • /lib:Linux运行的时候需要加载的一些动态库。
  • /mnt:手动挂载的目录。
  • /media:外设自动挂载的目录。
  • /root:Linux超级管理员root的家目录。
  • /usr:类似于Windows中的program files的目录。其中include目录中存放的是一些头文件,比如stdio.h、stdlib.h等,games目录中存放的是一些小游戏。
  • /etc:存放配置文件。
    • /etc/passwd:使用man 5 passwd可以查看passwd文件的格式信息。
    • /etc/group:使用man 5 group可以查看group文件的格式信息。
    • /etc/profile:系统的配置文件,修改该文件会影响这个系统下的所有的用户。
  • /opt:安装的第三方应用程序,比如Oracle数据库等。
  • /home:Linux操作系统下所有用户的家目录,用户的家目录也成为宿主目录或者主目录。
  • /tmp:存放临时文件,新建在此目录的文件会在系统重启之后自动清除。

在文件系统中,我们需要理解什么是相对路径,什么是绝对路径。绝对路径是从根目录开始的路径,如下面使用pwd输出的当前工作路径就是相对路径。
在这里插入图片描述

相对路径是从当前路径开始表示的路径。.表示当前路径、..表示当前路径的上一级路径。在Linux命令提示符中,如上面绝对路径的图中。ht表示当前登录的用户,@表示在的意思,也就是英语中的atHT是主机名,主机名在/etc/hosts这个文件中。其中~/zoo表示的是当前的工作目录,~表示宿主目录(家目录或者主目录),通过echo ~或者echo $HOME查看当前用户的宿主目录。

Linux系统编程 day01 Linux常用基础命令_第6张图片

其中$表示当前用户为普通用户,#表示当前用户为root用户。

Linux系统编程 day01 Linux常用基础命令_第7张图片

04. 文件和目录操作的相关命令

04.01 tree

以树状形式查看指定目录,使用该命令需要安装软件tree,安装命令如下:

sudo apt-get update
sudo apt-get install tree

tree的使用如下:

tree 	#以树状结构显示当前目录下的文件
tree dir	#以树状结构显示指定目录下的文件信息

Linux系统编程 day01 Linux常用基础命令_第8张图片需要注意的是tree只能查看目录内容,不能查看普通文件内容。

04.02 ls

该命令可以查看指定目录下的文件信息,使用方法为:

ls  #显示当前目录下文件信息
ls dir  #显示指定目录下的文件信息
ls file #显示指定文件信息

Linux系统编程 day01 Linux常用基础命令_第9张图片ls中也有一些参数。

  • -a:列出当前目录下的所有文件,包括隐藏文件。在Linux系统中,隐藏文件的文件名都是以.开头。
    在这里插入图片描述

  • -R:以递归方式列出所有目录中的的内容。功能和tree一样,但是没有tree一目了然。
    Linux系统编程 day01 Linux常用基础命令_第10张图片

  • -l:列出文件的详细信息。
    在这里插入图片描述
    上面显示的内容一共有7部分,首先第1个字符表示的是文件的类型。文件的类型有以下:

    • -:普通文件
    • d:目录文件
    • l:符号链接文件,相当于Windows中的快捷方式
    • s:套接字文件
    • p:管道文件
    • b:块设备文件
    • c:字符设备文件

    在后续紧跟着的9个字符表示的是用户的操作权限,也就是第2~10个字符,其中三个三个为一组。前三个字符表示文件所有者对文件的操作权限,中间三个字符表示文件所属组用户对文件的操作权限,最后三个字符表示其它人对文件的操作权限。这里的r表示读权限,w表示写权限,x表示执行权限。如果对应的位置是-,表示没有该对应的权限。如wrx-rx--x表示的是文件所有者可读可写可执行,文件所属组的用户权限是可读可执行但是不能写,其他用户的权限是只能执行不可读写。

    用户权限的字符后面跟着的数字表示的是硬链接计数。对于目录来说,硬链接计数等于该目录下的所有目录的总数,包含了...。所以空目录的硬链接计数是2。对于文件来说,这个计数就是该文件的所有的硬链接文件数量,当一个文件的硬链接计数的数量变成了0,也就代表该文件被彻底删除了。

    后面的两个表示文件的所有者和文件的所属组,比如上面查看的文件的所属者就是ht,文件的所属组就是HT。文件的所有者并不代表就是文件的创建者。

    后面的数字表示的是文件的大小。对于目录来说只代表目录的大小,并不包含目录中的内容,目录的大小为4k。如果是文件则是文件的大小。

    最后的日期是文件的创建日期或者是文件最后修改时间。日期后紧跟着的是文件名。

上述的参数也可以进行组合,如下:

  • ls -la:列出当前目录下的所有文件的详细信息,包括隐藏文件。
    Linux系统编程 day01 Linux常用基础命令_第11张图片

  • ls -ltr:列出当前目录下的文件,按照时间进行逆向排序。
    Linux系统编程 day01 Linux常用基础命令_第12张图片

04.03 cd

该命令的功能是切换文件目录,使用方式是

cd dir	#切换到指定路径

其中路径dir可以是相对路径也可以是绝对路径。切换到家目录可以使用以下命令:

cd
cd ~
cd /home/用户名
cd $HOME

Linux系统编程 day01 Linux常用基础命令_第13张图片
如果需要临近的两个目录相互切换,可以使用cd -

04.04 pwd

查看用户当前所处的工作目录。

在这里插入图片描述

04.05 which

该命令用于查看命令所在的目录。用法为which 命令

Linux系统编程 day01 Linux常用基础命令_第14张图片

04.06 touch

创建文件。如果文件存在,则更新文件的最后修改时间。用法为touch file

Linux系统编程 day01 Linux常用基础命令_第15张图片

04.07 mkdir

创建目录,用法为mkdir dir。需要创建多层目录需要使用参数-p

Linux系统编程 day01 Linux常用基础命令_第16张图片

04.08 rmdir

删除空目录,用法为rmdir dir

Linux系统编程 day01 Linux常用基础命令_第17张图片

04.09 rm

可以用于删除文件,也可以用于删除目录。用法为rm file或者rm -r dir。其中有一些参数如下:

  • -r:递归删除目录,删除目录必须添加此参数。
  • -i:提示用户是否删除文件或者目录。
  • -f:强制删除,当文件不存在的时候也不会提醒。

Linux系统编程 day01 Linux常用基础命令_第18张图片

04.10 cp

用于拷贝文件。使用方法为cp dir1/file1 dir2/file2,如果需要对目录进行拷贝,则需要使用-r参数。关于cp有以下一些情况。

  • cp file1 file2(不存在):则创建file2,将file1的内容拷贝到file2
  • cp file1 file2file1的内容覆盖到file2
  • cp file dir:将file拷贝到dir目录中。
  • cp -r dir1 dir2:将dir1目录拷贝到dir2中,包括dir1目录。
  • cp -r dir1 dir2(不存在):创建dir2,将dir1中的内容拷贝到dir2中,但是不包括dir1目录。

在拷贝的过程中也可以添加-a参数,这样可以保留拷贝文件中的一些属性信息。

Linux系统编程 day01 Linux常用基础命令_第19张图片
Linux系统编程 day01 Linux常用基础命令_第20张图片Linux系统编程 day01 Linux常用基础命令_第21张图片

04.11 mv

该命令的作用有两个,一个是重命名,一个是移动。当移动的时候第二个参数一定是目录文件。用法为mv file/dir file/dir
Linux系统编程 day01 Linux常用基础命令_第22张图片

04.12 cat

用于将文件内容一次性输出到终端。用法为cat 文件名。缺点是文件内容如果太长会无法全部显示,可以结合we年的重定向。比如cat file1 > file2相当于是cp file1 file2

Linux系统编程 day01 Linux常用基础命令_第23张图片

04.13 more

将文件内容分页显示到终端,但是只能一直向下游览,不能回退。使用方法为more file。相关操作为回车显示下一行,空格显示下一页,退出可以使用q或者ctrl+ c

04.14 less

将文件分页显示到终端,可以自由上下游览。使用方法为less file。相关操作为:

操作 方法
显示下一行 回车、ctrl + p、↓
显示上一行 ctrl + n、↑
显示下一页 空格、PageDown
显示上一页 PageUp
退出 q

04.15 head

用于查看文件的前几行内容,默认是10行内容。如果需要指定行数可以加参数-数字就能显示指定前几行。用法为head file

Linux系统编程 day01 Linux常用基础命令_第24张图片

04.16 tail

用于查看文件的最后几行的内容,使用方法和head是一样的。

Linux系统编程 day01 Linux常用基础命令_第25张图片

04.17 软链接

软链接相当于Windows下的快捷方式。创建方法为ln -s file/dir link。需要注意的是ln创建的链接需要使用绝对路径进行创建,因为如果不使用绝对路径进行创建的话一旦链接的位置发生了变化则就不能找到那个文件了。软链接文件的大小是路径加上文件名的总字节数。

Linux系统编程 day01 Linux常用基础命令_第26张图片

04.18 硬链接

硬链接相当于是给一个文件起了另一个名字。硬链接的创建方式为ln file link。硬链接需要注意的是不能建在目录上。硬链接对绝对路径没有要求。硬链接不能跨域文件系统,因为硬链接中的inode是一样的,而跨越了文件系统可能会导致inode不一致。硬链接的本质就是不同文件名所在的inode节点是相同的,相同的inode节点指向了相同的数据块,所有他们的文件内容都是一样的,文件内容也会进行同步。我们可以使用ls -i file来查看文件的inode节点,也可以使用stat file查看。

Linux系统编程 day01 Linux常用基础命令_第27张图片

Linux系统编程 day01 Linux常用基础命令_第28张图片

硬链接不仅可以起到同步文件的作用,还可以起到保护文件的作用。当删除文件的时候文件的硬链接计数只要不为0,那么文件就不会被删除。

04.17 wc

用于显示文件行数,字节数和单词数。使用方法为wc file。其中有一些可选参数,-c表示统计总字节数,-l表示统计总行数,-w统计总单词数。

Linux系统编程 day01 Linux常用基础命令_第29张图片

04.18 whoami

用于显示当前登录的用户名。

在这里插入图片描述

05. 用户权限、用户、用户组命令

0501 修改文件权限chmod

Linux是通过权限来对文件进行访问控制的。chmod可以修改文件的相关权限。

第一种方法是文字设定法chmod [who] [+-=][mod] file。其中[who]表示操作的对象,a表示所有用户(默认),u表示用户,g表示同组用户,o表示其他用户。操作符[+-=]分别表示添加、取消、赋予给定权限取消其他权限。权限mod中有r为读权限,w为写权限,x为执行权限。

Linux系统编程 day01 Linux常用基础命令_第30张图片

第二种方法为数字设定法。用法为chmod [+-=][mod] file。其中操作符与文字设定法是一样的。而[mod]则需要用三位数字,其中0表示没有权限,1表示执行权限,2表示写权限,4表示读权限。三位数字分别表示用户、同组用户以及其他用户。

Linux系统编程 day01 Linux常用基础命令_第31张图片

0502 修改文件所有者chown

chown的作用是修改文件所有者以及修改文件的所属组。修改文件的所有者的方法为chown user file。修改文件所有者以及所属组为chown user.group file或者chown user:group file

Linux系统编程 day01 Linux常用基础命令_第32张图片

0503 修改文件所属组chgrp

该命令是用于修改文件所属组。修改的方法为chgrp group file/dir

Linux系统编程 day01 Linux常用基础命令_第33张图片

06. 查找命令

06.01 find

该命令主要用于查找文件,查找的格式为find path condition

  • 按文件名查询:-name filename。完整的命令为find path -name filename
    Linux系统编程 day01 Linux常用基础命令_第34张图片

  • 按文件类型查询:-type typename。完整的命令是find path -type typename。其中typename有其中,分别是普通文件f,目录文件d,符号连接文件l,块设备文件b,字符设备文件c,套接字文件s,管道文件p

    Linux系统编程 day01 Linux常用基础命令_第35张图片

  • 按照文件大小查询:-size。完整的命令为find path -size scope。其中+表示大于,-表示小于,不添加任何则表示等于。在大小的时候M必须要大写,k必须要小写,c表示字节数。

    Linux系统编程 day01 Linux常用基础命令_第36张图片

  • 按文件日期查询:

    • 创建日期-ctime -n/+nn表示天数,-表示小于,+表示大于。
    • 修改日期-mtime -n/+n
    • 访问日期-atime -n/+n
      Linux系统编程 day01 Linux常用基础命令_第37张图片
  • 按深度查询:-maxdepth n-mindepth n
    Linux系统编程 day01 Linux常用基础命令_第38张图片
    除了上面的内容外,还有一些高级的查询。如:find path condition -exec shellCommand {} \;,可以将查询得到的结果交给后面的command执行。例如查找指定目录下所有目录并且列出目录中文件的详细信息为find . -type d -exec | ls -l {} \;。第二个是find path condition -ok shellCommand {} \;,但是在执行的时候会让你进行是否确定。例如find . -type d -ok ls -l {} \;。第三个是find path condition | xargs shellCommand。这个的用途和第一个命令一样。例如实现上面同样的功能为find . -type d | xargs ls -l

Linux系统编程 day01 Linux常用基础命令_第39张图片

06.02 grep

该命令可以用于对于文件的内容进行查找,用法为grep arguments string。参数如下:

  • -r: 如果是目录,则可以递归进行搜索。
  • -n:显示查找内容所在的行号。
  • -i:可以忽略大小写进行查找。
  • -v:不显示含有的字符串。

Linux系统编程 day01 Linux常用基础命令_第40张图片

07. Linux中常用的压缩工具

首先我们需要了解一下gzipbzip2。在Linux中这两个不能压缩目录,只能一个一个文件进行压缩,压缩之后会使原文件消失。

  • gzip *:压缩当前目录下所有的文件,但是目录不能压缩。
  • gunzip *:解压当前目录下所有的.gz文件。
  • bzip2 *:压缩当前目录下所有的文件,但是目录不能压缩。
  • bunzip2 *:压缩当前目录下所有的.bz2文件。

在压缩工具中,tar是很重要的。现在说一下关于tar命令中的一些参数。

  • z:用gzip来压缩或者解压文件。
  • j:用bzip2来压缩或者解压文件。
  • c:用于创建新的压缩文件,与x互斥使用。
  • x:从压缩文件中释放文件,与c互斥使用。
  • v:详细报告tar处理的文件信息。
  • f:指定压缩文件的名字。
  • t:查看压缩包中有哪些文件。

压缩的命令如下:

  • tar cvf 压缩包名.tar 文件/目录
  • tar zcvf 压缩包名.tar.gz 文件/目录
  • tar jcvf 压缩包名.tar.bz2 文件/目录

解压缩命令如下:

  • tar xvf 压缩包名
  • tar zxvf 压缩包名
  • tar jxvf 压缩包名

查看压缩包中有哪些文件

  • tar -tvf 压缩包名

Linux系统编程 day01 Linux常用基础命令_第41张图片

Linux系统编程 day01 Linux常用基础命令_第42张图片
Linux系统编程 day01 Linux常用基础命令_第43张图片

接下来说一下关于rar工具和zip工具。

  • rar压缩命令:rar a -r 压缩包名 需要压缩的文件
  • rar解压缩命令:rar x 压缩包名
  • zip压缩命令:zip -r 压缩包名 需要压缩的文件
  • zip解压缩命令:unzip 压缩包名 -d 解压目录

Linux系统编程 day01 Linux常用基础命令_第44张图片Linux系统编程 day01 Linux常用基础命令_第45张图片Linux系统编程 day01 Linux常用基础命令_第46张图片
Linux系统编程 day01 Linux常用基础命令_第47张图片

08. 软件的安装与卸载

08.01 在线安装

软件安装:sudo apt-get install 软件名
软件卸载:sudo apt-get remove 软件名
更新软件列表:sudo apt-get update
清理安装包:sudo apt-get clean。清理的路径是/var/cache/apt/archives

08.02 软件包安装

安装deb格式的安装包,安装时候必须要先有对应格式的安装包。
安装命令为sudo dpkg -i 软件名.deb,卸载为sudo dpkg -r 软件名

你可能感兴趣的:(Linux系统编程,linux,运维,ubuntu)