Linux主要shell命令详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux主要shell命令详解相关的知识,希望对你有一定的参考价值。

参考技术A 命令替换
  命令替换和重定向有些相似,但区别在于命令替换是将一个命令的输出作为另外一个命令的参数。常用命令格式为:
  command1
`command2`
  其中,command2的输出将作为command1的参数。需要注意的是这里的`符号,被它括起来的内容将作为命令执行,执行后的结果作为command1的参数。例如:
  $
cd
`pwd`
  该命令将pwd命令列出的目录作为cd命令的参数,结果仍然是停留在当前目录下。
参考技术B 利用反引号的这种功能可以进行命令置换,即把反引号括起来的执行结果赋值给指定变量。例如:
  $
today=`date`
  $
echo
Today
is
$today
  Today
is
Mon
Apr
15
16:20:13
CST
1999
  $
  反引号还可以嵌套使用。但需注意,嵌套使用时内层的反引号必须用反斜线()将其转义。例如:
  $
abc=`echo
The
number
of
users
is
`who|
wc-l``
  $
echo
$abc
  The
number
of
users
is
5
  $
  在反引号之间的命令行中也可以使用shell的特殊字符。Shell为得到``中命令的结果,它实际上要去执行``中指定的命令。执行时,命令中的特殊字符,如$,”,?等又将具有特殊含义,并且``所包含的可以是任何一个合法的Shell命令,如:
  $
ls
  note
readme.txt
Notice
Unix.dir
  $
TestString=”`echo
$HOME
`
`
ls
[nN]*`”
  $
echo
$TestString
  /home/yxz
note
Notice
  $
  其他情况,读者可自行试之。
  1.
注释符
  在shell编程中经常要对某些正文行进行注释,以增加程序的可读性。在Shell中以字符“#”开头的正文行表示注释行。
  此外还有一些特殊字符如:用于输入/输出重定向与管道的<、>、<<、>
>和|;执行后台命令的&;命令执行操作符&&和||及表示命令组的将在下面各小节中加以介绍。
  
标准输入/输出和重定向
  1.
标准输入与输出
  我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。
  我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:
  $
cat
config
  将会把文件config的内容依次显示到屏幕上。但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。例如:
  $
cat
  Hello
world
  Hello
world
  Bye
  Bye
  <ctrl+d>
  $
  用户输入的每一行都立刻被cat命令输出到屏幕上。
  另一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。下面的例子是从标准输入读入一个采购单,并将其排序。
  $
sort
  bananas
  carrots
  apples
  <ctrl+d>
  apples
  bananas
  carrots
  $
  这时我们在屏幕上得到了已排序的采购单。
  直接使用标准输入/输出文件存在以下问题:
  输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。下次再想用这些数据时就得重新输入。而且在终端上输入时,若输入有误修改起来不是很方便。
  输出到终端屏幕上的信息只能看不能动。我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。
  为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。

linux常用命令详解

一、命令的分类
用于实现某一类功能的指令或程序

命令本质就是程序

命令的执行必须依赖于shell命令解释器程序(例如:/bin/bash)

shell解释器,是Linux系统中运行的一种特殊程序,就是作为翻译官,横跨在用户和内核之间,将用户输入的命令解释为内核能识别的语言

只要是用户登录系统后,他都自带的在/bin/bash当中,也就是它可以使用shell这个程序来进行登录到系统。

shell也是一种进程。
Linux里支持很多种shell,但默认的shell是/bin/bash:
cat /etc/shells 查看linux系统所支持的shell程序

2.Linux命令的分类
内部命令:属于shell解释器的一部分
内部命令就是伴随系统内核自动就携带的命令 。
外部命令:独立于shell解释器之外的程序
外部命令,是需要靠第三方的文件和命令文件所支持,只有你有这个命令文件你才能使用这个命令,这就是外部的

type 命令 判断用户输入的是外部命令还是内部命令
技术分享图片

注:shell内嵌代表内部命令,文件路径代表外部命令 。

二、命令的格式
1.Linux命令的通用格式
命令字 [选项] [参数]
说明:
命令字,就是命令

选项,选项的意思就是增加一些功能,它的作用就是用于调节命令的具体功能

参数,参数就是你要执行的对象,你要对哪个目录哪个文件进行操作,这个对象一定要指明

注:参数最好使用绝对路径。

所以说,这三个组成,命令,我要执行干什么,选项,我要在干这个的时候执行哪些功能,有了功能,我要对谁执行,这三个部分一定有。

选项里面有两种格式:
“-”引导短格式选项,例如“ls -a”
后面基本是跟一个单个字母 -a -b -c -d = -abcd
“--”引导长格式选项,例如
“ls --help”后面跟的是一个单词

三、命令操作技巧
1.Tab键:按一次,自动补齐;按两次Tab键,系统将输出可用的名称列表
2.反斜杠“”:强制换行 , 用于命令过长的情况
3.ctrl+U:快速删除当前光标处之前的所有字符
4.ctrl+K:快速删除从当前光标处到行尾的所有字符
5.ctrl+L:快速清空当前屏幕中的显示内容
6.ctrl+C:取消当前命令行的编辑,终止
7.ctrl+a:跳到行首
8.ctrl+e:跳到行尾

四、获取命令帮助

尽量不要去试图记住所有的命令的选项,只要记住常见的命令就可以了。

1.内部命令 help
查看各shell内部命令 的帮助信息
技术分享图片

2.命令的“--help”选项
适用于大多数外部命令
通常用于查看命令的用法
将命令的所有选项都列表出来,并解释其功能作用
技术分享图片

3.使用man命令阅读手册页
出现一个文本信息模式,在这个文本信息模式中,翻阅去查看
使用“上,下”方向键滚动文本
使用PageUp和PagedDown键翻页
按Q或q键退出阅读环境
按“/”键查找内容;
n往下找,N往上找

满命令帮助信息的结构和意义:

结构名称 意义
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式

4、whatis ---> 只是告诉命令是干什么的
是man的一个摘要
格式:whatis 命令
当你看到一个不会的命令,可以使用此命令查看是干什么的。

5、查询的命令:
ls:列表(list)显示目录中内容:
-a:显示所有的子目录和文件的信息,包括名称以点号“.”开头的隐藏目录和隐藏文件
-A:与-a作用类似,但有两个特殊隐藏目录不会显示,“.”和“..”
-l:以长格式显示文件和目录的列表
例子:ls -l /etc
-d:显示目录本身的属性
例子:ls -ld /zz/ 以长格式显示目录本身的属性
-h:显示出详细信息,如大小,结合-l一起使用
例子:ls -lh
-R:以递归方式将当前目录中的子目录全部展开
--color 默认情况就有了这条选项

注:
Linux中的一切事物都是文件。
在所有的linux系统当中,组成文件的类型,不像windows当中的那么直观,在windows中,这个是文件夹,这个是文件,并且我们都可以通过它的后缀名知道它是什么文件类型。但是linux当中就不一样,linux当中,凭借颜色可以识别它到底是哪种文件类型:
蓝色 是目录(文件夹)
白色 是普通文本文件
绿色 是可执行文件(脚本文件)
××× 是设备文件
红色 是压缩性文件 (压缩包)
浅蓝色 是软链接文件(快捷方式)
红色闪烁:表示链接的文件有问题
灰色 是其他文件

6、创建别名——alias

作用:
1、通过给危险命令加一些保护参数,防止人为误操作
2、把很多复杂的字符串或命令编程一个简单的字符串或命令。
例子:
alias mysql="echo 这条命令无效"

别名对应的命令:
alias #只输入一个“alias"是查看已设置的别名
alias 别名 #创建一个新别名
unalias 别名 #取消已创建的别名
那么有的时候,这种别名,你操作起来还是比较简便的
那么别名这种形式,比如说这个命令是一个组合,ls -alh
你可以通过alias把它定义,说白了就是给它取个小名或者称号,
Alias myls=‘ls -alh‘
注意:单引号不要忘了 ,它其实就是创建一个快捷键
然后我们输入myls,就是相当于执行了“ls -alh”这条命令。

ls 和 /bin/ls 就是直接使用ls命令,不是使用ls --color:auto

注:“”是转义符号,将有特殊含义的字符串转换为普通字符串。

以上都是临时的

永久设置别名:放置在系统的环境变量文件中
一般放置在以下两个地方:
/etc/profile 全局生效,即对所有人生效
~/.bashrc 当前用户生效,只对当前登录的用户生效

7、du——统计目录
作用:统计指定目录(或文件)所占用磁盘空间的大小
常用选项有:
-a,统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录,实际上统计里面空间文件 的大小,罗列的非常详细
-h,以友好形式显现出目录或文件的大小(K、M),默认的大小单位为字节(B)
-s,只统计每个参数所占用空间总的大小,而不是统计每个子目录、文件的大小

注意了,a和s不能同用,你要么使用du -ah,要么使用du -sh
如果你用了,系统就会报错

8、创建目录和文件——mkdir, touch,
1.创建目录(文件夹) mkdir
格式:mkdir [选项] 目录位置及名称
-p 一次性创建嵌套的多层目录

9、创建文本文件——touch
格式:touch 文本文件名 (不加任何选项)
文件名之间以空格分隔,可以一次性创建多个文件。
(1)当文件不存在,则创建新文件
(2)当目标文件已存在时,将更新该文件的时间标记

10、复制拷贝文件或目录——cp命令 (copy)
格式:cp [选项] 源文件或目录… 目标文件或目录
-f:覆盖目标同名文件或目录时不进行提醒,直接强制复制
-i:覆盖目标同名文件或目录时提醒用户确认
-p:复制时保持源文件的权限,属主及时间标记等属性不变
-r:复制目录时必须使用此选项,表示递归复制所用文件及子目录
通常后面加‘v’,显示过程(cp -rv)

11、删除文件或目录 ——rm (remove)
格式:rm [选项] 要删除的文件名称或目录名称
-f:删除文件或目录时不进行提醒,而直接强制删除
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应该谨慎使用)

谨慎操作:rm -rf *

单独的一个,代表所有
a
代表的是以a开头的所有文件或目录
?只代表一个数或者字母

12、移动文件或目录——mv(move) 重命名 (剪切)
作用:(1)将指定的文件或目录转移位置 (不同目录下,剪切/移动)
(2)如果目标位置与源位置相同,则相当于执行重命名操作 (同一目录下,重命名)
格式:mv 源文件或目录 目标文件或目录

使用绝对路径。

13、查找用户所执行的命令文件存放的目录——which命令
查找可执行程序的位置,只去$PATH结果中找
搜索范围由环境变量PATH决定
$PATH系统环境变量
echo $PATH(查看用户环境变量的命令)
PATH的值—系统中所有可执行命令的位置
格式 which 命令或者程序名
默认当找到第一个目标后不再继续查找
which -a 命令或者程序名 如果希望在所有搜索路径中查找 一直找

14、查找文件或目录 find命令
find [目录] [命令] [名称]
(1)按名称查找
find 源目录 -name 关键字
a(a开头),ba(结尾),b; a??
??A(一个“?”代表一个字符)
(2)按文件大小查找 find 源目录 -size
-30k(小于30k);+30k(大于30k);30k(等于30k);MB,GB(注意大小写,B可省略),加“”
(3)按文件属主查找 find 源目录 -user
按帐户/用户名查找
(4)按uid查找 find 源目录 -uid
查找当普通帐户被删除之后,该用户所创建的文件
查看uid 的命令是:id 用户名

例子:find /bin -uid 1000
查找/bin目录下UID为1000的文件

(5)按文件类型查找 find 源目录 -type
l(软链接,快捷方式),f(普通文件),d(目录),b(硬件设备文件),c(字符终端,字符块设备)
例子:find /bin -type l/f/d/b/c
查找/bin目录下的文件类型为l/f/d/b/c的文件或目录

linux系统中一切事物都是文件。

(6)用find进行多条件查找:
-a 表示 而且(and) ; -o 表示 或者(or)
例子:find /etc -size +40k -a -type f
查找/etc大于40k的并且文件类型为普通文件的文件。
find /etc -size +20K -o -size -10k
查找/etc大于20k文件或者小于10k文件。
find /etc -size +100k -a -size -150k
查找/etc中的100k到150k的文件

15、对文件内容进行查看:
cat:直接一次性查看所有内容。

tac:从最后一行开始倒着显示文档内容

more:从文件开头开始显示内容,通过按下空格键查看下一屏内容,不允许向上翻。按回车键可以一行一行向下翻。看到最后一屏自动退出查看。

less: 有more就有less,less不与more相反且更为强大,内容并不从尾部显示到头部,与more显示顺序相同,它集成了more的空格键与回程键功能,同时还有以下功能:
1.支持上下方向键向上向下翻转一行内容,j、k键分别实现上下翻功能。
2.还支持page down 与 page up实现按屏翻。Ctrl+b向下按屏翻,Ctrl + f向上按屏翻(助记:bottom下,front上)。
3.按下"g"实现回到首行功能,按下"G"实现到最后一行功能。
4.less支持搜索关键字,按下 "/" 后输入要查找的关键字,文中匹配字符串将高亮显示。且按下字母n键,可以一个一个向后查看这些关键字。向前查用N键。
除了" /" ,用"?"键加上要查找的字符串也是大体相同,只是n与N键对字符串的跳动方向相反。
注意看到最后一屏消息并不会结束less命令,按下q退出查看。

head:默认查看内容前10行,加上参数如 head -2 1.txt 查看前两行。

tail:默认查看后十行,加上参数如 tail -2 1.txt查看后两行。加上参数 -f 可以动态查看末尾内容(相当于看到的文件始终是最新的)。退出用Ctrl +c键.

16、grep:检索和过滤文件内容
格式:
grep 选项 “查找条件 ” 目标文件

-i:查找时忽略大小写
-v:反转查找,输出与条件不相符的行

“^…”:表示以…开头
“…$”:表示以…结尾
“^$”:表示空行

17、gzip和gunzip 以gzip格式压缩和解压缩
格式:
gzip -9 文件名 #-9是压缩级别,9为最高级别
gunzip 压缩文件名 等同于 gzip -d 压缩文件名

18、bzip2,bunzip2 以bzip2格式压缩和解压缩
格式:
bzip2 -9 文件名 #-9是压缩级别,9为最高级别
bunzip2 压缩文件名 等同于 bzip2 -d 压缩文件名

19、zip和unzip 以zip格式压缩和解压缩
格式:
zip -9 文件名
unzip 压缩文件名

20、tar 用于对文件进行打包压缩或解压。
格式:
tar 选项 打包的文件名 源文件或目录
常用选项:
-c :创建压缩文件
-t :查看压缩包内有哪些文件
-x :解开压缩文件
-z :以 gzip 的格式进行压缩或解压缩:此時压缩文件名最好为 .tar.gz
-j : 以bzip2 的格式进行压缩或解压缩:此時压缩文件名最好为
.tar.bz2
-J :以 xz的格式进行压缩或解压缩:此時压缩文件吗最好为 *.tar.xz
-v :显示压缩、解压过程
-f :目标文件名(-f应放在参数末位,立即接文档名)
-C :解压到指定目录

注:特別留意的是, -c, -t, -x 不可同时出現在一串指令列中。
特別留意, -z, -j, -J 不可以同时出現在一串指令列中

打包压缩:
tar -czvf 压缩后的文件名.tar.gz 源文件或目录
tar -cjvf 压缩后的文件名.tar.bz2 源文件或目录
查看压缩文件中的内容:
tar -tzvf 压缩后的文件名.tar.gz
tar -tjvf 压缩后的文件名.tar.bz2
解压压缩文件:
tar -xvf 压缩后的文件名.tar.gz -C 目的目录

以上是关于Linux主要shell命令详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux主要shell命令详解(上)

Linux主要shell命令详解(下)

Linux主要shell命令详解(中)

linux shell脚本执行命令详解

Linux 命令详解Shell 解析 json命令jq详解

Linux 命令详解Shell脚本的数组详解