谁能提供我一个LINUX SHELL 命令和集啊,要有中文解释的啊,谢谢了

来自:    更新日期:早些时候
能把这个linux shell命令的每个参数给解释一下么~

问题描述:在linux shell中如何处理tail -n 10 access.log这样的命令行选项?
在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。
1,直接处理,依次对$1,$2,...,$n进行解析,分别手工处理;
2,getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项);
3,getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等)。
总结:小脚本手工处理即可,getopts能处理绝大多数的情况,getopt较复杂、功能也更强大。
1,直接手工处理位置参数
必须要要知道几个变量,

复制代码代码如下:

* $0 :即命令本身,相当于c/c++中的argv[0]
* $1 :第一个参数.
* $2, $3, $4 ... :第2、3、4个参数,依次类推。
* $# 参数的个数,不包括命令本身
* $@ :参数本身的列表,也不包括命令本身
* $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。


手工处理方式能满足多数的简单需求,配合shift使用也能构造出强大的功能,但处理复杂选项时建议用下面的两种方法。
例子,(getargs.sh):


复制代码代码如下:

#!/bin/bash
if [ $# -lt 1 ]; then
echo "error.. need args"
exit 1
fi
echo "commond is $0"
echo "args are:"
for arg in "$@"
do
echo $arg
done


运行命令:


复制代码代码如下:

./getargs.sh 11 22 cc
commond is ./getargs.sh
args are:
11
22
cc

2,getopts (shell内置命令)
处理命令行参数是一个相似而又复杂的事情,为此,c提供了getopt/getopt_long等函数,c++的boost提供了options库,在shell中,处理此事的是getopts和getopt。
getopts/getopt的区别,getopt是个外部binary文件,而getopts是shell builtin。


复制代码代码如下:

[root@jbxue ~]$ type getopt
getopt is /usr/bin/getopt
[root@jbxue ~]$ type getopts
getopts is a shell builtin

getopts不能直接处理长的选项(如:--prefix=/home等)
关于getopts的使用方法,可以man bash 搜索getopts
getopts有两个参数,第一个参数是一个字符串,包括字符和“:”,每一个字符都是一个有效的选项,如果字符后面带有“:”,表示这个字符有自己的参数。getopts从命令中获取这些参数,并且删去了“-”,并将其赋值在第二个参数中,如果带有自己参数,这个参数赋值在“optarg”中。提供getopts的shell内置了optarg这个变变,getopts修改了这个变量。
这里变量$optarg存储相应选项的参数,而$optind总是存储原始$*中下一个要处理的元素位置。
while getopts ":a:bc" opt #第一个冒号表示忽略错误;字符后面的冒号表示该选项必须有自己的参数
例子,(getopts.sh):


复制代码代码如下:

echo $*
while getopts ":a:bc" opt
do
case $opt in
a ) echo $optarg
echo $optind;;
b ) echo "b $optind";;
c ) echo "c $optind";;
? ) echo "error"
exit 1;;
esac
done
echo $optind
shift $(($optind - 1))
#通过shift $(($optind - 1))的处理,$*中就只保留了除去选项内容的参数,可以在其后进行正常的shell编程处理了。
echo $0
echo $*


执行命令:


复制代码代码如下:

./getopts.sh -a 11 -b -c
-a 11 -b -c
11
3
b 4
c 5
5
./getopts.sh

3,getopt(一个外部工具)
具体用用法可以 man getopt
#-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项,如-carg 而不能是-c arg
#--long表示长选项
例子,(getopt.sh):


复制代码代码如下:

#!/bin/bash
# a small example program for using the new getopt(1) program.
# this program will only work with bash(1)
# an similar program using the tcsh(1) script. language can be found
# as parse.tcsh
# example input and output (from the bash prompt):
# ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
# option a
# option c, no argument
# option c, argument `more'
# option b, argument ` very long '
# remaining arguments:
# --> `par1'
# --> `another arg'
# --> `wow!*\?'
# note that we use `"$@"' to let each command-line parameter expand to a
# separate word. the quotes around `$@' are essential!
# we need temp as the `eval set --' would nuke the return value of getopt.
#-o表示短选项,两个冒号表示该选项有一个可选参数,可选参数必须紧贴选项
#如-carg 而不能是-c arg
#--long表示长选项
#"$@"在上面解释过
# -n:出错时的信息
# -- :举一个例子比较好理解:
#我们要创建一个名字为 "-f"的目录你会怎么办?
# mkdir -f #不成功,因为-f会被mkdir当作选项来解析,这时就可以使用
# mkdir -- -f 这样-f就不会被作为选项。
temp=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
-n 'example.bash' -- "$@"`
if [ $? != 0 ] ; then echo "terminating..." >&2 ; exit 1 ; fi
# note the quotes around `$temp': they are essential!
#set 会重新排列参数的顺序,也就是改变$1,$2...$n的值,这些值在getopt中重新排列过了
eval set -- "$temp"
#经过getopt的处理,下面处理具体选项。
while true ; do
case "$1" in
-a|--a-long) echo "option a" ; shift ;;
-b|--b-long) echo "option b, argument \`$2'" ; shift 2 ;;
-c|--c-long)
# c has an optional argument. as we are in quoted mode,
# an empty parameter will be generated if its optional
# argument is not found.
case "$2" in
"") echo "option c, no argument"; shift 2 ;;
*) echo "option c, argument \`$2'" ; shift 2 ;;
esac ;;
--) shift ; break ;;
*) echo "internal error!" ; exit 1 ;;
esac
done
echo "remaining arguments:"
for arg do
echo '--> '"\`$arg'" ;
done

运行命令:

复制代码代码如下:

./getopt.sh --b-long abc -a -c33 remain
option b, argument `abc'
option a
option c, argument `33'
remaining arguments:
--> `remain'





以上提供参考学习,谢谢!

linux内核就像人的心脏,灵魂,指挥中心。

内核是一个操作系统的核心,它负责管理系统的进程,内存,设备驱动程序,文件和网络系统,决定着系统的性能和稳定性。内核以独占的方式执行最底层任务,保证系统正常运行。协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等等.

严格说Linux并不能称做一个完整的操作系统.我们安装时通常所说的Linux,是有很多集合组成的.应称为GNU/Linux.

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
  实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
  Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window的图形用户界面(GUI)。它提供了很多桌面环境系统,其操作就象Windows一样,有窗口、图标和菜单,所有的管理都是通过鼠标控制。现在比较流行的桌面环境系统是KDE和GNOME。
  每个Linux系统的用户可以拥有他自己的用户界面或Shell,用以满足他们自己专门的Shell需要。

su
  su命令是最基本的命令之一,常用于不同用户间切换。例如,如果登录为 user1,要切换为user2,只要用如下命令:
  $su user2
  然后系统提示输入user2口令,输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。
  su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ,则系统提示输入根口令,输入之后则可切换为根用户。
  如果登录为根用户,则可以用su命令成为系统上任何用户而不需要口令。
  
  pwd
  pwd命令也是最常用最基本的命令之一,用于显示用户当前所在的目录。
  
  cd
  cd命令不仅显示当前状态,还改变当前状态,它的用发跟dos下的cd命令基本一致。
  cd ..可进入上一层目录
  cd -可进入上一个进入的目录
  cd ~可进入用户的home目录
  
  ls
  ls命令跟dos下的dir命令一样,用于显示当前目录的内容。
  如果想取得详细的信息,可用ls -l命令, 这样就可以显示目录内容的详细信息。
  如果目录下的文件太多,用一屏显示不了,可以用ls -l |more分屏显示 。
  
  find
  find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。
  find命令的基本结构如下:
  $find
  其中指定从母瞿柯伎�妓阉鳌V付ㄋ阉魈跫�1硎菊业轿募�趺创�怼R话憷此担��?print动作,显示 整个文件路径和名称。如果没有这个动作,则find命令进行所要搜索而不显示结果,等于白费劲。
  例如,要搜索系统上所有名称为ye的文件,可用如下命令:
  $find / -name ye -print
  这样就可以显示出系统上所有名称为ye的文件。
  
  tar
  tar最初用于建立磁带备份系统,目前广泛用于建立文件发布档案。可用如下方法建立tar档案:
  $tar cvf
  例如,如果要将当前目录中所有文件存档到ye.tar中,可用如下命令:
  $tar cvf ye.tar *.*
  要浏览档案内容,将c选项变成t。如果要浏览ye.tar档案中的内容,可用如下命令:
  $tar tvf ye.tar
  要取出档案内的内容,将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中,可用如下命令:
  $tar xvf ye.tar
  
  gzip
  gzip命令用于压缩文件。 例如,如果要将ye.txt文件压缩,可用如下命令:
  $gzip ye.txt
  这样就可以压缩文件并在文件名后面加上gz扩展名,变成文件ye.txt.gz。
  解压缩文件可用gzip -d命令实现:
  $gzip -d ye.txt.gz
  这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件,效果跟用gzip -d命令一样。
  旧版的tar命令不压缩档案,可用gzip压缩。例如:
  $tar cvf ye.tar *.txt
  $gzip ye.tar
  则可建立压缩档案ye.tar.gz。
  新版的tar可以直接访问和建立gzip压缩的tar档案,只要在tar命令中加上z 选项就可以了。例如:
  $tar czvf ye.tar *.txt
  生成压缩档案ye.tar.gz,
  $tar tzvf ye.tar *.txt
  显示压缩档案ye.tar.gz的内容,而
  $tar xzvf ye.tar *.txt
  取出压缩档案ye.tar.gz的内容。
  
  mkdir
  这个命令很简单,跟dos的md命令用法几乎一样,用于建立目录。
  
  cp
  cp命令用于复制文件或目录。
  cp命令可以一次复制多个文件,例如:
  $cp *.txt *.doc *.bak /home
  将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。
  如果要复制整个目录及其所有子目录,可以用cp -R命令。
  
  rm
  rm命令用于删除文件或目录。
  rm命令会强制删除文件,如果想要在删除时提示确认,可用rm -i命令。
  如果要删除目录,可用rm -r命令。rm -r命令在删除目录时,每删除一个文件或目录都会显示提示,如果目录太大,响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录,这样即使用了-i标志也当无效处理。
  
  mv
  mv命令用于移动文件和更名文件。例如:
  $mv ye.txt /home
  将当前目录下的ye.txt文件移动到/home目录下,
  $mv ye.txt ye1.txt
  将ye.txt文件改名为ye1.txt。
  类似于跟cp命令,mv命令也可以一次移动多个文件,在此不再赘叙。
  
  reboot
  重启命令,不必多说。
  
  halt
  关机命令,不必多说。

命令很多的
需要的话 可以加我的 msn
[email protected]
他的命令可多了 呵呵
我一般都是晚上12点上线的
你想知道什么都可以告诉你。。
我就是弄 linux出身的。


谁能提供我一个LINUX SHELL 命令和集啊,要有中文解释的啊,谢谢了视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网