linux使用积累

来源:互联网 发布:行转列sql 编辑:程序博客网 时间:2024/06/03 21:52

1.安装rpm

首先安装alien软件包:sudo apt-get install alien,然后转换alien --to-deb [file.rpm],然后安装deb包: dpkg -i [file.deb]2.java环境配置配置classpath,修改所有用户的环境变量

  $ sudo gedit /etc/profile

  在文件最后添加

  #set java environment

  JAVA_HOME=/home/liangshihong/jdk1.6.0_12

  export JRE_HOME=/home/liangshihong/jdk1.6.0_12/jre

  export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

  export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

  重新启动计算机,用命令测试jdk的版本

  java -version

  显示如下信息:成功安装

  java version "1.6.0_12"

  Java(TM) SE Runtime Environment (build 1.6.0_12-b04)

  Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode)

type命令用来显示指定命令的类型。一个命令的类型可以是如下之一

  • alias 别名
  • keyword 关键字,Shell保留字
  • function 函数,Shell函数
  • builtin 内建命令,Shell内建命令
  • file 文件,磁盘文件,外部命令
  • unfound 没有找到

它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助。比如内建命令可以用help命令来获取帮助,外部命令用man或者info来获取帮助。

常用参数

type命令的基本使用方式就是直接跟上命令名字。

type -a可以显示所有可能的类型,比如有些命令如pwd是shell内建命令,也可以是外部命令。

type -p只返回外部命令的信息,相当于which命令。

type -f只返回shell函数的信息。

type -t 只返回指定类型的信息。


cat命令

c a t是一个简单而通用的命令,可以用它来显示文件内容,创建文件,还可以用它来显示
控制字符。在使用c a t命令时要注意,它不会在文件分页符处停下来;它会一下显示完整个文
件。如果希望每次显示一页,可以使用m o r e命令或把c a t命令的输出通过管道传递到另外一个
具有分页功能的命令中。

如果希望显示名为m y f i l e的文件,可以用:
$ cat myfile
如果希望显示m y f i l e 1、m y f i l e 2、m y f i l e 3这三个文件,可以用:
$ cat myfile1 myfile2 myfile3
如果希望创建一个名为b i g f i l e的文件,该文件包含上述三个文件的内容,可以把上面命令
的输出重定向到新文件中:
$ cat myfile1 myfile2 myfile3 > bigfile
如果希望创建一个新文件,并向其中输入一些内容,只需使用c a t命令把标准输出重定向
到该文件中,这时c a t命令的输入是标准输入—键盘,你输入一些文字,输入完毕后按
< C T R L - D >结束输入。这真是一个非常简单的文字编辑器!
cat >myfile


还可以使用c a t命令来显示控制字符。这里有一个对从D O S机器上f t p过来的文件进行检察
的例子,在这个例子中,所有的控制字符< C T R L - M >都在行末显示了出来。
cat -v myfile

sed 命令

sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。
sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
定址
定址用于决定对哪些行进行编辑。地址的形式可以是数字、正则表达式、或二者的结合。如果没有指定地址,sed将处理输入文件的所有行。
 
地址是一个数字,则表示行号;是“$"符号,则表示最后一行。例如: 

sed -'3p' datafile
只打印第三行

 

 只显示指定行范围的文件内容,例如:

# 只查看文件的第100行到第200行
sed -n '100,200p' mysql_slow_query.log

 

地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。例如:

sed '2,5d' datafile
#删除第二到第五行
sed '/My/,/You/d' datafile
#删除包含"My"行到包含"You"行之间的行
sed '/My/,10d' datafile
#删除包含"My"行到第十行的内容


pr 命令

pr命令可以用来将文本转换成适合打印的文件。这个工具的一个基本用途就是将较大的文件分割成多个页面,并为每个页面添加标题。

默认情况下,pr会为每个页面加入换行符(比如空行),不过用户也可以使用制表符来代替空行。可以下面这段命令使制表符来代替空行:
  $ pr -f file.txt
  
  如果用户只是想打印文件,而不想保存它,那么这个功能比较合适,但是如果用户同时也要保存文件,那么添加的制表符会让文件看起来比较乱。
  
  需要记住的是,pr是一个标准的输出工具,可以直接输出到打印机,如果你希望将结果保存在文件中,则需要重定向它的输出,如下面这个例子:
  $ pr file.txt >file.output

tr 命令

t r用来从标准输入中通过替换或删除操作进行字符转换。t r主要用于删除文件中控制字符或进行字符转换。使用t r时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。
t r
刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。

unset 命令

功能说明:删除变量或函数。

  语  法:unset [-fv][变量或函数名称]

  补充说明:unset为shell内建指令,可删除变量或函数。

  参   数:

  -f  仅删除函数。

  -v  仅删除变量。


file命令:

1. file 是检测文件类型的命令。2. 文件类型就文件组织的方式,通常不同的文件类型执行不同的标准。例如我们熟知的:txt , doc , xls , pdf ...3. file 命令的简单用法就是:file 文件名,例如:file data.txtdata.txt: ASCII text就告诉我们,data.txt 是一个text (即txt) 类型的文件。txt 文件所采用的编码是ascii编码体系。所以 text 是文件类型;ASCII是编码体系。又如:file my.pdfmy.pdf: PDF document, version 1.5“PDF document“ 告诉我们 , my.pdf 是pdf类型的文件。版本执行的标准是:1.5 像ascii , version 1.5 这些都是与文件类型密切相关的信息。如果需要更详细的信息,可以加参数:如:file -i data.txt 

%%

${LINE%% *}的意思就是从LINE这个变量的值中,从后面开始以最长匹配删去%%后面的表达式内容。
${parameter%word}${parameter%%word}都是从parameter的最后开始删除word所匹配的内容,%是最短匹配,%%是最长匹配。

shell的特殊字符

点(.)命令

  点(.)命令是一个shell内部命令,它可以使用户在当前的shell中执行程序,而不创建子进程。

注释

#    shell脚本的注释符号

重定向符

>    用法:command > filename,可以将command的输出保存在filename文件中。

>>  同 > 类似,但表示追加。

<    用法:command < filename,可以将filename文件内容作为command的输入。

<<  与 < 类似,一般用在shell脚本文件中,用于向其它命令提供标准输入。

通配符

?  匹配单个字符

*  匹配零个或多个字符

[list] 用法:[A-Z],匹配的范围,这里表示匹配范围从A到Z之间的大写字母(包括A、Z)

[!list] 用法:[!A-Z],表示不匹配从A到Z之间的大写字母(包括A、Z)

注意与条件判断的[]不同,上面的[]和list之间是没有空格的!!!

引用字符

\  \后面的任何字符按该字符字面解释

""  双引号""中除$、`(TAB键上边的重音符)、"(双引号)之外的任何字符按该字符字面解释

'  单引号''中除'(单引号)外的任何字符按该字符字面解释

命令替换符

`  TAB键上面的重音符号,该符号告诉shell执行重音符号``内的命令,并将命令的输出插入到``所在的位置上。

命令序列

;  分号,分割同一行中的不同命令

命令编组

()  可以将多条命令放入()编成一组,一个命令组能够像单条命令一样被重定向,如(command1; command2; ... ; commandx) > outfile

后台处理

&  在命令的最后加&表示后台执行&前面的命令

管道命令

|  shell允许用户将前一个进程的标准输出用作另一个进程的标准输入,用户可以在命令之间加 | 来实现该功能。


;; 连续分号 (Terminator)
专用在 case 的选项,担任 Terminator 的角色。
case "$fop" inhelp) echo "Usage: Command -help -version filename";;version) echo "version 0.1" ;;esac


. 逗号 (dot,就是“点”)
在 shell 中,使用者应该都清楚,一个 dot 代表当前目录,两个 dot 代表上层目录。
CDPATH=.:~:/home:/home/web:/var:/usr/local
在上行 CDPATH 的设定中,等号后的 dot 代表的就是当前目录的意思。
如果档案名称以 dot 开头,该档案就属特殊档案,用 ls 指令必须加上 -a 选项才会显示。除此之外,在 regularexpression 中,一个 dot 代表匹配一个字元。


, 逗点 (comma,标点中的逗号)
这个符号常运用在运算当中当做"区隔"用途。如下例
#!/bin/bashlet "t1 = ((a = 5 + 3, b = 7 - 1, c = 15 / 3))"echo "t1= $t1, a = $a, b = $b"


/ 斜线 (forward slash)
在路径表示时,代表目录。
cd /etc/rc.dcd ../..cd /
通常单一的 / 代表 root 根目录的意思;在四则运算中,代表除法的符号。
let "num1 = ((a = 10 / 2, b = 25 / 5))"


\ 倒斜线
在交互模式下的escape 字元,有几个作用;放在指令前,有取消 aliases的作用;放在特殊符号前,则该特殊符号的作用消失;放在指令的最末端,表示指令连接下一行。
# type rmrm is aliased to `rm -i'# \rm ./*.log
上例,我在 rm 指令前加上 escape 字元,作用是暂时取消别名的功能,将 rm 指令还原。
# bkdir=/home# echo "Backup dir, \$bkdir = $bkdir"Backup dir,$bkdir = /home
上例 echo 内的 \$bkdir,escape 将 $ 变数的功能取消了,因此,会输出 $bkdir,而第二个 $bkdir则会输出变数的内容 /home。


! 惊叹号(negate or reverse)
通常它代表反逻辑的作用,譬如条件侦测中,用 != 来代表"不等于"
if [ "$?" != 0 ]thenecho "Executes error"exit 1fi
在规则表达式中她担任 "反逻辑" 的角色
ls a[!0-9]
上例,代表显示除了a0, a1 .... a9 这几个文件的其他文件。


: 冒号
在 bash 中,这是一个内建指令:"什么事都不干",但返回状态值 0。
:
echo $? # 回应为 0
: > f.$$
上面这一行,相当于 cat /dev/null >f.$$。不仅写法简短了,而且执行效率也好上许多。
有时,也会出现以下这类的用法
: ${HOSTNAME?} ${USER?} ${MAIL?}
这行的作用是,检查这些环境变数是否已设置,没有设置的将会以标准错误显示错误讯息。像这种检查如果使用类似 test 或 if这类的做法,基本上也可以处理,但都比不上上例的简洁与效率。
除了上述之外,还有一个地方必须使用冒号
PATH=$PATH:$HOME/fbin:$HOME/fperl:/usr/local/mozilla
在使用者自己的HOME 目录下的 .bash_profile或任何功能相似的档案中,设定关于"路径"的场合中,我们都使用冒号,来做区隔。


$ 钱号(dollar sign)
变量替换(Variable Substitution)的代表符号。
vrs=123echo "vrs = $vrs" # vrs = 123
另外,在 Regular Expressions 里被定义为 "行" 的最末端 (end-of-line)。这个常用在grep、sed、awk 以及 vim(vi) 当中。


${} 变量的正规表达式
bash 对 ${} 定义了不少用法。以下是取自线上说明的表列
   ${parameter:-word}   ${parameter:=word}   ${parameter:?word}   ${parameter:+word}   ${parameter:offset}   ${parameter:offset:length}   ${!prefix*}   ${#parameter}   ${parameter#word}   ${parameter##word}   ${parameter%word}   ${parameter%%word}   ${parameter/pattern/string}   ${parameter//pattern/string}


$* 
$* 
引用script的执行引用变量,引用参数的算法与一般指令相同,指令本身为0,其后为1,然后依此类推。引用变量的代表方式如下:
$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, ${10}, ${11}.....
个位数的,可直接使用数字,但两位数以上,则必须使用 {} 符号来括住。
$* 则是代表所有引用变量的符号。使用时,得视情况加上双引号。
echo "$*"
还有一个与 $* 具有相同作用的符号,但效用与处理方式略为不同的符号。


$@
$@ 与 $* 具有相同作用的符号,不过她们两者有一个不同点。
符号 $* 将所有的引用变量视为一个整体。但符号 $@ 则仍旧保留每个引用变量的区段观念。

$#
这也是与引用变量相关的符号,她的作用是告诉你,引用变量的总数量是多少。
echo "$#"


$? 状态值 (status variable)
一般来说,UNIX(linux) 系统的进程以执行系统调用exit()来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。
一般指令程序倘若执行成功,其回传值为 0;失败为 1。
tar cvfz dfbackup.tar.gz /home/user > /dev/nullecho"$?"$$
由于进程的ID是唯一的,所以在同一个时间,不可能有重复性的 PID。有时,script会需要产生临时文件,用来存放必要的资料。而此script亦有可能在同一时间被使用者们使用。在这种情况下,固定文件名在写法上就显的不可靠。唯有产生动态文件名,才能符合需要。符号$$或许可以符合这种需求。它代表当前shell 的 PID。
echo "$HOSTNAME, $USER, $MAIL" > ftmp.$$
使用它来作为文件名的一部份,可以避免在同一时间,产生相同文件名的覆盖现象。
ps: 基本上,系统会回收执行完毕的 PID,然后再次依需要分配使用。所以 script 即使临时文件是使用动态档名的写法,如果script 执行完毕后仍不加以清除,会产生其他问题。

(   ) 指令群组 (command group)
用括号将一串连续指令括起来,这种用法对 shell 来说,称为指令群组。如下面的例子:(cd ~ ; vcgh=`pwd` ;echo $vcgh),指令群组有一个特性,shell会以产生 subshell来执行这组指令。因此,在其中所定义的变数,仅作用于指令群组本身。我们来看个例子
# cat ftmp-01#!/bin/basha=fsh(a=incg ; echo -e "\n $a \n")echo $a#./ftmp-01incgfsh
除了上述的指令群组,括号也用在 array 变数的定义上;另外也应用在其他可能需要加上escape字元才能使用的场合,如运算式。


((  ))
这组符号的作用与 let 指令相似,用在算数运算上,是 bash 的内建功能。所以,在执行效率上会比使用 let指令要好许多。
#!/bin/bash(( a = 10 ))echo -e "inital value, a = $a\n"(( a++))echo "after a++, a = $a"

{  } 大括号 (Block of code)
有时候 script 当中会出现,大括号中会夹着一段或几段以"分号"做结尾的指令或变数设定。
# cat ftmp-02#!/bin/basha=fsh{a=inbc ; echo -e "\n $a \n"}echo $a#./ftmp-02inbcinbc
这种用法与上面介绍的指令群组非常相似,但有个不同点,它在当前的 shell 执行,不会产生 subshell。
大括号也被运用在 "函数" 的功能上。广义地说,单纯只使用大括号时,作用就像是个没有指定名称的函数一般。因此,这样写 script也是相当好的一件事。尤其对输出输入的重导向上,这个做法可精简 script 的复杂度。

此外,大括号还有另一种用法,如下
{xx,yy,zz,...}
这种大括号的组合,常用在字串的组合上,来看个例子
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,这几个目录。这组符号在适用性上相当广泛。能加以善用的话,回报是精简与效率。像下面的例子
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
如果不是因为支援这种用法,我们得写几行重复几次呀!


[   ] 中括号
常出现在流程控制中,扮演括住判断式的作用。if [ "$?" != 0 ]thenecho "Executes error"exit1fi
这个符号在正则表达式中担任类似 "范围" 或 "集合" 的角色
rm -r 200[1234]
上例,代表删除 2001, 2002, 2003, 2004 等目录的意思。


[[     ]]
这组符号与先前的 [] 符号,基本上作用相同,但她允许在其中直接使用 || 与&& 逻辑等符号。
#!/bin/bashread akif [[ $ak > 5 || $ak< 9 ]]thenecho $akfi


\<...\> 单字边界
这组符号在规则表达式中,被定义为"边界"的意思。譬如,当我们想找寻 the 这个单字时,如果我们用
grep the FileA
你将会发现,像 there 这类的单字,也会被当成是匹配的单字。因为 the 正巧是 there的一部份。如果我们要必免这种情况,就得加上 "边界" 的符号
grep '\' FileA



Ubuntu启动直接到终端、字符、命令行、不想要图形

  原先一直在用linux的操作系统,有运行级别,开启启动到图形界面还是到字符界面,我们只要在inittab我们选择相应的级别即可以。现在接触到Ubuntu,发现桌面版的启动后就直接进入桌面,而服务器版的则直接到字符界面。因为我不是很喜欢图像界面,所以就想让桌面版的系统也想让它直接启动到字符界面。通过下面的设置可以让大家轻松的实现,希望对大家有所帮助。

     我们进入到/etc/default/目录中,然后用我们自己喜欢的编辑器去编辑目录中的grub文件。修改下面的内容,在其末尾添加text即可,下面为修改后的结果:

     GRUB_CMDLINE_LINUX_DEFAULT="quiet splash  text "   9.10 desktop 版本

     GRUB_CMDLINE_LINUX_DEFAULT="quiet text"                10.04 LTS 版本

      修改完之后,在执行update-grub,然后重新启动电脑即可



ubuntu进入终端

首先按住Alt,然后按一下F2,出来一个运行框,在里面输入 gnome-terminal即可运行。

在这个运行框里,可以执 行很多命令,想当于windows的[运行],不过很难记住。



sudo apt-get install libsdl1.2-dev(比较大,10M左右)

附加包:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

因为ubuntu里面有SDL,所以直接在命令窗口输入以下就可以了:

sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libsdl-net1.2-dev libsdl-sound1.2-dev

检测SDL装上了没有:sdl-config --exec-prefix --version --cflags


生成共享库
$ gcc -shared shellofirst.o shellosecond.o -o hello.so


Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录。以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端窗口里面输入: sudo  -s.然后输入普通用户登陆的密码,回车即可进入 root用户权限模式。

然后执行: vi /etc/lightdm/lightdm.conf.

增加 greeter-show-manual-login=true  allow-guest=false  . 修改完的整个配置文件是

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
allow-guest=false   #不允许guest登录


然后我们启动root帐号:
sudo passwd root
根据提示输入roott帐号密码。



ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的。而如果需要从远程连接到本机,则需要安装openssh-server,该程序需要自己安装。在Ubuntu下安装openssh-server非常简单。 
安装openssh-server
$ sudo apt-get install openssh-server 
查看openssh-server是否启动
$ ps -e | grep ssh
进程ssh-agent是客户端,sshd为服务器端,如果结果中有sshd的进程说明openssh-server已经启动,如果没有则需运行命令启动。 
启动、停止和重启openssh-server的命令如下
/etc/init.d/ssh start
/etc/init.d/ssh stop
/etc/init.d/ssh restart 
配置openssh-server
openssh-server配置文件位于/etc/ssh/sshd_config,在这里可以配置SSH的服务端口等,例如:默认端口是22,可以自定义为其他端口号,如222,然后需要重启SSH服务。 
关闭ssh登录到root用户
开放ssh登录root权限是非常危险的,所以不是特别需要,应该关闭该权限,在配置文件/etc/ssh/sshd_config中找到PermitRootLogin yes一行,将yes改为no然后重启ssh即可。 
Ubuntu中配置openssh-server开机自动启动
打开/etc/rc.local文件,在exit 0语句前加入:
/etc/init.d/ssh start 
关于客户端连接
客户端可以用putty、SecureCRT、SSH Secure Shell Client等SSH 客户端软件,输入您服务器的IP地址,并且输入登录的用户和密码就可以登录了。我常选择的客户端软件是putty。 
关于ssh的加密
实际上ssh的使用远不止这些,ssh还有很重要的一部分内容,那就是ssh通过公钥私钥进行加密,例如git就可以采用加密ssh的方式访问。关于ssh的加密这里暂不讨论,有机会再补充,可以查看相关资料了解。 
相关阅读: 
Ubuntu 下配置 SSH服务全过程及问题解决 http://www.linuxidc.com/Linux/2011-09/42775.htm 
Ubuntu 12.04下安装Git,SSH及出现的Permission denied解决办法 http://www.linuxidc.com/Linux/2013-06/85336.htm 
Ubuntu 12.10下OpenSSH的离线安装方法 http://www.linuxidc.com/Linux/2013-04/82814.htm 
Ubuntu下SSH安装或设置 http://www.linuxidc.com/Linux/2013-07/87368.htm 
更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2


 vi/vim 基本使用方法
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!
vi编辑器是所
有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及
Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它
后,您将在Linux的世界里畅行无阻。
1、vi的基本概念
  基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
1) 命令行模式command mode)
  控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
  只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3) 底行模式(last line mode)
  将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
2、vi的基本操作
a) 进入vi
  在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:
   $ vi myfile
 
 不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert
mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到
「插入模式(Insert mode)」再说吧!
b) 切换至插入模式(Insert mode)编辑文件
  在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。
c) Insert 的切换
  您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。
d) 退出vi及保存文件
  在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
3、命令行模式(command mode)功能键
1). 插入模式
  按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
  按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
  按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2). 从插入模式切换为命令行模式
  按「ESC」键。
3). 移动光标
  vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。
  按「ctrl」+「b」:屏幕往“后”移动一页。
  按「ctrl」+「f」:屏幕往“前”移动一页。
  按「ctrl」+「u」:屏幕往“后”移动半页。
  按「ctrl」+「d」:屏幕往“前”移动半页。
  按数字「0」:移到文章的开头。
  按「G」:移动到文章的最后。
  按「$」:移动到光标所在行的“行尾”。
  按「^」:移动到光标所在行的“行首”
  按「w」:光标跳到下个字的开头
  按「e」:光标跳到下个字的字尾
  按「b」:光标回到上个字的开头
  按「#l」:光标移到该行的第#个位置,如:5l,56l。
4). 删除文字
  「x」:每按一次,删除光标所在位置的“后面”一个字符。
  「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
  「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
  「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
  「dd」:删除光标所在行。
  「#dd」:从光标所在行开始删除#行
5). 复制
  「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  「#yw」:复制#个字到缓冲区
  「yy」:复制光标所在行到缓冲区。
  「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
6). 替换
  「r」:替换光标所在处的字符。
  「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
7). 回复上一次操作
  「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
8). 更改
  「cw」:更改光标所在处的字到字尾处
  「c#w」:例如,「c3w」表示更改3个字
9). 跳至指定的行
  「ctrl」+「g」列出光标所在行的行号。
  「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4、Last line mode下命令简介
  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
A) 列出行号
 「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
B) 跳到文件中的某一行
 「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符
 「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
 「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
D) 保存文件
 「w」:在冒号输入字母「w」就可以将文件保存起来。
E) 离开vi
 「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
 「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些键的功能:
h
左移光标一个字符
l
右移光标一个字符
k
光标上移一行
j
光标下移一行
^
光标移动至行首
0
数字“0”,光标移至文章的开头
G
光标移至文章的最后
$
光标移动至行尾
Ctrl+f
向前翻屏
Ctrl+b
向后翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向后翻半屏
i
在光标位置前插入字符
a
在光标所在位置的后一个字符开始增加
o
插入新的一行,从行首开始输入
ESC
从输入状态退至命令状态
x
删除光标后面的字符
#x
删除光标后的#个字符
X
(大写X),删除光标前面的字符
#X
删除光标前面的#个字符
dd
删除光标所在的行
#dd
删除从光标所在行数的#行
yw
复制光标所在位置的一个字
#yw
复制光标所在位置的#个字
yy
复制光标所在位置的一行
#yy
复制从光标所在行数的#行
p
粘贴
u
取消操作
cw
更改光标所在位置的一个字
#cw
更改光标所在位置的#个字
2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename
wq filename
储存正在编辑的文件为filename,并退出vi
q!
放弃所有修改,退出vi
set nu
显示行号
/或?
查找,在/后输入要查找的内容
n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。
对于第一次用vi,有几点注意要提醒一下:
1、用vi打开文件,是处于「命令行模式(command


首先确认已经安装了samba,这个在Ubuntu应该没有问题,因为第一次打开系统管理中的“共享的文件夹”时就会提示并自动下载安装samba。

  然后配置samba配置文件
  sudo gedit /etc/samba/smb.conf

  按照这个说明:
  [global]
  #WINDOWS 中显示的工作组
  workgroup=workgroup
  #windows中显示的计算机名
  netbios name=baileyking  #samba服务器的介绍
  server string=welcome 
  #验证和登陆方式,有好多中,选share就不用设置用户和密码了
  security=share
  #在windows中显示出来的目录名
  [download]
  #设置共享目录放在哪里
  path=/home/download
  #是否可写
  wirteable=yes
  #是否可浏览
  browseable=yes
  #匿名帐户以guest用户登陆
  guest ok=yes

  这个说明上的东西很多,其实需要自己改的就是把security=user那一行前的注释符";"去掉,然后把user改为share。其它的内容都可以在“共享的文件夹”中自动配置。

  设好后,通过sudo /etc/init.d/samba restart自行重启。在Win下就可以看到并直接访问了。

  如果Win下看不到,看看Windows能不能看到其它Windows系统的共享文件夹,看不到的话就是Windows的网络没有进行配置。配置的方法可以通过网络连接设置中的设置家庭和小型办公网络还设置。

  还可以在ubntu的文件管理器中通过Ctrl+L,打开地址栏,输入smb://接自己机器的计算机名或IP地址,来查看是否配置好。

  其实这个应该算是Ubuntu最基础的使用方法的说明了,然而在网上寻找起来却是相当困难。很多高手回答起这样的问题都是采用相当专业的方法,通常列一大堆 samba服务器的使用详解来,让初学者晕头转向。我也越来越感觉到Linux基础文档的基础使用方法说明的重要性了。


-----------------------------------------------------------------------------------------------------------------------------

APACHE 2.3.7 编译出错 configure: error: APR-util not found.  Please read the documentation 解决办法

wget http://apache.freelamp.com/apr/apr-1.4.2.tar.gz  下载apr

./configure –prefix=/usr/local/web/apr

make

make  install

wget http://apache.freelamp.com/apr/apr-util-1.3.10.tar.gz

./configure –prefix=/usr/local/web/apr-util –with-apr=/usr/local/web/apr

make

make install

接下来从新编译apache

./configure –prefix=/usr/local/web/apache –enable-rewrite –enable-so –with-apr=/usr/local/web/apr –with-apr-util=/usr/local/web/apr-util

晕啊 又出错

configure: error: pcre-config for libpcre not found. PCRE is required and available fromhttp://pcre.org/

wget http://cdnetworks-kr-2.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.tar.gz

./configure –prefix=/usr/local/web/pcre

./libtool: line 990: g++: command not found

呵呵 又出错了 我无语了啊 要是没出错那就跳过这一步骤了

若出错执行下面的命令了

 yum -y install gcc+ gcc-c++

在执行./configure –prefix=/usr/local/web/pcre

make

make install

在编译APACHE

./configure –prefix=/usr/local/web/apache –enable-rewrite –enable-so –with-apr=/usr/local/web/apr –with-apr-util=/usr/local/web/apr-util –with-pcre=/usr/local/web/pcre

make

make install

OK了



scp:
从本地服务器复制到远程服务器
scp -r local_folder remote_username@remote_ip:remote_folder
从远程服务器复制到本地服务器
从远程复制到本地的scp命令与上面的命令雷同,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。
例如:
scp root@www.mydomain.com:/home/linux/soft/scp.zip /home/linux/others/scp.zip
scp www.mydomain.com:/home/linux/soft/ -r /home/linux/others/
linux系统下scp命令中很多参数都和 ssh1 有关 , 还需要看到更原汁原味的参数信息,可以运行man scp 看到更细致的英文说明.



原创粉丝点击