linux常用命令 (上)

105 阅读14分钟

linux常用命令

运行环境+笔记参考:Linux 命令基础入门 - 蓝桥云课 (lanqiao.cn)

Ls

  1. 查看目录清单
参数描述
-a–all 列出目录下的所有文件,包括以 . 开头的隐含文件
-l除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
-h–human-readable 以容易理解的格式列出文件大小(例如 1K 234M 2G)
-t以文件修改时间排序

  1. 列出/home文件夹下的所有文件和目录的详细资料:

ls -a -l /home

ls -al /home

Cd

  1. 切换到指定的目录
  2. 从当前目录进入当前用户主目录

cd ~

Pwd

参数描述
-P显示实际物理路径,而非使用连接(link)路径
-L当目录为连接路径时,显示连接路径

Mkdir

  1. 创建指定名称的目录
参数描述
-m --mode=模式设定权限<模式>
-p --parents可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
-v --verbose每次创建新目录都显示信息

Tree

Rm

  1. 删除一个目录中的一个或多个文件或目录
参数描述
-f --force忽略不存在的文件,从不给出提示
-i --interactive进行交互式删除
-r --recursive指示 rm 将参数中列出的全部目录和子目录均递归地删除
-v --verbose详细显示进行的步骤

Mv

  1. 移动文件或更改文件名
参数描述
-b --back若需覆盖文件,则覆盖前先行备份
-f --force如果目标文件已经存在,不会询问而直接覆盖
-i --interactive若目标文件已经存在时,就会询问是否覆盖
-u --update若目标文件已经存在,且源文件比较新,才会更新
-t --target该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后

如果不加-i,则默认直接覆盖

Cp

  1. 复制文件或者目录
参数描述
-t --target-directory指定目标目录
-i --interactive覆盖前询问(使前面的 -n 选项失效)
-n --no-clobber不要覆盖已存在的文件(使前面的 -i 选项失效)
-s --symbolic-link对源文件建立符号链接,而非复制文件
-f --force强行复制文件或目录,不论目的文件或目录是否已经存在
-u --update使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件

  1. -s:链接表示多了一个指向该文件的,比如建立b指向a,当b发发生改变时,a也会改变
  2. 将 test1 目录下的所有文件复制到 test2 目录下

  1. -u:只会复制最新更新的那一个文件

Cat

  1. 将文件或标准输入组合输出到标准输出
参数描述
-A --show-all等价于 -vET
-b --number-nonblank对非空输出行编号
-e等价于 -vE
-E --show-ends在每行结束处显示 $
-n --number对输出的所有行编号,由 1 开始对所有输出的行数编号
-s --squeeze-blank有连续两行以上的空白行,就代换为一行的空白行
-t与 -vT 等价
-T --show-tabs将跳格字符显示为 ^I
-u(被忽略)
-v --show-nonprinting使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

a.log的文件内容加上行号后输入b.log这个文件里

Nl

  1. linux 系统中用来计算文件中的行号
  2. 其默认的结果与 cat -n 有点不太一样。 nl 可以将行号做较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
  3. number of lines
参数描述
-b指定行号指定的方式,主要有两种:
-b a表示不论是否为空行,也同样列出行号(类似 cat -n)
-b t如果有空行,空的那一行不要列出行号(默认值)
-n列出行号表示的方法,主要有三种:
-n ln行号在屏幕的最左方显示
-n rn行号在自己栏位的最右方显示,且不加 0
-n rz行号在自己栏位的最右方显示,且加 0
-w行号栏位的占用的位数

More

常用参数

参数描述
+n从笫 n 行开始显示
-n定义屏幕大小为 n 行
+/pattern在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c从顶部清屏,然后显示
-d提示“Press space to continue,’q’ to quiet”,禁用响铃功能
-p通过清除窗口而不是滚屏来对文件进行换页,与-c 选项相似
-s把连续的多个空行显示为一行
-u把文件内容中的下划线去掉

常用操作

符号描述
=输出当前行的行号
q退出 more
空格键向下滚动一屏
b返回上一屏
  1. 将整个文件的内容从上到下显示在屏幕上。 more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空格键(space)往下一页显示,按 B 键就会往回(back)一页显示,而且还有搜寻字串的功能。more 命令从前向后读取文件,因此在启动时就加载整个文件。

-n 设定每屏行数为 2

查找第一个出现“g”字符串的行,并从该处前两行开始显示输出

显示/etc目录信息 , 每页显示 10 个文件信息

Less

  1. 对文件或其它输出进行分页显示的工具

常用参数

参数描述
-e当文件显示结束后,自动离开
-f强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-i忽略搜索时的大小写
-m显示类似 more 命令的百分比
-N显示每行的行号
-s显示连续空行为一行

常用操作

符号描述
/字符串向下搜索“字符串”的功能
?字符串向上搜索“字符串”的功能
n重复前一个搜索(与 / 或 ? 有关)
N反向重复前一个搜索(与 / 或 ? 有关)
b向前翻一页
d向后翻半页
q退出 less 命令
空格键向后翻一页
向上键向上翻动一行
向下键向下翻动一行
  1. 搜索字符串

输入/a,搜索,退出按q

less 与 cat 和 more 的区别

cat 命令功能:用于显示整个文件的内容,因为单独使用没有翻页功能,所以经常和 more 命令搭配使用,cat 命令还有一个可以将数个文件合并成一个文件的功能。

more 命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按 q 键停止显示。

less 命令功能:less 命令的用法与 more 命令类似,也可以用来浏览超过一页的文件。所不同的是 less 命令除了可以按空格键向下显示文件外,还可以利用上下键来滚动文件。当要结束浏览时,只要在 less 命令的提示符“:”下按 q 键即可。

其实这三个命令除了 cat 命令有合并文件的功能外,其余功能都很相近,只是在浏览习惯和显示方式上有所不同。

Less Cat More区别

cat 命令功能:用于显示整个文件的内容,因为单独使用没有翻页功能,所以经常和 more 命令搭配使用,cat 命令还有一个可以将数个文件合并成一个文件的功能。

more 命令功能:让画面在显示满一页时暂停,此时可按空格健继续显示下一个画面,或按 q 键停止显示。

less 命令功能:less 命令的用法与 more 命令类似,也可以用来浏览超过一页的文件。所不同的是 less 命令除了可以按空格键向下显示文件外,还可以利用上下键来滚动文件。当要结束浏览时,只要在 less 命令的提示符“:”下按 q 键即可。

其实这三个命令除了 cat 命令有合并文件的功能外,其余功能都很相近,只是在浏览习惯和显示方式上有所不同。

head

  1. 显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
参数描述
-q隐藏文件名
-v显示文件名
-c<字节>显示字节数
-n<行数>显示的行数
  1. -n

显示两个文件

Tail

  1. 用于显示指定文件末尾内容。常用查看日志文件。
参数描述
-f循环读取
-q不显示处理信息
-v显示详细的处理信息
-c<字节>显示的字节数
-n<行数>显示行数
  1. -f 文件有新内容增加时自动更新显示

  1. jobs查看正在后台运行的进程

kill -9 任务pid就可以将这个后台进程杀死。

Which

  1. 在 PATH 变量指定的路径中搜索可执行文件的所在位置。它一般用来确认系统中是否安装了指定的软件。
  2. which 可执行文件名称
  3. 确认是否安装了 gcc,查看 cd 命令的位置路径,可以看到在当前实验楼使用的系统中 cd 是一个 shell内建命令

什么是命令

  1. 是一个可执行程序,就像我们所看到的位于目录/usr/bin中的文件一样。属于这一类的程序,可以编译成二进制文件,诸如用 C 和 C++ 语言写成的程序,也可以是由脚本语言写成的程序,比如说 shell,perl,python,ruby,等等。

  2. 是一个内建于 shell 自身的命令。bash 支持若干命令,内部叫做 shell 内部命令 (builtins)。

  3. 是一个 shell 函数。这些是小规模的 shell 脚本,它们混合到环境变量中。 比如上面讲到的 cd 命令,在某些环境中就是一个 shell 函数。

whereis 命令

  1. 定位可执行文件、源代码文件和帮助文件在文件系统中的位置。whereis 命令还具有搜索源代码、指定备用搜索路径和搜索不寻常项的功能。
参数描述
-b定位可执行文件
-m定位帮助文件
-s定位源代码文件
-u搜索默认路径下除可执行文件、源代码文件和帮助文件以外的其它文件
-B指定搜索可执行文件的路径
-M指定搜索帮助文件的路径
-S指定搜索源代码文件的路径

locate

  1. locate 命令跟 whereis 命令类似,且它们使用的是相同的数据库。但 whereis 命令只能搜索可执行文件、联机帮助文件和源代码文件,如果要获得更全面的搜索结果,可以使用 locate 命令。
参数描述
-q安静模式,不会显示任何错误讯息
-n至多显示 n 个输出
-r使用正则表达式做寻找的条件
-V显示版本信息
  1. 搜索 etc 目录下所有以 sh 开头的文件

  1. 搜索 etc 目录下文件名包含 lou 的文件,可以使用如下命令:

Find(1)

  1. 主要作用是沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
参数描述
-printfind 命令将匹配的文件输出到标准输出
-execfind 命令对匹配的文件执行该参数所给出的 shell 命令
-name按照文件名查找文件
-type查找某一类型的文件
-prune使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth 选项,那么 -prune 将被 find 命令忽略
-user按照文件属主来查找文件
-group按照文件所属的组来查找文件
-mtime -n +n按照文件的更改时间来查找文件,-n 表示文件更改时间距现在小于 n 天,+n 表示文件更改时间距现在大于 n 天,find 命令还有 -atime 和 -ctime 选项
  1. 打印当前目录下所有以.txt 结尾的文件名

  1. 打印所有:find . -print
  2. 打印当前目录下所有以.txt 或.pdf 结尾的文件名

  1. 打印当前目录下所有不以.txt 结尾的文件名find . ! -name "*.txt"

Find(2)

  1. 根据文件类型来查找文件

  1. 文件权限查找文件,使用 -perm 选项。所有者使用 -user 选项。

  1. 打印当前目录下所有以 .txt 结尾的符号链接 find . -type l -name "*.txt" -print

  1. 打印当前目录下所有权限为 777 的 php 文件(web 服务器上的 php 文件一般需要执行权限)

    1. .:表示搜索的起始点,即当前目录。
    2. -type f:指定你正在查找普通文件。
    3. -name "*.php":指定你正在查找扩展名为.php的文件。
    4. -perm 777:指定你正在查找权限设置为777的文件。

  1. 打印当前目录下 root 用户拥有的所有文件

    1. .: 当前目录。
    2. -type f: 表示查找文件而不是目录。
    3. -user root: 表示查找属于root用户的文件。

  1. 打印当前目录下权限不是 777 和 664 的所有文件

    1. .: 当前目录。
    2. -type f: 表示查找文件而不是目录。
    3. ( ... ): 用于分组表达式。
    4. ! -perm 777: 表示不具有权限777的文件。
    5. ! -perm 644: 表示不具有权限644的文件。
    6. -and: 逻辑与运算符,表示两个条件都必须为真。

Find(3)

  1. 找到当前目录下所有 php 文件

    1. .: 当前目录。
    2. -name "*.php": 表示匹配文件名以".php"结尾的文件。
    3. -exec ls -l {} ;: 对于每个找到的文件,执行ls -l命令,{}会被替换为找到的文件名。

  1. exec后面只能跟单个命令,如果要多个命令可以写在脚本文件中

建立command.sh文件

填写内容

CTRL+x 退出 ,确定修改后回车即可

将多个命令写入脚本文件中,然后在 -exec 中使用这个脚本

Xargs

  1. 用管道将一个命令的 stdout(标准输出)重定向到另一个命令的 stdin(标准输入)。但有些命令只能以命令行参数的形式接收数据,而无法通过 stdin 接收数据流。在这种情况下,无法通过管道将数据重定向给这些命令。
  2. 这时 xargs 就可以发挥它的作用了,xargs 命令可以从标准输入接收输入,并把输入转换为一个特定的参数列表。
参数描述
-n指定每行最大的参数数量
-d指定分隔符
  1. 将多行输入转换为单行输出,args命令的目的是将输入中的每个单词作为输出中的一个单词

  1. 将单行输入转换为多行输出

    1. |: 管道符,将前一个命令的输出传递给下一个命令。
    2. xargs -n 3: 这部分使用 xargs 命令,将输入分组为每组三个。 -n 3 选项表示每个组包含三个元素。
    3. b.txt: 将 xargs 的输出重定向到文件 "b.txt" 中,以保存结果。

  1. 将单行输入转换为多行输出,指定分隔符为 i

    1. -d i : 指定分割符为i
    2. -n 3 :指定每行最多三个参数

  1. 查找

    1. find . -type f -name "*.c": 查找当前目录及其子目录下所有以 ".c" 结尾的文件。
    2. |: 管道符,将 find 命令的输出传递给下一个命令。
    3. xargs wc -l: 对于 find 命令找到的每个文件,将其传递给 wc -l 命令,wc -l 用于统计文件的行数。