csdn汇总
文件的操作命令(增删改查)
-
touch 文件名称: 文件的创建(增)
-
cat/more/less/tail 文件名称 文件的查看(查)
-
cat: 查看显示文件内容
- more: 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看
- less: 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看
-
tail-10 : 查看文件的后10行,Ctrl+C结束 ####注意:命令 tail -f 文件 可以对某个文件进行动态监控,例如tomcat的日志文件, 会随着程序的运行,日志会变化,可以使用tail -f catalina-2016-11-11.log 监控 文 件的变化(这里可以实现动态观察日志文件的作用)
- vim 文件: 修改文件的内容(改)
vim编辑器是Linux中的强大组件,是vi编辑器的加强版,vim编辑器的命令和快捷方式有很多,但此处不一一阐述,大家也无需研究的很透彻,使用vim编辑修改文件的方式基本会使用就可以了。
在实际开发中,使用vim编辑器主要作用就是修改配置文件,下面是一般步骤:
vim 文件——>进入文件—–>命令模式——>按i进入编辑模式—–>编辑文件 ——->按Esc进入底行模式—–>输入:wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存。)
- rm -rf 文件: 删除文件(删)
同目录删除:熟记 rm -rf 文件 即可
shell几个特殊字符用来处理参数:
参数处理 | 说明 |
:——- | ———————————: |
$# | 传递到脚本的参数个数 |
$* | 以一个单字符串显示所有向脚本传递的参数。 |
如”$*“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。 | |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程的ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。 | |
$? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |
$- | 显示Shell使用的当前选项,与set命令功能相同。 |
进程前后台切换
和前端有交互的不能放后台,否则就暂停不能执行。
- ⑴把进程放后台的方法
- 命令 &
- 按下ctrl+z快捷键,放在后台暂停
- ⑵jobs-l 查看后台工作
- ⑶fg %工作号 将后台暂停的工作恢复到前台执行
- ⑷bg %工作号 将后台暂停的工作恢复到后台执行
- ⑸后台命令脱离终端的方法
- 加入到/etc/rc.local文件
- 使用nohup
解压缩
.tar.gz结尾的 压缩 tar -zcvf 打包文件名(可以加绝对路径) 被打包的文件 解压缩 tar -zxvf tar -zxvf 解压缩文件 -C 目标位置 .tar.bz2结尾的 压缩 tar -jcvf 打包文件名(可以加绝对路径) 被打包的文件 解压缩 tar -jxvf tar -jxvf 解压缩文件 -C 目标位置
Linux 系统中查看 inode 号可使用命令 stat 或 ls -i
|stat /home/harris/source/glibc-2.16.0.tar.xz File: `/home/harris/source/glibc-2.16.0.tar.xz’ Size: 9990512 Blocks: 19520 IO Block: 4096 regular file Device: 807h/2055d Inode: 2485677 Links: 1 Access: (0600/-rw——-) Uid: ( 1000/ harris) Gid: ( 1000/ harris) … … |# mv /home/harris/source/glibc-2.16.0.tar.xz /home/harris/Desktop/glibc.tar.xz |# ls -i -F /home/harris/Desktop/glibc.tar.xz 2485677 /home/harris/Desktop/glibc.tar.xz
硬链接和软链接
若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名
link oldfile newfile ln oldfile newfile
由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:
- 文件有相同的 inode 及 data block;
- 只能对已存在的文件进行创建;
- 不能交叉文件系统进行硬链接的创建(因为不同文件系统可能含有相同 inode号的不同文件);
- 不能对目录进行创建,只可对文件创建;
- 删除一个硬链接文件并不影响其他有相同 inode 号的文件。
硬链接不能对目录创建是受限于文件系统的设计(见 清单 4.对目录创建硬 链接将失败)。现 Linux 文件系统中的目录均隐藏了两个个特殊的目录: 当前目录(.)与父目录(..)。查看这两个特殊目录的 inode 号可知其实 这两目录就是两个硬链接(注意目录 /mnt/lost+found/ 的 inode 号)。若系统允许对目录创建硬链接,则会产生目录环。
软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块(见 图 2.)。因此软链接的创建与使用没有类似硬链接的诸多限制:
- 软链接有自己的文件属性及权限等;
- 可对不存在的文件或目录创建软链接;
- 软链接可交叉文件系统;
- 软链接可对文件或目录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
使用命令 find 查找软链接与硬链接
// 查找在路径 /home 下的文件 data.txt 的软链接
# find /home -lname data.txt
/home/harris/debug/test2/a
// 查看路径 /home 有相同 inode 的所有硬链接
# find /home -samefile /home/harris/debug/test3/old.file
/home/harris/debug/test3/hard.link
/home/harris/debug/test3/old.file
# find /home -inum 660650
/home/harris/debug/test3/hard.link
/home/harris/debug/test3/old.file
// 列出路径 /home/harris/debug/ 下的所有软链接文件
# find /home/harris/debug/ -type l -ls
656662 0 lrwxrwxrwx 1 harris harris 1 Sep 1 14:37 /home/harris/debug/test2/b -> a
656627 0 lrwxrwxrwx 1 harris harris 8 Sep 1 14:37 /home/harris/debug/test2/a ->
data.txt
789467 0 lrwxrwxrwx 1 root root 8 Sep 1 18:00 /home/harris/debug/test/soft.link ->
old.file
789496 0 lrwxrwxrwx 1 root root 7 Sep 1 18:01
/home/harris/debug/test/soft.link.dir -> old.dir
Linux查看日志命令
- 第一种:查看实时变化的日志(比较吃内存)
最常用的:
tail -f filename (默认最后10行,相当于增加参数 -n 10)
Ctrl+c 是退出tail命令
其他情况:
tail -n 20 filename (显示filename最后20行)
tail -n +5 filename (从第5行开始显示文件)
- 第二种:搜索关键字附近的日志
最常用的:
cat -n filename |grep "关键字"
其他情况:
cat filename | grep -C 5 '关键字' (显示日志里匹配字串那行以及前后5行)
cat filename | grep -B 5 '关键字' (显示匹配字串及前5行)
cat filename | grep -A 5 '关键字' (显示匹配字串及后5行)
-
第三种:进入编辑查找:vi(vim)
- 1、进入vim编辑模式:vim filename
- 2、输入“/关键字”,按enter键查找
- 3、查找下一个,按“n”即可
退出:按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令
wq! 保存退出;
q! 不保存退出;
其他情况:
/关键字 注:正向查找,按n键把光标移动到下一个符合条件的地方
?关键字 注:反向查找,按shift+n 键,把光标移动到下一个符合条件的
vim相关
:set nu 设置行号
:set nonu 取消行号
?/a/b/g 替换当前行所有 a 为 b
dd 删除所在行
/string 搜索指定字符串(不需要独立成一个完整单词),忽略大小写 :set ic 找下一个出现位置 n
:w 保存修改
:wq 保存退出
q!不保存退出
:wq!保存修改退出(文件所有者和root用户)
在VIM中进行文本替换:
1. 替换当前行中的内容: :s/from/to/ (s即substitude)
:s/from/to/ : 将当前行中的第一个from,替换成to。如果当前行含有多个
from,则只会替换其中的第一个。
:s/from/to/g : 将当前行中的所有from都替换成to。
:s/from/to/gc : 将当前行中的所有from都替换成to,但是每一次替换之前都
会询问请求用户确认此操作。
注意:这里的from和to都可以是任何字符串,其中from还可以是正则表达式。
2. 替换某一行的内容: :33s/from/to/g
:.s/from/to/g : 在当前行进行替换操作。
:33s/from/to/g : 在第33行进行替换操作。
:$s/from/to/g : 在最后一行进行替换操作。
3. 替换某些行的内容: :10,20s/from/to/g
:10,20s/from/to/g : 对第10行到第20行的内容进行替换。
:1,$s/from/to/g : 对第一行到最后一行的内容进行替换(即全部文本)。
:1,.s/from/to/g : 对第一行到当前行的内容进行替换。
:.,$s/from/to/g : 对当前行到最后一行的内容进行替换。
:'a,'bs/from/to/g : 对标记a和b之间的行(含a和b所在的行)进行替换。
其中a和b是之前用m命令所做的标记。
4. 替换所有行的内容: :%s/from/to/g
:%s/from/to/g : 对所有行的内容进行替换。
5. 替换命令的完整形式: :[range]s/from/to/[flags]
5.1 s/from/to/
把from指定的字符串替换成to指定的字符串,from可以是正则表达式。
tail显示后几行
- -f 循环读取
- -n 显示行数 不加-n默认是显示后10行 行数>
tail -n 1000:显示最后1000行 tail -n +1000:从1000行开始显示,显示1000行以后的
kill 杀死进程
- kill -1 进程号 重启进程
- kill -9 进程号 强制杀死进程
- kill -15 进程号 默认的,正常结束进程,如果发生问题,就会尝试kill -9
grep
把匹 配的行打印出来
-
-i 不区分大小写
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -i 'line2' grep.txt grep line2 grep LINE2
-
-c统计匹配到的次数
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -c 'line1' grep.txt
-
-n显示行号
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -n 'line1' grep.txt 1:grep line1 6:grep line1
-
-v查找不包含指定内容的行
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~$ grep -v 'line1' grep.txt
-
-r逐层遍历目录查找
grep -r 字符串 文件名 -A -B -C 后多少行,前多少行,前后多少行 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -A1 'line2' grep.txt mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -B1 'line2' grep.txt mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -C1 'line2' grep.txt
-
-w 精确匹配单词
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -w 'line1' grep.txt grep line1 grep line1 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep 'line1' grep.txt grep line1 grep line1 grep line1line
-
-e 与/或
mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ cat grep.txt grep line1 grep LINE2 grep line1line // 与 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\+line' grep.txt grep line1line // 或 mobvoi@mobvoi-Battle-Axe-C-B150M-HD:~/grep$ grep -e 'line1\|line2' grep.txt grep line1 grep line1line
-
找到以grep开头的行
grep$ grep '^grep' grep.txt
-
找到以line1结尾的行
grep 'line1$' grep.txt
-
找到空行
grep '^$' grep.txt
-
将grep的输出到指定文件
grep 'line1$' grep.txt > heidou.txt