Vi 按esc命令和文本切换
命令:o原有文本光标下一行写入
O上一行写入,即原有文本下降一行,空个上行出来
i光标字符前写入
I光标行头写入
a光标字符后写入
A光标行尾写入
个人认为I和A比小写的有用。
dd删除当前行
x删当前字符
hjkl 左下上右
标准unix窗口只有24行。
多于一24行一个屏命令 ctrl+y e 上下,u d 上下半屏 b f 上下24行
u撤销上一次编辑命令
U撤销光标所在行的命令
退出并保存ZZ 很管用
:w filename 将缓冲区的内容写入filename 继续
J合并两个连续的行
通配符 ?* 匹配集合[ ] 反集合[ ! ]
用户根目录 ~ 工作目录
.
父目录
..
无论何时,如果某个路径名以斜线开始,那么它一定是一个绝对路径名。
所谓相对路径就是如果目标目录或文件处于工作目录下,就是不用敲上工作目录的父目录了,直接敲子目录的名字到所要到的地方,如果目标目录不在他的子目录之列,就通过
..
操作或加上~操作达到目的。
~/
这种是代表本用户的根目录
~文件名
这种是代表其他用户的根目录
文件名是其他用户的
id
在
unix
中,一个物理文件只有一个索引节点,但它可以有多个名称,硬链接只可用于文件,而软连接可以用于文件和目录(不过目录本身也是一种文件)。
ls
中
-a
表示显示隐藏的文件,
-i
表示显示文件名和它他的链接。
-ai
或
-ia
该知道是什么了吧。
Pwd--------print work directory
文件类型标记:
-
常规文件
d
目录
c
字符特殊
还有其他不记了
ls –ld
只会显示当前工作目录
ll
(
hp-ux
)
-d
和它的功能一样。
ll –a
功能把上两者的功能都包括了,它把工作目录当作隐藏文件显示出来(
-a
的功能),并显示目录下其他文件(
ll
的功能)
{
猜
d directory a anonymous l list l long} -r
逆序
–t
按最近到远的时间显示一般和长列表(
-lt
)一起(而
hp-ux
用
ll –t
就
ok
了)。
ls –p
解决了段列表不能看出是文件还是目录的问题。
-R
会将目录下的所有东西列出来,有子目录就分项把目录的东东列出,直到底层无子目录。
R-recursion
(递归)
ls -1
(数字一)一行只显示一个,呵呵,
ll
本来就每行一个。
用
mkdir
命令时,如果建两个以上的文件夹,即目录,并且这些目录都不存在,必须用
-p
,
P
即
parent
,如
mkdir –p jiang/ahujyy/hehe. more
显示文件,自己
man
吧。
cp
时目标路径是文件的话就会把源
cp
到当前目录下以文件命名,如果是路径就会
cp
到路径下并路径最后那个文件命名。如果目标路径是以
/
结束,表示名字和源相同。使用
-p
能保持除了时间以外的属性都和源相同。(如果源是个文件夹,目标必须是个文件夹,即把源文件夹的内容考到目标文件夹下,虽然不是以
/
结束,但是源是目录,故目标也是目录名,而不是文件名,这种叫递归复制,要用命令
-r
)。只要目标是目录,就可以用通配符。担心是否有文件被覆盖,用
-i
。
移动
mv
交互
-i
,强制
-f
(即不管有没有写的权限,强制移入。
Force
)同一个目录下,把文件移动到一个文件,后面的文件即重新命名文件的名字,这样完成重命名的功能。
ln
链接命令,将以文件链接至另一文件,如果目标文件存在,强制链接就会导致两者物理文件是新地址。原目标文件丢失。(链接使两东东指向同一物理地址)如果要链接到另一个文件系统时得用符号链接,硬链接不能实现。链接到目录也要符号链接。
-s
(
sign
吧)我觉得是把目标链接到源,这点从符号链接看到。
rm –f
强制
-r
递归删除
所以有常用命令
rm –rf
find
和
exec
组合
vi
里编辑状态
esc
进命令,按
r
,然后按你所要的字母,它会覆盖光标下的一个字母;光标处在一行字符串当中,如果你输入字母是添加不是修改,按
esc
,
R+
字母串,字母串会不断的覆盖后面的字,按
esc A
到句末。
按
esc
后
S
与
dd
区别是:
S
是光标处在刚才一行变空行头,
dd
一行没了,下一行跟着缩进,没空行。
s+
字母,把一个字母替代,后面就是添加字母。
这么繁琐,不知道有什么实用。命令
X
删除后仍处命令状态。文本标记命令
m
不知道干嘛。
改变大小写命令~。对文本的操作,我觉得有对字符的操作就够了。修改
esc c+
数字
+h
(移动光标命令)。放置命令
p
,我看还不如手按字符。一行按
yy
命令,到其他地方按
p
,是复制和粘贴的功能。
ex
是地址
+
命令
正则表达式:
由原子和运算符组成。
原子分为:单个字符,点,类,锚,向后引用。
把要比较的文本和正则表达式匹配,只要文本中包括符合匹配的信息就会返回
true
。
单个字符不用说。点,一个点匹配除了换行符(
/n
)外的任意单个字符。类原子定义了一个
ASCII
字符集。其中任意一个都要匹配文本中的任意字符。就是说里面有一个匹配文本中一个就
ok
了。
[ ABF ]
文本
ai
匹配。
-
表示范围,
[a-d], ^
表示非,
[^0-9]
注意:在类原子括号集内的
^
符号表示余集,它被解释除了集合中标出字符之外的任意
ascii
字符。(/)转义字符。
[^/^]表示除了^之外的任意字符,[0-9/-]表示数字或破折号。
锚 行首(^)行尾($)单词开头(/<)单词结尾(/>)表示找出以g结尾的单词 g/>
注意: 正则表达式开头的^字符是一个锚,含义为当前行当行首,而在其他的地方,它作为一个文本字符与自己进行匹配,如果在[]中那就是余集了;正则表达式结尾的$字符是一个锚,含义为当前行的行尾,而在其他的地方,它作为一个文本字符与自己匹配。
向后引用用于将当前或目标缓冲区内的文本和保存在系统的9个缓冲区其中之一种的文本进行匹配。/1/2…/9
运算符:序列 空,交换 | ,重复/{m,n/}, 组(…),保存/(…/)
例子:dog 匹配dog , a..b匹配amhb, UNIX|unix 匹配UNIX或unix;A/{3,5/}匹配AAA,AAAA,AAAAA. BA/{3,5/}匹配BAAA ,BAAAA,BAAAAA. /{3/}精确3次,/{3,/} 3次以上。/{,3/} 0到3次。
缩写形式:*
/{0,/}
+ /{1,/}
? /{0,1/}
正则表达式中的星号*与通配符*的意义不同,前者表示将前面的字符或字符组重复0次或多次,而后者则用在文件名中,表示0个或多个字符,在正则表达式中,星号预符不能独立使用,必须跟在一个原子或原子组织之后。
? 也一样。前者表示重复0或1次。
加号有些系统不可用,用* 代替a+ = aa*
匹配时会贪婪模式匹配 a.*hjj 匹配
adfa
hjjdfsshjjeed.最大的匹配。
组运算符 A(BC)/{3/} 匹配 ABCBCBC
保存运算符/(…/)
在一个表达式内,第一个被保存的文本被复制到缓冲区1,第二个被复制到缓冲区2,最多到第九个缓冲区。
/( [A-Z a-z]/).*/1表示以相同的字符开头和结尾的字符或字符串 /1表示和存在一中的内容匹配,它是个向后引用。
/b匹配一个单词边界,也就是指单词和空格间的位置。例如‘er/b’可以匹配nerver,但不匹配verb中的er 后者匹配er/B. /d匹配一个数字字符,等价于[0-9]./D匹配一个非数字字符,等价于[^0-9]. /f 匹配一个换页符。等价于 /x0c 和 /cL。/n 匹配一个换行符。等价于 /x0a 和 /cJ。 /r 匹配一个回车符。等价于 /x0d 和 /cM。/s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ /f/n/r/t/v]。/S 匹配任何非空白字符。等价于 [^ /f/n/r/t/v]。
grep(global regular expression print)fgrep 快grep egrep扩展grep用到组操作符时用它。
每一行前加上所在的文件块编号
-c 只打印匹配模式的行编号计数。grep –c “^$” file 查空行的行数。
-i 在匹配文本是忽略大小写。
-n 在每行前显示其行编号。
-v逆向输出,打印不匹配模式的行。如grep –vn “….” File 表示输出小于等于三个字符的行。
Shell简介 unix操作系统包含四种不同的部分:内核,shell,实用程序和应用程序。
包括两主要部分:解释程序,开发shell(命令)脚本的程序设计功能。
Bourne shell C shell Korn shell
系统变量SHELL,它标识至你登录shell的路径。查看
echo $SHELL
Echo $0 0是零。显示当前shell。切换$bash $ksh $csh 回到上个shell 用exit。
标准输入流描述符0
标准输出1 标准错误2
重定向:改变默认的输入出错对象。输入重定向 命令 0<file 或命令 <file
输出 命令 1>file
命令>file 命令>| file(强制覆盖 ) 命令>>file 在文件后继续写。
例子:$ls file1 noFile 2>myErrFile 1>myOut.
$ls file1 noFile 1>| mystdOut 2>|&1 (重定向到同一个文件 )其中1可以不写。管道是一个运算符不是一个命令。 tee 命令复制标准输入至标准输出。
命令执行:顺序命令 中间用分号。$echo “/n Goblins&Ghosts/n
Month”>Oct2000; cal 10 2000>>Oct2000
$more Oct2000
Goblins&Ghosts
Month
October 2000
S
M Tu W Th F S
1
2 3 4 5 6 7
分组命令:$(echo “/n Goblins&Ghosts/n
Month”;cal 10 2000)>Oct2000链式命令 | 管道
条件命令:&& 前成功后才执行。|| 钱失败后才执行
命令编辑 esc h在命令中左移一个字符 j下翻k往用过的上翻 l右移。I i a A x 不说了。、
元字符 拥有特殊的解释的字符 三种被称为引号的元字符 “ ‘ /
/ ex: $echo /< /> /” /’ // /$ <>”’/$
还有是命令接命令时 ,第一个命令完 ;/ 按回车 接着下一行命令。前一个命令不会被马上执行。
“
双引号去掉大多数元字符的特殊解释。但$除外。 Ex: $ x=hello $echo “<>$x ‘y’ ? &”
结果:<>hello ‘y’ ? & 双引号保留诸如空格,制表符和换行等空白符。
‘ 类似“ 效果更强 $ 也搞定。 上试结果<>$x”y”?&.(‘’----“”)
命令代替$() $echo Hello! The date and time are: $(date)
作业控制:前台作业 终端只能同时运行一个,一个交互。 后台作业和前台作业共享标准输入输出(键盘屏幕)后台作业要输入参数要变为前台作业。它也会输出输出信息到屏幕上。后台处理命令时 结尾加个& 要想终端断了仍在运行在命令前加nohup
前台作业 挂起ctrl+z 恢复fg 终止ctrl+c
后台作业 $longJob.scr&
[1] 172990 前面是作业号右边是进程标识符PID;
挂起stop %作业号 恢复 bg %1( 作业号) 终止 kill %作业号
jobs 显示当前作业及状态。
进程ID PID 命令ps –ef
别名: $alias dir=ll =要紧跟dir。dir就有了ll功能。直接dir 变量时$AA=BB用时还要echo$ $AA
删除别名例子 unalias dir
变量:用户定义 预定义两种 用户就如上AA,
预定义(ksh): CDPATH cd 命令时搜索的路径。
EDITOR 命令行编辑器的路径名 如vi
ENV 环境文件路径名 每次启动新用户都会加载。
HOME 用户和目录 每次空cd参数时用到。
PATH 命令搜索路径 如cd ll 等命令的搜索路径
PS1 主要提示符 常用的是$. 还有%一般都是$。不过一行没输入完如等’或”时,
是提示符<
SHELL 登录shell的路径名 如查看它 $echo $SHELL
其他我不太熟,看profile文件慢慢了解吧。
选项:常见的 noglob 禁用通配符展开
verbose 在命令执行之前显示他们
xtrace emacs ignoreeof noclobber vi 等
设置 set –o 选项
取消设置 set +o option 显示全部 set -o