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开始)进行排序。 |
下面的例子通过管道将 ls、grep和 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) 按下等号=,格式化所有代码。