基本shell命令学习

来源:互联网 发布:c语言abs函数不存在 编辑:程序博客网 时间:2024/05/18 04:01

Shell基本命令

Ls命令

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);

-A:显示除影藏文件“.”“..”以外的所有文件列表;

-C:多列显示输出结果。这是默认选项;

-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;

-F:在每个输出项后追加文件的类型标识符,具体含义:“*”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;

-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;

-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;

-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表; -f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;

-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;

--file-type:与“-F”选项的功能相同,但是不显示“*”

-k:以KB(千字节)为单位显示文件大小;

-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

-m:用“,”号区隔每个文件和目录的名称;

-n:以用户识别码和群组识别码替代其名称;

-r:以文件名反序排列并输出目录内容列表;

-s:显示文件和目录的大小,以区块为单位;

-t:用文件和目录的更改时间排序;

-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;

-R:递归处理,将指定目录下的所有文件及子目录一并处理;

--full-time:列出完整的日期与时间;

--color[=WHEN]:使用不同的颜色高亮显示不同类型的。

man命令使用

man命令:可以通过一些参数,快速查询linux帮助手册,并且格式化显示。

使用语法:

man [-adfhktwW] [section] [-M path] [-Ppager] [-S list]  [-m system] [-p string]title..

参数用法:

man命令常用参数

-a      显示所有匹配项

-d      显示man查照手册文件时候,搜索路径信息,不显示手册页内容

-D     同-d,显示手册页内容

-f       同命令whatis,将在whatis数据库查找以关键字开同的帮助索引信息

-h      显示帮助信息

-k      同命令apropos将搜索whatis数据库,模糊查找关键字

-S list指定搜索的领域及顺序,如:-S 1:1phttpd将搜索man1然后 man1p目录

-t      使用troff命令格式化输出手册页默认:groff输出格式页

-w     不带搜索title打印manpath变量带title关键字打印找到手册文件路径,默认搜索一个文件后停止

-W    同-w

man命令其它参数

-c      显示使用cat命令的手册信息

-C     指定man命令搜索配置文件默认是man.config

-K      搜索一个字符串在所有手册页中,速度很慢

-M    指定搜索手册的路径

-P pro        使用程序pro显示手册页面默认是less

-B pro       使用pro程序显示HTML手册页默认是less

-H pro       使用pro程序读取HTML手册,用txt格式显示,默认是cat

-p str         指定通过groff格式化手册之前,先通过其它程序格式化手册

 

Grep命令

grep [options]

语法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。

 

-a或--text  不要忽略二进制的数据。

 -A<显示列数>或--after-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之后的内容。

  -b或--byte-offset   在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

  -B<显示列数>或--before-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前的内容。

  -c或--count   计算符合范本样式的列数。

 -C<显示列数>或--context=<显示列数>或-<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

 -d<进行动作>或--directories=<进行动作>   当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

 -e<范本样式>或--regexp=<范本样式>   指定字符串做为查找文件内容的范本样式。

  -E或--extended-regexp   将范本样式为延伸的普通表示法来使用。

 -f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

  -F或--fixed-regexp   将范本样式视为固定字符串的列表。

  -G或--basic-regexp   将范本样式视为普通的表示法来使用。

  -h或--no-filename  在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

  -H或--with-filename   在显示符合范本样式的那一列之前,表示该列所属的文件名称。

  -i或--ignore-case   忽略字符大小写的差别。

  -l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。

  -L或--files-without-match   列出文件内容不符合指定的范本样式的文件名称。

  -n或--line-number   在显示符合范本样式的那一列之前,标示出该列的列数编号。

  -q或--quiet或--silent   不显示任何信息。

  -r或--recursive   此参数的效果和指定“-d recurse”参数相同。

  -s或--no-messages   不显示错误信息。

  -v或--revert-match   反转查找。

  -V或--version   显示版本信息。

  -w或--word-regexp   只显示全字符合的列。

  -x或--line-regexp   只显示全列符合的列。

 -y   此参数的效果和指定“-i”参数相同。

 --help   在线帮助。

 

PS命令

名称:ps

使用权限:所有使用者

使用方式:ps [options] [--help]

说明:显示瞬间行程 (process) 的动态

参数:ps的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A   列出所有的进程

-w   显示加宽可以显示较多的资讯

-au   显示较详细的资讯

-aux   显示所有包含其他使用者的行程

 

常用参数:

 

-A 显示所有进程(等价于-e)(utility)

-a 显示一个终端的所有进程,除了会话引线

-N 忽略选择。

-d 显示所有进程,但省略所有的会话引线(utility)

-x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)

-p pid 进程使用cpu的时间

-u uid or username 选择有效的用户id或者是用户名

-g gid or groupname 显示组的所有进程。

U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)

-f 全部列出,通常和其他选项联用。如:ps-fa or ps -fx and so on.

-l 长格式(有F,wchan,C 等字段)

-j 作业格式

-o 用户自定义格式。

v 以虚拟存储器格式显示

s 以信号格式显示

-m 显示所有的线程

-H 显示进程的层次(和其它的命令合用,如:ps-Ha)(utility)

e 命令之后显示环境(如:ps -d e;ps -a e)(utility)

h 不显示第一行

 

 

ps命令常用用法(方便查看系统进程)

1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。

2)ps -A 显示所有进程。

3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

4)ps -e 此参数的效果和指定"A"参数相同。

5)ps e 列出程序时,显示每个程序所使用的环境变量。

6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。

7)ps -H 显示树状结构,表示程序间的相互关系。

8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。

9)ps s 采用程序信号的格式显示程序状况。

10)ps S 列出程序时,包括已中断的子程序资料。

11)ps -t<终端机编号>  指定终端机编号,并列出属于该终端机的程序的状况。

12)ps u  以用户为主的格式来显示程序状况。

13)ps x  显示所有程序,不以终端机来区分。

最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。

 

Kill命令

Linux中的kill命令用来终止指定的进程(terminatea process)的运行,是Linux下进程管理的常用命令。通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行“杀掉”该进程。

1.命令格式:

kill[参数][进程号]

2.命令功能:

发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。如果任无法终止该程序可用“-KILL”参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令可以查看进程号。root用户将影响用户的进程,非root用户只能影响自己的进程。

3.命令参数:

-l  信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称

-a  当处理当前进程时,不限制命令名和进程号的对应关系

-p  指定kill 命令只打印相关进程的进程号,而不发送任何信号

-s  指定发送信号

-u  指定用户

注意:

1、kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:

kill -2 123

它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。

2、kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

3、可以向多个进程发信号或终止它们。

4、当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。

5、应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

 

cp命令

cp[options] [file1] [file2]

功能: 复制文件或目录

说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息

参数:

    -a 或 --archive     此参数的效果和同时指定"-dpR"参数相同

    -b 或 --backup      删除、覆盖目的文件先备份,备份的文件或目录亦建立为符号链接,并指向源文件或目录链接的源文件或目录。假如没有加上这个参数,在复制过程中若遇到符号链接,则会直接复制源文件或目录

    -f 或 --force       强行复制文件或目录, 不论目的文件或目录是否已经存在

    -i 或 --interactive 覆盖文件之前先询问用户

    -l 或 --link        对源文件建立硬链接,而非复制文件

    -p 或 --preserve    保留源文件或目录的属性,包括所有者、所属组、权限与时间

    -P 或 --parents     保留源文件或目录的路径,此路径可以是绝对路径或相对路径,且目的目录必须已经丰在

    -r                  递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理

    -R 或 --recursive   递归处理,将指定目录下的文件及子目录一并处理

    -s 或 --symbolic-link  对源文件建立符号链接,而非复制文件

    -S <备份字尾字符串> 或 --suffix=<备份字尾字符串> 用"-b"参数备份目的文件后,备份文件的字尾会被加上一个备份字符串。默认的备份字尾符串是符号"~"

    -u 或 --update      使用这项参数之后,只会在源文件的修改时间(Modification Time)较目的文件更新时,或是名称相互对应的目的文件并不存在,才复制文件

    -v 或 --verbose     显示执行过程

    -V <备份方式> 或 --version-control=<备份方式>  指定当备份文件时,备份文件名的命名方式,有以下3种:

                         1.numbered或t, 将使用备份编号,会在字尾加上~1~字符串,其数字编号依次递增

                         2.simple或never 将使用简单备份,默认的备份字尾字符串是~, 也可通过-S来指定

                         3.existing或nil将使用当前方式,程序会先检查是否存在着备份编号,若有则采用备份编号,若无则采用简单备份

    -x 或 --one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不复制,亦不处理位于其他分区的文件

    --help              显示在线帮助

    --sparse=<使用时机>  设置保存希疏文件的时机

    --version           显示版本

 

mv命令

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

1.命令格式:

   mv [选项] 源文件或目录目标文件或目录

2.命令功能:

视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

3.命令参数:

-b :若需覆盖文件,则覆盖前先行备份。

-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;

-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!

-u :若目标文件已经存在,且 source 比较新,才会更新(update)

            -t  :--target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

 

rm 命令

rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

1.命令格式:

rm [选项] 文件…

2.命令功能:

删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

3.命令参数:

   -f, --force    忽略不存在的文件,从不给出提示。

   -i, --interactive 进行交互式删除

   -r, -R, --recursive   指示rm将参数中列出的全部目录和子目录均递归地删除。

   -v, --verbose    详细显示进行的步骤

          --help     显示此帮助信息并退出

          --version  输出版本信息并退出

 

uname 命令

uname 命令可用于大多数UNIX和类UNIX系统以及Linux。

 

功能说明:uname用来获取电脑和操作系统的相关信息。

语  法:uname [-amnrsvpio][--help][--version]

补充说明:uname可显示linux主机所用的操作系统的版本、硬件的名称等基本信息。

参  数:

-a或–all     详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称

-m或–machine   显示主机的硬件(CPU)名

-n或-nodename 显示主机在网络节点上的名称或主机名称

-r或–release       显示linux操作系统内核版本号

-s或–sysname    显示linux内核名称

-v                      显示显示操作系统是第几个version 版本

-p                      显示处理器类型或unknown

-i                       显示硬件平台类型或unknown

-o                      显示操作系统名

 

cat 命令

cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。

1.命令格式:

cat [选项] [文件]...

2.命令功能:

cat主要有三大功能:

1.一次显示整个文件:cat filename

2.从键盘创建一个文件:cat >filename 只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件:catfile1 file2 > file

3.命令参数:

-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 之外

 

set 命令

set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值。使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式。set命令不能够定义新的shell变量。如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可。

语法 set(选项)(参数)

选项

-a:标示已修改的变量,以供输出至环境变量。

-b:使被中止的后台程序立刻回报执行状态。

-C:转向所产生的文件无法覆盖已存在的文件。

-d:Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。

-e:若指令传回值不等于0,则立即退出shell。

-f:取消使用通配符。

-h:自动记录函数的所在位置。

-H Shell:可利用"!"加<指令编号>的方式来执行history中记录的指令。

-k:指令所给的参数都会被视为此指令的环境变量。

-l:记录for循环的变量名称。

-m:使用监视模式。

-n:只读取指令,而不实际执行。

-p:启动优先顺序模式。

-P:启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。

-t:执行完随后的指令,即退出shell。

-u:当执行时使用到未定义过的变量,则显示错误信息。

-v:显示shell所读取的输入值。

-x:执行指令后,会先显示该指令及所下的参数。

参数

取消某个set曾启动的参数。

 

 

 

 

Shell别名

  alias[自己命名的命令]=[系统的命令]

对Linux命令重新命名,主要考虑到很多linux命令带有冗长的选项和参数,频繁使用这些长命令极易造成用户使用上的不便。

别名的命令关键字是alias,基本格式为alias name='original-command'(等号两边不能有空格)。如aliasipconfig=ifconfig。

若要删除已经设置的别名,使用内建命令unalias,unalias -a表示删除所有已设置的别名,unalias alias-name表示仅删除alias-name别名。

 

 

tail命令

 

linux中tail命令---用于查看文件内容

 

最基本的是cat、more和less。

1. 如果你只想看文件的前5行,可以使用head命令,如:

head -5 /etc/passwd

2. 如果你想查看文件的后10行,可以使用tail命令,如:

tail -10 /etc/passwd 或 tail -n 10/etc/passwd

tail -f /var/log/messages

参数-f使tail不停地去读最新的内容,这样有实时监视的效果用Ctrl+c来终止!

3. 查看文件中间一段,你可以使用sed命令,如:

sed -n '5,10p' /etc/passwd

这样你就可以只查看文件的第5行到第10行。

 

tail语法格式:

   tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number] [ File ]

    或者

   tail [ -r ] [ -n Number ] [ File ]

使用说明:

   tail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。 Number 变量指定将多少单元写入标准输出。 Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件。

主要参数:

 

-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。

-c Number 从 Number 变量表示的字节位置开始读取指定文件。

-f 如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),那么tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定 File 参数,并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另一个进程正在写入的文件的增长。

-k Number 从 Number 变量表示的1KB 块位置开始读取指定文件。

-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。

-n Number 从首行或末行位置来读取指定文件,位置由Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移。

-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件。  

 

如果文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有与 -n 标志一起时才有效。否则,就会将其忽略。

原创粉丝点击