Linux shell 程序设计5——shell中一些特殊符号的用法总结

1、{} 大括号:

eg: ls my_{finger,toe}s

这条命令相当于如下两个命令的组合:

ls my_fingers ; ls my_toes

eg: mkdir {userA,userB,userC}-{home,bin,data}

我们得到 userA-home, userA-bin, userA-data, userB-home, userB-bin, userB-data, userC-home, userC-bin, userC-data,这几个目录

大括号也可用于语句块的构造,命令之间可用回车隔开

2、[] 中括号:允许匹配方括号中任何一个单个字符

eg: ls /[eh][to][cm]*

相当于执行 ls /etc 和 ls /home。

常出现在流程控制中,其作用是括住判断式。注意:[、] 与表达式之间有空格。

eg:

if [ "$?" != 0 ]
then echo "Executes error"
fi

3、command 反引号:反引号中的指令将会被执行

eg: fdv=date +%F

在倒引号内的 date +%F 会被视为指令,执行的结果会带入 fdv 变量中

4、’string’ 单引号 和 “string” 双引号:如果想在定义的变量中加入空格,就必须使用单引号或双引号,单、双引号的区别在于双引号转义特殊字符,而单引号不转义特殊字符。

  eg: heyyou=home
      echo '$heyyou'
      # We get $heyyou
  eg: heyyou=home
      echo "$heyyou"
      # We get home

5、$#:它的作用是告诉你引用变量的总数量是多少

6、$$:它的作用是告诉你shell脚本的进程号

7、$1、$2、$3……${10}、${11}、${12}…… :表示脚本的各个参数

8、$@:列出所有的参数,各参数用空格隔开

9、AND列表 statement1 && statement2 && statement3 && ……:只有在前面所有的命令都执行成功的情况下才执行后一条命令

10、OR列表 statement1 || statement2 || statement3 || ……:允许执行一系列命令直到有一条命令成功为止,其后所有命令将不再被执行。

11、[ condition ] && command for true || command for false:当条件为真时,执行command for true ,当条件为假时,执行command for false

12、: 冒号:内建指令,但返回值为0

  eg: :
      echo $?
      #We get 0
while:实现一个无限循环

13、; 分号:在 shell 中,担任”连续指令”功能的符号就是”分号”

eg:cd ~/backup ; mkdir startup ; cp ~/.* startup/.

14、~:代表使用者的 home 目录

15、# 井号:表示符号后面的是注解文字,不会被执行

16、\ 倒斜线:放在指令前,有取消 aliases 的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行

17、! 惊叹号:通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表”不等于”

18、* 星号:在文件名扩展上,她用来代表任何字元

19、** 次方运算:两个星号在运算时代表 “次方” 的意思

  eg:let "sus=2**3"
     echo "sus = $sus"
     # sus = 8

Linux shell 程序设计4——shell变量

1、shell变量没有类型,所有变量都被当作字符串来处理。

2、shell变量的命名和c语言相同。

3、shell变量赋值和c语言略有不同,shell赋值要求等号的两边不能出现空格,而在linux C 中,一般为了增强代码的可读性,等号的两边都加一个空格。如果shell变量的赋值为字符串,而且字符串中含有空格,则必须给该字符串加单引号或双引号。

4、shell变量不同于c语言,无需定义可直接赋值使用。例如:

#!/bin/bash
#This is an example to show how to use variables

version="2.6.24"
name="linux-headers-2.6.24"

echo -e "name:$name\nversion:$version"

执行结果:

name:linux-headers-2.6.24
version:2.6.24

5、shell变量的作用范围是本shell环境。例如:

我们编写如下脚本:

#!/bin/bash
#script name: exam.sh
#This is a example to show the action range of a variable

os_name=linux
echo $os_name

当我们使用./exam.sh执行脚本结果为:

linux

然后我们在命令行中执行:

echo $os_name 结果为空

而如果使用 source exam.sh 执行脚本或者是 .空格exam.sh命令执行脚本后键入echo $os_name 命令,我们会得到:

linux

6、有一种能继承给子shell的变量,称之为环境变量。让一个变量变身为环境变量的方法为:

export 变量名

例如:在终端中我们敲入如下命令:

执行脚本:

#!/bin/bash
echo $a

我们什么也不能得到。而如果在终端中使用命令:

export a=linux

然后执行上述脚本,我们的到结果:

linux

7、shell内置变量:bash设置了许多内置变量,在进行shell程序设计的时候可能需要用到。详见:

$?:最后一次执行的命令的返回码
$$:shell进程自己的PID
$!:shell进程最近启动的后台进程PID
$#:shell脚本参数个数,不含脚本名
$0:脚本文件本身的名字
$1、$2...:第一个参数、第二个参数...
$*:代表所有的参数(不含脚本名)组成的字符串
$@:命令行参数组成的多个字符串,每个参数对应一个

8、设置shell变量属性:

readonly:使用readonly命令可以

Linux shell 程序设计3——命令行程序

1、date:显示、设置系统的日期和时间。

$date
2011年 01月 30日 星期日 14:43:35 CST
$date 012309232011
执行结果:设置主机的时间日期为:2011/01/23 09:23

$date  +'%d %H %M'

以一定的格式显示时间或日期信息,常见有如下的格式:

%d   :显示日
$date +'%d'
30
%D  :显示日期
$date +'%D'
01/30/11
%e  :不足二位数的部分不用0补而是用空格补
%m :显示月份
%Y  :显示公元年
$date +'%Y'
2011
%m  :显示月
%M  :显示分钟
%S   :显示秒
%s   :显示自1970年1月1日 00:00:00开始到现在的秒数
$date +'%s'
1296371799
$date -R :产生与RFC-2822兼容的时间字符串
$date -R
Sun, 30 Jan 2011 15:20:17 +0800

2、cat:连接文件并显示

cat file1
显示file1文件的内容
cat file1 file2
将file1 和 file2并将结果显示
cat file1 file2>result.txt
将file1和file2连接并将结果重定向到result.txt

3、wc:计算文件内含的总字数或行数

wc -l file  :显示文件file的行数
wc -c file :显示文件file的字符
wc -w file :显示文件file的单词个数

4、find :在分层目录中寻找文件。

find 路径 样式 操作

例如:

find /  -name  *.txt -print

/为路径,-name *.txt是样式 ,-print是操作, 表示将结果打印到标准输出。

find / -name *.txt -exec rm-f {} \;

-exec的操作表示找到所有的.txt文件之后 执行 rm -f命令,{}表示找到的所有结果,;是-exec的终止符,由于;是shell的特殊符号,所有要用\将其转义。

find /etc -cnewer /etc/passwd

在/etc 目录中寻找比/etc/passwd文件异动时间新的文件

find /etc -type d -print

将/etc目录中所有类型为d(也就是目录)的文件打印出来

其他的类型还有:

b:块设备文件 c:字符设备文件 d:目录 p:管道 f:一般文件 l:链接文件 s:socket

5、basename:取得路径名称中最后的文件名部分

如:

basename /etc/configure.sh

执行结果:configure.sh

6、dirname:取得路径中目录部分

如:

dirname /etc/configure.sh

执行结果:/etc

7、sort:按ascii码的行首字母对文件的行做排序

sort file1  :按ascii码值增大的顺序
sort -r file1:按ascii码值减少的顺序
sort -n file1:按字符串比较
sort -k 2 file1:按字符串比较每行的第二个字段
sort -nk 2 file1:按数值比较每行的第二个字段
sort -nr +2 -t: /etc/passwd :+2表示跳过前两个字段,-t: 表示该:为字段分隔符

8、uniq:删除重复行,若重复行没相邻,则无作用

uniq -d: 挑出重复行 uniq -c: 计算每一行的重复次数

如:

编辑文件q,文件内容如下:

baaaaaaaaaa
baaaaaaaaaa
baaaaaaaaaa
baaaaaaaaaa
aaaaaaaaaaa
aaaaaaaaaaa
dddddddddd
dddddddddd
dddddddddd
dddddddddd
dddddddddd
dddddddddd

执行命令uniq -d q结果为:

baaaaaaaaaa
aaaaaaaaaaa
dddddddddd

执行命令uniq -c q结果为:

4 baaaaaaaaaa
2 aaaaaaaaaaa
6 dddddddddd

该命令和sort命令一样,都不改变原文件内容,若要保存结果,可通过重定向和管道。

9、cut :从文件中抽出某一部分

如:

cut -c2 q :从文件q中抽出每一行的第2个字符
cut -c2-10 q:从文件中抽出每一行的第2到第10个字符
cut -c2- q:从q中抽出每一行第2个及其以后的字符
cut -d: -f3,4 passwd:从文件passwd中抽出每一行的第3个和第4个字段,-d:表明:为分割符

10、paste:把两个文件按行合并,默认以Tab分割

paste -d'#' file1 file2:以#分割
paste -s file:file的每一行和自己的每一行合并

11、tr:转换和删除字符。

如:

$tr k K < file1

将file1中所有的k换成K

$tr -d k <file1

将file1中所有的k删除

$tr '[A-Z]' '[a-z]' <file1

将file1中所有的大写字母换成小写字母

$cut -d: -f1-6 /etc/passwd |tr :‘+’

将passwd文件中前六个字段中的分隔符用+代替

12、grep:显示符合样式的行

grep A * :将含有A这个字符的文件及行打印出来
grep -i A * :-i 表示不区分大小写,A或a都行
grep -v A file :将file中所有不包含A的行打印出来
grep -l teacher *:只显示含有teacher的文件的文件名而不显示具体的行
grep -n teacher *:显示文件名和行号
grep -q teacher filename :若filename文件中含有teacher关键字则返回0,否则返回非0
grep -A 200 -e 'wadfadfdf' filename :表示在filename 中查找wadfadfdf行并显示其后的200行 

13、 tee:从标准输入读取数据,显示在标准输出上,并将内容写在指定的文件中。

$tee filename

若filename已经存在,则清空其内容,否则新建一个文件。按ctrl+D组合键,输入的数据就存储在filename中。

$tee -a filename 以追加的方式写入文件

14、diff:比较两个文件之间的差异

15、comm:以列和列的方式比较两个已排序好的文件

如:

file1 文件的内容如下:

1 2 3
6 5 4
9 8 7
a b c 
file2:
2 4 5
6 5 4
8 0 9 
x y z

执行comm file1 file2后的结果:

1 2 3
2 4 5
6 5 4
8 0 9   
9 8 7
a b c
x y z

第1列为file1与file2不同的内容,第2列为file2与file1不同的内容,第3列为file1和file2相同的内容。

16、xargs:安排标准输入给要执行命令的参数

如:

$find . -name *.txt | xargs -n 2 diff

将找到的.txt文件以两个一组的方式交给diff进行比较

17、按以下格式可执行多个命令:

A、命令1;命令2;命令3...	 执行一组命令,不能保证每个命令都成功执行
B、命令1&&命令2&&命令3... 	  依次执行命令1、命令2...直到执行失败
C、命令1||命令2||命令3...       依次执行命令1、命令2...直到执行成功
D、(命令1;命令2;...)  开启一个子shell去执行该组命令 
E、{  命令1;命令2;...  } 在现行的shell中执行该组命令,{右和}左有至少一个空格

18、script::记录命令执行内容。

$script com.log
$ls 
$exit

ls命令的执行结果会被被保存在com.log中

Linux shell 程序设计2——bash的内置命令

常用的内置命令忽略,来看看shell编程中其他一些重要的内置命令:

1、help:显示所有内置命令列表,或显示一个具体命令的用法。

-s: 表示列出命令的语法格式

例子:

help -s help help: help [-dms] [pattern …]

2、echo:用来显示一行文字。默认自动换行。

-n:取消自动换行。
-e:让字符串中的特殊字符起作用,即使字符串在单引号中。

例子: echo hello world 或 echo ‘hello world’ 或 echo “hello world” 输出结果为:hello world $echo -e “hello \n world” hello world $ echo -e ‘hello \n world’ hello world

3、printf:显示格式字符串,类似于c中的printf函数

格式:printf “格式字符串” 参数

-v :不显示到标准输出,而是赋值给-v选项后面的变量

例子:

str= "hello world"
printf "%s\n" "$str"     执行结果:hello world

printf -v str "hello world" 
echo $str                      执行结果:hello world

printf "%q" "hello world \n" 执行结果:hello\ world\\n 无换行

%q这个选项我想了很久才弄明白它的含义:

将字符串或变量中的转义字符 用 源码格式替换。于是,上面的例子中,空格变成了\空格,\变成了\,而且\n没有了换行的作用

printf详细用法请参考博客:

http://bbs.chinaunix.net/thread-845520-1-1.html

4、: 什么也不做,返回0

例子:

:
echo $?                    运行结果:0

5、. 或 source :在现行shell中执行shell程序

例子:

编辑脚本文件a_var.sh:

#!/bin/bash
a=31

保存退出后回到终端,修改a_var.sh的权限并输入命令:

./a_var.sh

执行,然后在终端执行:

echo $a

输出结果为一个空行,意味着变量a的值为空,我们再以命令.空格a_var.sh 或source a_var.sh 执行,然后输入:

echo $a                     其输出结果为:  31

第一种方式执行a_var.sh,bash会创建一个shell去执行,当子shell执行完成后,它的变量a会被系统收回。

6、alias:显示或设定程序别名

例子:

alias          执行结果:列出所有的别名
alias ll='ls -al'  
ll               执行结果:等价于执行了  ls -al

7、unalias:取消别名

alias ll

8、exit :离开脚本或登录shell,可带返回值

exit 1

9、history:显示过去曾经执行过的shell指令,与history命令相关的有三个重要的变量:

HISTFILE :记录存放历史命令文件的路径,如:

echo $HISTFILE                    结果为:/home/kelvin/.bash_history

HISTFILESIZE:设置历史命令文件命令的最大个数,超过这个个数,序号在前的命令记录就会被删除

HISTSIZE:设置终端中交互式命令的历史记录个数。它和HISTFILESIZE相比的最小值起作用。

10、fc:列出登录主机后最近执行过的命令。一般和选项 -l 配合使用。

例子:

$fc -l      结果:

363	 cat /etc/profile
364	 echo $HISTORY
365	 echo $HISTORYFILE
366	 echo $HISTFILE
367	 ehco $HISTFILESIZE
368	 echo $HISTFILESIZE
369	 echo $HISTSIZE
370	 history 
371	 history
372	 echo $HISTFILE
373	 lw
374	 ls
375	 fc -l
376	 fc -l 368
377	 fc -l echo l
378	 fc -l
fc -l 375     列出375行以后的命令                输出结果:
375	 fc -l
376	 fc -l 368
377	 fc -l echo l
378	 fc -l
fc -l 375 377 列出375到377之间的命令          输出结果:
375	 fc -l
376	 fc -l 368
377	 fc -l echo l
fc -l echo  l    列出从 关键字 echo 到 l之间的内容     输出结果:
372	 echo $HISTFILE
373	 lw
374	 ls

11、type:对一个命令的类型进行说明(包含命令行程序)。

例子:

$type ls

ls 已被别名为“ls --color=auto”

$type cp

cp 是 /bin/cp

$type fc

fc 是一个 shell 内部命令

12、set:列出所有变量和函数的内容,加入选项可以设置bash的某个属性是否打开

例子:

$set -o 查看所有属性,或打开某个属性

allexport      	off
braceexpand    	on
emacs          	on
errexit        	off
errtrace       	off
functrace      	off
hashall        	on
histexpand     	on
history        	on
ignoreeof      	off
interactive-comments	on
keyword        	off
monitor        	on
noclobber      	off
noexec         	off
noglob         	off
nolog          	off
notify         	off
nounset        	off
onecmd         	off
physical       	off
pipefail       	off
posix          	off
privileged     	off
verbose        	off
vi             	off
xtrace         	off

$set -o notify
set -o              打开notify属性后显示所有属性状态,输出结果:
allexport      	off
braceexpand    	on    
emacs          	on
errexit        	off
errtrace       	off
unctrace      	off
hashall        	on
histexpand     	on
history        	on
ignoreeof      	off
interactive-comments	on
keyword        	off
monitor        	on
noclobber      	off
noexec         	off
noglob         	off
nolog          	off
notify         	on
nounset        	off
onecmd         	off
physical       	off
pipef    ail       	off
posix          	off
privileged     	off    
verbose        	off
vi             	off
xtrace         	off

set  +o notify 
set -o         关闭notify属性,并显示所有属性状态:
allexport      	off
braceexpand    	on
emacs          	on
errexit        	off
errtrace       	off
functrace      	off
hashall        	on
histexpand     	on
history        	on
ignoreeof      	off
interactive-comments	on
keyword        	off
monitor        	on
noclobber      	off
noexec         	off
noglob         	off
nolog          	off
notify         	off
nounset        	off
onecmd         	off
physical       	off
pipefail       	off
posix          	off
privileged     	off
verbose        	off
vi             	off
xtrace         	off

set -C 或 set -o noclobber :保护已存在文件,不让重定向覆盖文件内容,只能追加。

例如:

set -C 
touch a.c
echo adfad >  a.c  提示出错:
bash: a.c:无法覆盖已经存在的文件

但当我们追加内容时不会提示出错:

echo adfasf >> a.c

可用set +C 取消

set -u:用于测试变量是否存在

例如:

: $i

echo $? 这儿的返回值应该为1,因为变量i不存在

i=1
: $i

echo $? 这儿的输出结果应该是0。同样,可以用set +u取消作用

set -v:显示当前shell的每一个执行命令,换句话说,就是把执行的命令打印出来

例如:

kelvin@kelvin-Founder:~$ set -v
kelvin@kelvin-Founder:~$ ls
ls
a.c  Linux material  project_files  record  shell  software  桌面

可用于对shell脚本的排错,该属性可用set +v取消作用

13、shopt:很多方面都和set命令一样,但它增加了很多选项。

-s:开启选项
-u:关闭选项
-o:set -o
-q:以返回值的形式表示开关状态,非0表示关,0表示开

set和shopt 的细节参见:

http://blogold.chinaunix.net/u3/94271/showart.php?id=2195391

14、read:从标准输入读取一行数据

例子:

#!/bin/bash
echo "please input your name "
read your_name                             //如果不输入your_name,读取结果会默认存入变量ERPLY
echo "your name is :"  $your_name   

执行结果:

please in put your name 
kelvin
your name is : kelvin

read -p “提示信息” ;所以上述sh脚本也可写成:

#!/bin/bash
read -p "please input your name" your_name
echo "your name is:" $your_name

read -a arr:将一行数据存入数组arr

例如:

read -a arr <<(echo 1 2 343 23) 

这样,echo ${arr[2]} 的输出结果就是343

read还可以读值给多个变量:

IFS=':'
read f1 f2 f3 f4 f5 f6 f7 < /etc/passwd

因为passwd中7个字段是由:分割开的,所以令IFS=’:’

15、time:打印设置命令执行的real user sys时间,real 表示命令真正运行时间,cpu使用时间由两部分表示: user表示用户态程序执行时间, sys 表示系统调用时间。

例如:

time ls
time ls
adf.sh  a_var.sh  name.sh

real	0m0.004s
user	0m0.000s
sys	0m0.000s

16、exec:后接命令或程序,执行命令或程序,并取代原来的shell执行环境;执行重定向生效,例如:

exec < file 那么凡是由标准输入读入数据的操作都改为由file读入数据

17、eval:读取变量,并将变量的内容作为命令执行

例如:

listlog="ls -al /var/log/*.log"
eval $listlog

执行结果:ls -al /var/log/*.log将被执行。

Linux shell 程序设计1——安装及入门

1、什么是shell?

shell是linux内核的“壳”,是用户和内核的桥梁。它类似于windows下的命令提示符,将用户输入的命令解释给内核执行,并返回给用户结果。与windows命令提示符不同的是,shell还是一种脚本语言,可以按一定的流程将命令组合在一起使用,方便了用户。

2、shell的安装:

在ftp.gnu.org/gnu/bash可下载到bash的源码包:

bash-4.1.tar.gz

用 tar xzvf bash-4.1.tar.gz 解压,生成bash-4.1目录

使用cd 命令进入该目录,在该目录下执行./configure命令生成配置文件,再使用make命令编译,使用make install命令安装。

在/etc/shells文件中列出的shell才是合法的shell,所以要使用安装的shell必须把它加到该文件中。加入之后就可以通过chsh命令来切换shell。

3、shell中的特殊符号:

http://blogold.chinaunix.net/u2/75431/showart_1110962.html

4、shell的程序结构:

以#!开头,指名要解释、执行该脚本的shell,如:

#! /bin/bash

其余以#开头的行为注释。除此之外,一个shell脚本还包括变量设定、内置命令、函数、以及流程控制语句。

下面是一个简单的shell脚本:

  1 #/bin/bash
  2 #This is a test shell script
  3 #It's function is show how to use the function of a shell script
   
  4 /*定义了一个函数,其中$1,$2,$3是传递给该函数的参数*/
  5 function show(){
  6     echo "Today is $1.Your name is $2,and your ip address is $3."       
  7 }
  
  8 /*定义了三个变量*/
  9 name="$1"
 10 date=`date +%F`
 11 ip="222.24.19.12"
 
 12 /*$#为执行shell脚本时传递给该脚本的参数的个数,脚本名不计*/ 
 13 if [ $# != 1 ]; then
 14     echo "input error!"
 15     exit
 16 fi

 17 /*调用上面定义的函数*/
 18 show "$date" "$name" "$ip"
 19 
 20 sleep 5
 21 echo     //输出一个空行
 22 echo "exited!"

5、shell脚本排错:

在执行shell脚本之前,需要修改该脚本的权限:

chmod 755  脚本名

可以用两种方式执行该脚本:

  • ./脚本名 参数 或 bash 脚本名 参数 以这种方式执行一个shell脚本,bash会创建一个子shell来执行,所用的环境是子shell的执行环境,当执行结束后又会回到父shell的执行环境。

  • . /脚本名 参数 或 source 脚本名 参数 以这种方式执行的shell脚本,bash不会创建子shell,而是在自己的环境中执行,执行完成后,若脚本中有修改环境的地方,则bash的环境就会改变。

shell脚本由于是脚本程序,无需编译,所以排错只能依靠阅读源码排错或者是使用 bash -x 脚本名 参数 的执行方式追踪脚本的执行过程

6、shell脚本执行原理:

用户在登录之后,就会进入一个shell环境,称之为父shell,其他脚本执行时称之为子shell。每个用户都有一个默认的登录shell,保存在/etc/passwd文件中。用户可执行chsh修改默认的登录shell。子shell会继承父shell的环境变量。子shell也可以使用 bash命令再创建一个子shell,使用exit 退出一个shell。使用echo $SHLVL可以查看位于第几层shell中。

7、bash的启动配置文件:

用户登录时,login shell 会读取/etc/profile并执行,接着检查用户家目录中是否有.bash_profile,有则执行,然后检查是否有.bash_login ,有则执行,最后检查.profile,有则执行。注销的时候,bash会检查用户家目录中是否有.bash_logout,有则执行。 在执行一个新的shell时,若执行的是交互式shell,或者叫做命令,bash会检查并执行/etc/bash.bashrc以及家目录中的.bashrc。若执行的脚本,则检查BASH_ENV变量,并执行该变量所指向的文件。

Shell常用命令小结

1、ls:这是linux里最常用的命令,像数学里的1一样,简单但很重要。类似于dos里的dir命令,该命令的功能是列出目录下的文件或子目录。

-a:显示所有文件和目录,包括以.开头的隐藏文件
-l:以长格式的形式显示

例如:

kelvin@kelvin-laptop:~$ ls
examples.desktop  公共的  模板  视频  图片  文档  下载  音乐  桌面

kelvin@kelvin-laptop:~$ ls -a
.                 .gconfd          .pulse-cookie
..                .gksu.lock       .recently-used.xbel
.bash_history     .gnash           .sudo_as_admin_successful
.bash_logout      .gnome2          .themes
.bashrc           .gnome2_private  .thumbnails
.bogofilter       .gstreamer-0.10  .update-notifier
.cache            .gtk-bookmarks   .xsession-errors
.compiz           .gvfs            .xsession-errors.old
.config           .ICEauthority    公共的
.dbus             .icons           模板
.dmrc             .local           视频
.esd_auth         .mozilla         图片
.evolution        .nautilus        文档
examples.desktop  .openoffice.org  下载
.fontconfig       .profile         音乐
.gconf            .pulse           桌面

kelvin@kelvin-laptop:~$ ls -l
总用量 36
-rw-r--r-- 1 kelvin kelvin  179 2010-09-14 09:39 examples.desktop
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 公共的
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 模板
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 视频
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 图片
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 15:09 文档
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 14:57 下载
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 音乐
drwxr-xr-x 2 kelvin kelvin 4096 2010-09-14 09:49 桌面

2、cd:选择当前工作目录。例如:

cd .. :回到上级目录。 cd 或 cd ~:返回家目录。 cd -:返回操作前目录

cd !$ :把上个命令的参数作为输入。

3、touch:创建一个或多个空文件。

4、pwd:显示当前工作目录。

5、cp:复制文件或目录

格式:cp 源 目的

-r:复制目录
-f:如遇同名文件或目录,强制覆盖目的文件或目录
-p:保留文件或目录创建日期。

6、rm:删除文件或目录

-r:如果是删除目录,需要加该选项。
-f:强制删除

7、mv:移动文件或目录,一般用于重命名。

8、cat:显示全部的文件内容。

9、more:也是显示文件内容,一次只显示一屏幕,按空格显示下一页,按回车显示下一行,按q键退出。

10、less:显示文件内容,和more类似,区别在于less命令显示的文件可用方向键或pgup或pgdown控制。

11、head:显示文件头几行。如:head -3:显示头三行,默认为10行。

12、tail:显示文件后几行,与head类似。

13、ln:创建文件或目录的链接。源与目的都要使用绝对路径,且硬链接不能跨越磁盘分区。-s:创建软链接

14、mkdir:创建空目录。-p:可创建子目录。rmdir:删除空目录。-p:强制删除非空目录。

15、whereis:查看命令以及手册的位置。如:

kelvin@kelvin-laptop:~$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

16、whatis:查看命令功能。

17、man:查看命令手册

18、find:查找文件或目录。例如:find /etc -name f*

19、locate:查找文件或目录。无需路径。需要注意的是,对于新创建的文件或目录,用updatedb更新数据库后才能用locate命令找到。

20、grep:查找文件中的内容。格式:grep 关键字 文件名

21、gzip:压缩文件。

-1:快速压缩 -9:最佳压缩

22、gunzip:解压文件。=gzip -d

23、tar:打包文件。

  -c:创建一个包。-v:显示详细过程。 -f:指定包名  -x:解包

可用该命令压缩打包,或解压缩解包:

tar -zcvf file.tar.gz filename1 filename2 ……   
tar -zxvf file.tar.gz

bash配置文件的执行顺序

Linux用户在登陆系统之后会启动shell,并按照一定顺序读取shell的配置文件。以bash为例,配置文件的读取顺序如下:

  1. /etc/profile

  2. 如果是图形界面登陆系统,读取~/.profile,bash配置完毕。

  3. 如果是命令行或者ssh登陆系统,读取~/.bash_profile,bash配置完毕。

  4. 如果是命令行或者ssh登陆系统,且~/.bash_profile不存在,读取~/.bash_login,bash配置完毕。

  5. 如果是命令行或者ssh登陆系统,且~/.bash_profile,~/.bash_login不存在,读取~/.profile,bash配置完毕。

图形界面启动后,用户可能会再启动一个shell,该shell的配置文件是~/.bashrc,用户自定义的配置一般会放到这里。