Linux下的基本操作速查
===常识===
linux"/"而非"\"来分隔目录,/dir/.表示/dir这个目录,而/dir1/dir2/..表示/dir1这个目录。
shell总是有一个当前目录,文件的相对路径(不以"/"开头的路径)从当前目录开始计算
catsort等处理文件内容的命令,在没有文件名时处理标准输入(键盘输入)
和?是文件名通配符,代表示任意数量字符,?代表单个字符。通配符由shell而非命令自身解释,因此ren.bak.sav这样的dos操作是不可能的。 ===目录相关===
pwd
cd/dir1/dir2 修改当前目录为/dir1/dir2
cd/ 修改当前目录为根目录
cd~ 修改当前目录为用户主目录
cd.. 返回当前目录的父目录
cd- 返回上一个目录
mkdirnewdir 在当前目录下建立新目录newdir
mkdir-pdir1/dir2 创建多层目录
rmdirolddir 在当前目录下删除空目录olddir
rm-rdir 在当前目录下删除非空目录dir
rm-i 删除时提示用户确认
rm-f 删除时忽略不存在的文件,无提示
ls-l 按长格式列出当前目录下文件
ls-la 按长格式列出包括以"."开头的隐含文件
ls-d 列出目录的信息,而不是文件和子目录
ll 按长格式列举当前目录下的文件
ls–R 递归地列出所有子目录中的文件信息
ls–F 在项目后显示类型指示符
ls–lh 使用长列表,文件大小按习惯显示 ===解决乱码或者其他中文字符集问题===
exportLC_ALL=
exportLC_CTYPE=zh_CN.gbk ===文件操作===
rmfoobaretc foobaretc
mvfoobar 文件改名foo1改成bar
mvsrc1src2…dst 把文件移动到dst目录
cpsrcdst 把文件src拷贝为dst
cpsrc1src2…dst 把文件拷贝到dst目录
scp…root@host:path 把文件拷贝到主机host的目录path下
scproot@host:pathdst. 把文件从主机host的目录path下拷贝到当前目录
chmoda+rxfoo 让所有用户有读取和执行foo文件的权限
chmodgo-rxfoo 取消同组和其他用户读取和执行foo的权限
chmod741foo 本人可读写执行,同组用户可读,其他用户可执行foo
touchfoo 改变foo文件的日期
ln-soldnew 为文件old建一个符号连接new
lnoldnew 为文件old创建硬链接new ===文件内容操作===
atfoo 显示文件foo的内容
morefoo 按屏幕一屏一屏显示foo的内容
head-n100foo 查看文件foo的前100行
tail-n100foo 查看文件foo的尾100行
tail-n+5foo 从第5行开始查看文件foo
cmpfoobar 比较两文件是否相同
diff-ufoobar 对比文件foo和bar
sortfoo 按字母排序文件foo
sort-nfoo 按数字排序文件foo
sortfoo|uniq-c 统计文件foo中每行出现了多少次
fgrepxxxfiles 在文件中检索字符串xxx
wc-lfoo 统计文件foo中的行数
wc-wfoo 统计文件foo中的单词数
wc-cfoo 统计文件foo中的字符数 ===查看帮助===
manbash 查看bashshell的内部命令,按q退出
infocoreutils 查看最常用的那些命令,按q退出
manls 查看命令ls的帮助
man-aprintf 查看printf的所有帮助,按q切换到下一个帮助。像printf这样同时出现在shell/c/perl等多个环境中的命令会有多个帮助。
man-Kprintf 在所有的帮助文件中搜索printf
在man手册中
bf 向前/向后翻页
/xxx 关键词查找
q 退出手册
===简单管理===
ps aux PID和COMMAND两列
top 实时显示当前系统负载和最活跃的进程。 按1显示多cpu详情,按shift-m显示内存最多的进程
按u查看某用户的进程
kill 1234 杀死PID为1234的进程(信号为TERM)
kill -91234 强行杀死PID为1234的进程(信号为KILL)
kill-l 查看所有信号的含义和编号
netstat –anp 列出当前所有的tcp/udp连接以及相关的进程 ===打包===
一般用tar打包,包有.tar.gz(.tgz)以及.tar.bz2两种格式
tar cvzfa.tar.gzfoo 把foo下的所有文件打包成a.tar.gz
tar xvzfa.tar.gz 把a.tar.gz解包到当前目录
tar xvjfa.tar.bz2 把a.tar.bz2解包到当前目录
如何使用VIM编辑文件
首先,正确的设置vim环境会使用更加舒服,执行以下命令设置环境:
echo-e"setnocp\nsyntaxon\nsetts=4\nsetsw=4\nsetsi\n">>~/.vimrc
vim foo 启动vim,并编辑文件foo
vim和Windwos的编辑器不一样,它有2种模式:命令模式和编辑模式。刚启动vim时处于命令模式,此时可以移动光标和发布命令。常用命令:
i r o 进入编辑模式
离开编辑模式
:q :q! 退出/强制退出
:w :w! 存盘/强制存盘
:wq :wq! 存盘退出/强制存盘退出
:setnumber 显示行号
:setnonumber 隐藏行号
hjkl 向左/下/上/右移动一行
wb 移动到下一个/上一个单词的开头
^或0$ 移动到行首/行末
nG:n 移动到第n行
? / 向前/向后查找文本
gg G 移动到文件头/文件尾
xdwdd 删除当前字符/单词/行
rcwcc 替换当前字符/单词/行
ylywyy 复制当前字符/单词/行
v V 开始选择文本/开始按行选择文本
y 将v/V选中的文本放入剪贴板
p 粘贴剪贴版的内容
:7,9move$ 将第7~9行移到行尾
J 将下一行拼到当前行尾
:%s/old/new/g 全文替换old为new
. 重复执行上一次的命令
u 撤销上一次的命令
如果有maketags的话,查找当前标识符的定义
Shell进阶
===egrep正则表达式检索===
egreppatternfiles 在文件中检索pattern,显示匹配的行
pattern由若干atom组成,atom定义如下
. 匹配任意字符
[abc] 匹配abc三个字母任何一个
[^abc] 匹配除abc三个字母以外的任何字符
[a-h] 匹配abcdefgh中的任何一个
? ?前一个atom匹配0~1次
+ +前一个atom匹配至少1次
前一个atom匹配任意次
| 匹配两个atom中的任何一个
(…) 用"("和")"把多个atom编成一组
\ 转义符,例如"\."精确匹配".","\t"匹配tab字符
^ 表示一行的开始
$ 表示一行的结束
其他普通字符都是atom
例子:
([a-z]+\.)+[a-z]+ 匹配任何纯由小写字母组成的域名
egrep常用参数
-o 显示匹配上pattern的串
-v 显示没有匹配pattern的那些行
-n 显示行号 ===输入输出重定向和管道===
一般情况下程序从键盘读取用户输入,输出到显示器。我们可以通过"<"">""|"操作符来改变这种行为。
ls>file 把ls的结果存到文件file,file原有的内容被销毁i
ls>>file 把ls的结果存到文件file原有内容的尾部
catf1f2f3>file 把f1、f2、f3组合成一个文件file
who|wc-l 统计用户数
ls-xxx&>file 把ls的错误信息和正常输出都存到文件file
foo ls|sort 把ls的结果做为sort的输入
ls2>&1|sort 把ls的结果和出错信息一起做为sort的输入
ls|teefile 利用tee命令把ls的结果存到文件file并同时显示在荧幕上。 ===后台任务===
在程序运行的过程中,按ctrl-z可以把程序切换到后台挂起,此时程序暂停执行。
启动程序的时候,在命令行的最后加"&",可以让程序直接在后台执行
grepxxxfile>yyy& 在后台执行grep命令
jobs 显示当前后台有哪些程序
fg9 把第9号后台程序切换到前台
bg9 让第9号后台程序恢复执行(用于ctrl-z挂起的程序)
|
|