您的位置:首页 > 运维架构 > Shell

【Linux基础】Shell常用命令

2013-06-10 16:11 776 查看
[align=left]当用户登录到linux系统时,便开始与bash进行互动,一直到用户注销为止。如果是普通用户,则Bash的默认提示符为“$”(代表一般身份使用者),如果是超级用户(root),提示符则变为“#”。用户与系统互动的过程便是通过在提示符后面输入操作命令来完成的。按照操作命令的来源,我们可以将其分为以下两大类:[/align]
1.
bash内置命令

[align=left]为了方便shell的操作,加快用户与系统互动的效率,bash中“内置”了很大一部分常用操作命令,如cd、umask等等[/align]
2.
外部应用命令

[align=left]为了加强shell的处理能力,除本身内置一部分命令外,还增加了对外部应用命令支持,如ls、ps等等[/align]
[align=left]在shell的命令提示符后面输入命令,如果是bash shell内置的命令,则由其自己负责回应。若是外部应用命令,则shell会找出其对应的外部应用程序,然后将控制权交给内核,由内核执行该应用程序之后再将控制权交回给shell。[/align]
[align=left]怎样知道这个命令是来自于外部命令还是内置在bash中的?这个可以利用type命令来观察。下面将会简单介绍type及几个常用命令:[/align]
(1)
type
[align=left]命令格式:type 参数 命令[/align]
[align=left]功能:判断一个命令是内置命令还是外部命令[/align]
[align=left]参数分析:[/align]

[align=center]参 数[/align]

[align=center]作 用[/align]

[align=center]没有[/align]

[align=left]显示出命令是外部命令还是bash内置命令[/align]

[align=center]-t[/align]

[align=left]File :表示为外部命令[/align]
[align=left]Alias :表示该命令为命令别名所设置的名称。[/align]
[align=left]Builtin:表示该命令为bash内置的命令功能。[/align]

[align=center]-p[/align]

[align=left]显示完整文件名(外部命令)或显示内置命令[/align]

[align=center]-a[/align]

[align=left]在PATH变量定义的路径中,列出所有含有name的命令,包含alias[/align]

[align=left]实验1:查询ls这个命令是否为bash内置命令?[/align]
[align=left][root@localhost /]# type ls[/align]
[align=left]ls is aliased to `ls --color=tty'[/align]
[align=left]没有任何参数,仅列出ls命令的最主要使用情况[/align]
[align=left][root@localhost /]# type -t ls[/align]
[align=left]Alias[/align]
[align=left]-t参数仅列出ls命令的最主要使用情况[/align]
[align=left][root@localhost /]# type -a ls[/align]
[align=left]ls is aliased to `ls --color=tty'[/align]
[align=left]ls is /bin/ls[/align]
[align=left]-a利用所有方法找出来的ls相关信息都会列举出来。[/align]
[align=left]实验2:那么,cd呢?[/align]
[align=left][root@localhost /]# type cd[/align]
[align=left]cd is a shell builtin[/align]
[align=left]实验解析:通过type命令的用法,可以知道,每个命令是否为bash的内置命令。此外,由于使用type搜索后面的名称时,如果后接的名称并不能以执行文件的状态找到,那么,该名称是不会显示出来。[/align]
(2)
echo
[align=left]命令格式:Echo arg[/align]
[align=left]功能:在屏幕上显示出由arg指定的字符串。[/align]
[align=left]参数分析:[/align]
[align=left]参数[/align]

[align=left]功能[/align]

[align=left]-n[/align]

[align=left]表示输出文字后不换行[/align]

[align=left]-e[/align]

[align=left]支持转义符号反斜杠“\”[/align]

[align=left]-E[/align]

[align=left]不支持转义符号反斜杠[/align]

[align=left][/align]
[align=left]实验:[/align]
[align=left][root@localhost test]# vi sh_01.sh[/align]
[align=left]#!/bin/bash[/align]
[align=left]echo "hello world!"[/align]
[align=left][root@localhost test]# ./sh_01.sh[/align]
[align=left]hello world![/align]
(3)
export
命令格式1:Export variable

[align=left]功能:shell可以用export把它的变量向下带入子shell,从而让子进程继承父进程中的环境变量。但子shell不能用export把它的变量向上带入父进程。[/align]
[align=left]实验:(shell变量章节详细分析)[/align]
命令格式2:Export

[align=left]功能:显示出当前所有环境变量及其内容。[/align]
[align=left]实验:[/align]
[align=left][root@localhost /]# export[/align]
[align=left]declare -x COLORTERM="gnome-terminal"[/align]
[align=left]declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=[/align]
[align=left]/tmp/dbus-4ELcBCtxnL"[/align]
[align=left]declare -x DESKTOP_SESSION="default"[/align]
[align=left]declare -x DISPLAY=":0.0"[/align]
[align=left]declare -x GDMSESSION="default"[/align]
[align=left]………..[/align]
[align=left]declare -x USER="root"[/align]
[align=left]declare -x WINDOWID="50331729"[/align]
[align=left]declare -x XAUTHORITY="/root/.Xauthority"[/align]
[align=left]declare -x XMODIFIERS="@im=htt"[/align]
(4)
readonly
[align=left]命令格式1:readonly variable[/align]
[align=left]功能:将一个用户自定义的shell变量标识为不可变。[/align]
[align=left]命令格式2:readonly[/align]
[align=left]功能:显示出所有只读的shell变量。[/align]
[align=left]实验:[/align]
[align=left][root@localhost /]# readonly[/align]
[align=left]declare -ar BASH_VERSINFO='([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")'[/align]
[align=left]declare -ir EUID="0"[/align]
[align=left]declare -ir PPID="16000"[/align]
[align=left]declare -r SHELLOPTS=[/align]
[align=left]"braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"[/align]
[align=left]declare -ir UID="0"[/align]
(5)
read
[align=left]命令格式:Read variable[/align]
[align=left]功能:从标准输入设备读入一行,分解成若干行,赋值给shell程序定义的变量。[/align]
[align=left]实验:[/align]
[align=left][root@localhost test]# vi sh_04.sh[/align]
[align=left]#!/bin/bash[/align]
[align=left]echo -e "Please enter: \c"[/align]
[align=left]read x[/align]
[align=left]echo "you enter: $x"[/align]
[align=left][root@localhost test]# ./sh_04.sh[/align]
[align=left]Please enter: hello[/align]
[align=left]you enter: hello[/align]
[align=left]实验解析:[/align]
(6)
env
命令格式:Env

[align=left]功能:显示环境变量及其内容。[/align]
[align=left]实验:[/align]
[align=left][root@localhost test]# env[/align]
[align=left]SSH_AGENT_PID=5223[/align]
[align=left]HOSTNAME=localhost.localdomain[/align]
[align=left]SHELL=/bin/bash[/align]
[align=left]TERM=xterm[/align]
[align=left]HISTSIZE=1000[/align]
[align=left]GTK_RC_FILES=/etc/gtk/gtkrc:/root/.gtkrc-1.2-gnome2[/align]
[align=left]WINDOWID=50331729[/align]
[align=left]……….[/align]
[align=left]G_BROKEN_FILENAMES=1[/align]
[align=left]COLORTERM=gnome-terminal[/align]
[align=left]XAUTHORITY=/root/.Xauthority[/align]
[align=left]_=/bin/env[/align]
[align=left]OLDPWD=/root/shell[/align]
(7)
7、set
命令格式:Set

[align=left]功能:显示所有变量及其内容。[/align]
[align=left]实验:[/align]
[align=left][root@localhost test]# set[/align]
[align=left]BASH=/bin/bash[/align]
[align=left]BASH_ARGC=()[/align]
[align=left]BASH_ARGV=()[/align]
[align=left]BASH_LINENO=()[/align]
[align=left]BASH_SOURCE=()[/align]
[align=left]……….[/align]
[align=left]UID=0[/align]
[align=left]USER=root[/align]
[align=left]WINDOWID=50331729[/align]
[align=left]XAUTHORITY=/root/.Xauthority[/align]
[align=left]XMODIFIERS=@im=htt[/align]
[align=left]_=--color=tty[/align]
(8)
unset
[align=left]命令格式:[/align]
[align=left]功能:unset命令的作用是从环境中删除变量或函数。这个命令不能删除shell本身定义的只读变量(如IFS)。这个命令并不常用。[/align]
[align=left]实验:[/align]
[align=left]#!/bin/bash[/align]
[align=left]foo="Hello World"[/align]
[align=left]echo $foo[/align]
[align=left][/align]
[align=left]unset foo[/align]
echo $foo

[align=left]实验解析:第一次输出字符串“Hello World”,但第二次只输出一个换行符[/align]
(9)
trap
命令格式:Trap command signal

[align=left]功能:在脚本程序发生相应中断时执行相应命令内容[/align]
[align=left]实验:[/align]
[align=left]#!/bin/bash[/align]
[align=left]trap 'rm -f /tmp/my_tmpfile_$$' INT[/align]
[align=left]echo creating file /tmp/my_tmp_file_$$[/align]
[align=left]date > /tmp/my_tmp_file_$$[/align]
[align=left][/align]
[align=left]echo "press interrupt (CTRL-C) to interrupt......"[/align]
[align=left]while [ -f /tmp/my_tmp_file_$$ ];do[/align]
[align=left]echo File exists[/align]
[align=left]sleep 1[/align]
[align=left]done[/align]
[align=left]echo The file no longer exists[/align]
[align=left][/align]
[align=left]trap INT[/align]
[align=left]echo creating file /tmp/my_tmp_file_$$[/align]
[align=left]date > /tmp/my_tmp_file_$$[/align]
[align=left][/align]
[align=left]echo "press interrupt (CTRL-C) to interrupt....."[/align]
[align=left]while [ -f /tmp/my_tmp_file_$$ ];do[/align]
[align=left]echo File exists[/align]
[align=left]sleep 1[/align]
[align=left]done[/align]
[align=left][/align]
[align=left]echo we never get here[/align]
[align=left]exit 0[/align]
[align=left]实验解析[/align]
[align=left]在这个脚本程序中,我们先用trap命令安排它在出现一个INT(中断)信号时执行rm –f /tmp/my_tmp_file_$$命令删除临时文件。脚本程序然后进入一个while循环,只要临时文件存在,循环就一直持续下去。当用户按下 Ctrl+C组合键时,就会执行rm –f /tmp/my_tmp_file_$$语句,然后继续下一个循环。因为临时文件现在已经被删除了,所以第一个while循环将正常退出。[/align]
[align=left]接下来,脚本程序再次调用trap命令,这次是指定当一个INT信号出现时不执行任何命令。脚本程序然后重新创建临时文件并进入第二个while循环。这次当用户按下Ctrl+C组合键时,没有语句被指定 执行,所以采取默认处理方式,即立即终止脚本程序。因为脚本程序被立即终止了,所以永远也不会执行最后的echo和exit语句。[/align]
[align=left](10)grep[/align]
[align=left]命令格式 grep 参数 string 目标文件[/align]
[align=left]功能:在指定文件一堆文件中查找一个特定的字串,并将字串所在行输出到终端或平台。[/align]
[align=left]参数分析:[/align]
[align=left]参数[/align]

[align=left]功能[/align]

[align=left]-a[/align]

[align=left]不要忽略二进制的数据[/align]

[align=left]-C[/align]

[align=left]显示列数[/align]

[align=left]-i[/align]

[align=left]忽略大小写[/align]

[align=left]实验:[/align]
[align=left]编辑查找文件[/align]
[align=left][root@localhost test]# vi test_file[/align]
[align=left]CD0001 ,jakey ,hello world[/align]
[align=left]CD0002 ,peter ,good morning[/align]
[align=left]CD0003 ,kety ,how are you[/align]
[align=left]CD0004 ,tony ,see you later[/align]
[align=left]编辑实验脚本[/align]
[align=left][root@localhost test]# vi sh.sh[/align]
[align=left]#!/bin/bash[/align]
[align=left]grep -v "^CD0002" test_file[/align]
[align=left]运行脚本[/align]
[align=left][root@localhost test]# ./sh.sh[/align]
[align=left]CD0001 ,jakey ,hello world[/align]
[align=left]CD0003 ,kety ,how are you[/align]
[align=left]CD0004 ,tony ,see you later[/align]
[align=left]实验解析:-v 反义选项,使grep选择所有和模式不匹配的行。所以输出文件中除了CD0001所在行之外的所在信息。[/align]
[align=left]^ 匹配行开始标记[/align]
[align=left](11)wc[/align]
[align=left]命令格式:wc 参数 文件1 文件2 ……..[/align]
[align=left]功能:统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。[/align]
[align=left]参数分析:[/align]
[align=left]参数[/align]

[align=left]功能[/align]

[align=left]-c[/align]

[align=left]统计文件字节数[/align]

[align=left]-l[/align]

[align=left]统计文件行数[/align]

[align=left]-w[/align]

[align=left]统计文件字数[/align]

[align=left]备注:几个参数可同时使用 输出格式:行数、字数、字节数、文件名[/align]

[align=left]实验:[/align]
[align=left][root@localhost test]# wc -lcw test_file[/align]
[align=left]4 18 111 test_file[/align]
[align=left]实验解析:[/align]
[align=left] [/align]
本文转载于唯C教育,【Linux基础】Shell常用命令

http://www.weicedu.com/forum.php?mod=viewthread&tid=90&fromuid=4

(出处: http://www.weicedu.com/)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: