shell一些常用命令及例子

1.   判断文件是否存在

test -e/dataa || echo "不存在"

2.   杀进程

$pkill -9firefox

等于 kill-s 9 `pgrep firefox`

等于 $ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9

说明:

“grep firefox”的输出结果是,所有含有关键字“firefox”的进程。

“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID

“xargs kill -s9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。

3.   查找文件并且做一些操作

find .-name 'read*' -mtime +2 -exec echo {} \;#-ok为询问式执行

4.   查找某一目录下的含有‘ini’字段的行

find . -type f -print | xargs grep "ini"  #注用xagrs可以避免用exec传入参数过大溢出等问题。

5.   压缩:

a)     tar-cvf  /tmp/etc.tar  /home/usr2/file2   <==仅打包,不压缩!需要注意的是:使用绝对路径标识的源文件,在用tar命令压缩后,文件名连同绝对路径(这里是home/usr2/,根目录'/'被自动去掉了)一并被压缩进来

b)     tar-zcvf /tmp/etc.tar.gz /etc  -C /home/usr2 file2  <==打包后,以 gzip 压缩,大写C指定压缩或解压后存放的目录

c)     tar-jcvf /tmp/etc.tar.bz2 /etc  <==打包后,以 bzip2 压缩

d)     tar-ztvf /tmp/etc.tar.gz   <==查阅该tar file 内的文件时

e)     tar-zxvf /tmp/etc.tar.gz etc/passwd <==只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已,根目录 / 是被拿掉了

f)      tar--exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

<== 备份/home, /etc ,但不要 /home/dmtsai

6.     Grep

grep 命令有很多选项:

选项

说明

-v

反转查询,输出不匹配的行。例如,grep -v "test" demo.txt将输出不包含"test"的行。

-n

输出匹配的行以及行号。

-l

输出匹配的行所在的文件名。

-c

输出匹配的总行数。

-i

不区分大小写进行匹配。

 

grep -i pattern files:不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files
:只列出匹配的文件名,
grep -L pattern files
:列出不匹配的文件名,
grep -w pattern files
:只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files
:匹配的上下文分别显示[number]行,
grep pattern1 | pattern2 files
:显示匹配 pattern1 pattern2 的行,
grep pattern1 files | grep pattern2
:显示既匹配 pattern1又匹配 pattern2的行。

 

明确要求搜索子目录:grep -r
或忽略子目录:grep -d skip

 

\< \> 分别标注单词的开始与结尾。

'^':指匹配的字符串在行首,
'$'
:指匹配的字符串在行尾,

 

7.        sort命令

通过下面的选项可以控制排序规则:

选项

描述

-n

按照数字大小排序,例如,10会排在2后面;-n选项会忽略空格或 tab缩进。

-r

降序排序。sort默认是升序排序。

-f

不区分大小写。

+x

对第x列(从0开始)进行排序。


下面的例子通过管道将 lsgrep sort命令连起来使用,过滤包含“Aug”的行,并按照文件大小排序:

$ls -l | grep "Aug" | sort +4n

 

8.        pg和more命令

如果文件内容过多,全部显示会很乱,可以使用 pg 和 more 命令分页显示,每次只显示一屏。

一次只显示一屏文本,显示满后,停下来,并提示已显示全部内容的百分比,按空格键(space)可以查看下一屏,按 b 键可以查看上一屏。

 

9.            ps

描述

UID

进程所属用户的ID,即哪个用户创建了该进程。

PID

进程ID

PPID

父进程ID,创建该进程的进程称为父进程。

C

CPU使用率。

STIME

进程被创建的时间。

TTY

与进程有关的终端类型。

TIME

进程所使用的CPU时间。

CMD

创建该进程的命令。

 

10.   VI移动光标

 

11.  vi删除字符

下面的命令,可以删除文件中的字符或行:

命令

说明

x

删除当前光标下的字符

X

删除光标前面的字符

dw

删除从当前光标到单词结尾的字符

d^

删除从当前光标到行首的字符

d$

删除从当前光标到行尾的字符

D

删除从当前光标到行尾的字符

dd

删除当前光标所在的行

 

 

12.vi高级命令

下面的一些命令虽然看起来有些古怪,但是会让你的工作更有效率,如果你是 vi重度用户,就了解一下吧。

命令

说明

J

将当前行和下一行连接为一行

<< 

将当前行左移一个单位(一个缩进宽度)

>> 

将当前行右移一个单位(一个缩进宽度)

~

改变当前字符的大小写

^G

Ctrl+G组合键可以显示当前文件名和状态

U

撤销对当前行所做的修改

u

撤销上次操作,再次按 'u' 恢复该次操作

:f

以百分号(%)的形式显示当前光标在文件中的位置、文件名和文件的总行数

:f filename

将文件重命名为 filename

:w filename

保存修改到 filename

:e filename

打开另一个文件名为 filename的文件

:cd dirname

改变当前工作目录到 dirname

:e #

在两个打开的文件之间进行切换

:n

如果用 vi 打开了多个文件,可以使用 :n切换到下一个文件

:p

如果用 vi 打开了多个文件,可以使用 :n切换到上一个文件

:N

如果用 vi 打开了多个文件,可以使用 :n切换到上一个文件

:r file

读取文件并在当前行的后边插入

:nr file

读取文件并在第 n 行后边插入

格式化代码

(1) 按两下小写g,即gg,定位光标到第一行。

(2) 按住Shift+v,即大写V,进入可视化编辑的列编辑模式。

(3) Shift+g,即大写G,选中整个代码。

(4) 按下等号=,格式化所有代码。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值