文件管理
1.mkdir
创建文件夹,已有文件夹不会重复创建,同时创建多个文件夹时,空格作间隔符
用法:mkdir [options] dirPath1 dirPath2 …
-p 递归创建目录
-v 显示目录创建过程
-m 创建目录时设置目录权限
-z 创建的目录加上SELinux安全上下文
2.rm
删除文件,删除文件夹、目录时需要使用参数-r,同时删除多个文件夹时,空格作间隔符
用法:rm [options] filePath1 filePath2 …
-r 递归删除目录
-v 显示目录删除过程
-i 进行交互式删除
-f 强制删除
3.chmod
控制用户对文件的权限的命令
用法:chmod [cfvR] mode filePath1 filePath2 …
chmod 777 file == chmod ugo+rwx file
-c: 若该文件权限确实已经更改,才显示其更改动作
-f: 若该文件权限无法被更改也不要显示错误讯息
-v: 显示权限变更的详细资料
-R: 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更)
mode: 权限设定字串,格式:[ugoa...][[+-=][rwxX]...][,...]
u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。+表示增加权限、-表示取消权限、=表示唯一设定权限。r表示可读取,w表示可写入,x表示可执行,X表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
4.chown
用于设置文件所有者和文件关联组,将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID,组可以是组名或者组ID,文件是以空格分开的要改变权限的文件列表,支持通配符。
用法:chown [-cfhvR] user[:group] filePath1 filePath2 …
user: 新的文件拥有者的使用者 ID
group: 新的文件拥有者的使用者组(group)
-c: 显示更改的部分的信息
-f: 忽略错误信息
-h:修复符号链接
-v: 显示详细的处理信息
-R: 处理指定目录以及其子目录下的所有文件
5.chgrp
用于变更文件或目录的所属群组,与 chown 命令不同,chgrp允许普通用户改变文件所属的组,只要该用户是该组的一员
用法:chgrp [-cfhRv] [所属群组] [文件或目录...]
或 chgrp [-cfhRv] [--reference=<参考文件或目录>] [文件或目录...]
-c或 --changes:效果类似"-v"参数,但仅回报更改的部分。
-f或 --quiet或 --silent: 不显示错误信息。
-h或 --no-dereference: 只对符号连接的文件作修改,而不改动其他任何相关文件。
-R或 --recursive: 递归处理,将指定目录下的所有文件及子目录一并处理。
-v或 --verbose: 显示指令执行过程。
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同。
网络管理
1.ping
ping命令用于检测主机。执行 ping指令会使用 ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
用法:ping[-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]
-d使用Socket的SO_DEBUG功能。
-c<完成次数>设置完成要求回应的次数。
-f极限检测。
-i<间隔秒数>指定收发信息的间隔时间。
-I<网络界面>使用指定的网络接口送出数据包。
-l<前置载入>设置在送出要求信息之前,先行发出的数据包。
-n只输出数值。
-p<范本样式>设置填满数据包的范本样式。
-q不显示指令执行过程,开头和结尾的相关信息除外。
-r忽略普通的Routing Table,直接将数据包送到远端主机上。
-R记录路由过程。
-s<数据包大小>设置数据包的大小。
-t<存活数值>设置存活数值TTL的大小。
-w<deadline> 在 deadline秒后退出。
-W<timeout> 在等待 timeout秒后开始执行。
2.network
主要用于检查服务接口是否正常
用法:network ip port
3.curl
curl用于网络请求
用法:curl [options] url
-i 获取目标网址的文本信息以及协议头部信息: curl –i url
-I 仅返回请求头部信息: curl -I curl
-x 使用代理获取网页文本信息:curl -x proxy url
-X 指定curl请求方式,默认为GET请求
-d 使用post请求(等效于-X post):curl -d ‘d=d’-d ‘s=s’url
-b 带cookie访问网站:curl -b ‘ccokie1=1’ -b ‘cookie2=2’url
or curl -b cookie.txt url
-c 把网站返回的cookie写入指定文件:curl -c cookies.txt url
-H 设置header:curl -H 'Accept-Language: en-US' -H 'Accept: *' url
-u 用来设置服务器认证的用户名和密码:curl -u ‘test:12345' url
-f 上传二进制文件:curl -F 'file=@test.png' url
-C switch是恢复我们文件传输的设备,但还要注意,它后面紧跟一个破折号(-)。这告诉cURL继续文件传输,但是实现这一步,首先要查看已经下载的部分,找到下载的最后一个字节才可以确定从何处可以恢复:
curl -C - download.zip --output my.zip
-L 跟随目标网站自动重定向:curl –L url
-o 把response保存成文件,等同于wget命令:curl –o filename url
-O 把response保存成文件,将 URL 的最后部分当作文件名
如:curl -O http://www.fo.com/111.html 存储文件名为111.html
-s 不输出错误和进度信息
-S 指定只输出错误信息,通常与-o一起使用
4.查看ip信息
1).ifconfig
ifconfig是一个网络管理工具,它用于配置和查看 Linux操作系统中网络接口的状态,使用ifconfig,您可以分配 IP地址、启用或禁用接口、管理 ARP缓存、路由等。非持久,重启后恢复。
2).ip addr
查看本地IP地址
5.查看端口信息
1).netstat
提供有关网络连接的信息。
用法:netstat
-tunlp
-t 显示 TCP 端口。
-u 显示 UDP 端口。
-n 显示数字地址而不是主机名。
-l 仅显示侦听端口。
-p 显示进程的 PID 和名称
2).ss
ss是新的 netstat,命令选项大致相同。它缺少一些 netstat功能,但暴露了更多的 TCP状态,而且速度稍快
用法:ss -tunlp
3).lsof
lsof 是一个功能强大的命令行实用程序,它提供有关进程打开的文件的信息。
在Linux 中,一切都是文件,可以将套接字视为写入网络的文件。要使用lsof 获取所有侦听 TCP 端口的列表:lsof -nP -iTCP -sTCP:LISTEN使用的选项如下:-n – 不要将端口号转换为端口名称。-p – 不要解析主机名,显示数字地址。-iTCP -sTCP:LISTEN – 仅显示 TCP 协议状态为 LISTEN 的网络文件。
常规命令
1.df
用于显示目前在Linux 系统上的文件系统磁盘使用情况统计
用法:df [options] path
2.du
会显示指定的目录或文件所占用的磁盘空间.
用法:du [options] path
3.ncdu
ncdu 是一个带有 ncurses 接口的磁盘使用分析器。它旨在在您没有完整图形设置可用的远程服务器上查找空间占用,但即使在常规桌面系统上它也是一个有用的工具。
用法:ncdu path
4.vi/vim
文本编辑器。存在3种模式:命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)
5.tail
把文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要filename 更新就可以看到最新的文件内容,默认显示10行。
6.cat
命令用于连接文件并打印到标准输出设备上
用法:cat [-AbeEnstTuv] filename
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
7.less/more
more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)
less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页,不用加载整个文件,比more更快。
8.find
find 命令用于在指定目录下查找文件和目录
find [path] [expression]
-name pattern:按文件名查找,支持使用通配符 * 和 ?。
-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。
-size [+-]size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。
-mtime days:按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。
-user username:按文件所有者查找。
-group groupname:按文件所属组查找。
-amin n:查找在 n 分钟内被访问过的文件。
-atime n:查找在 n*24 小时内被访问过的文件。
-cmin n:查找在 n 分钟内状态发生变化的文件(例如权限)。
-ctime n:查找在 n*24 小时内状态发生变化的文件(例如权限)。
-mmin n:查找在 n 分钟内被修改过的文件。
-mtime n:查找在 n*24 小时内被修改过的文件。
9.whereis
用于查找文件。该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。
whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]
-b 只查找二进制文件。
-B <目录>只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M <目录>只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S <目录>只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
10.创建链接 ln
命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
软连接和硬链接的区别:
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
软连接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
查看软连接:
1). ls –l filename
ls显示一个软链接文件的绝对路径
2). readlink -f filename
readlink可以显示软链接文件的实际路径
3). stat filename
stat的命令可以查看软链接文件的一系列详细的文件属性,如文件类型、模式和软链接文件绝对路径等
11. history
查看历史命令
用法:
history-c 清空当前历史记录(只是清空缓存中的历史记录,伪删除)
history n n为数字,获取最近的n条历史记录
history-d n 删除某行历史记录(这样可以有针对性的保留历史记录)
!! 执行最后一条history命令
!n n为数字,执行n序号的命令
12.cut
cut命令用于显示每行从开头算起 num1 到 num2 的文字
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除
实例:ps -ef | grep StartChrome | grep -v grep | cut -c 9-15 | xargs kill -9
13.xargs
给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数。
-a file 从文件中读入作为 stdin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
xargs实例:
默认,多行输出变单行输出:echo -e 'a\nb' | xargs
-n,每行显示3个字符:echo -e 'a\nb\nc\nd' | xargs -n3
-d,自定义一个定界符:echo "nameXnameXnameXname" | xargs -dX
三剑客
1.grep
2.awk
一种处理文本文件的语言,是一个强大的文本分析工具
用法:awk [选项参数] 'script' var=value file(s)
或:awk [选项参数] -f scriptfile var=value file(s)
-F fs or --field-separator fs指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value 赋值一个用户定义变量。
-f scripfile or --file scriptfile 从脚本文件中读取awk命令。
-mf nnn and -mr nnn对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
基础用法:
ps -ef | awk '{print $1}' # 取第1列数据
ps -ef | awk '{print $1$2}' # 取第1,2列数据,无间隔符
ps -ef | awk '{print $1,$2}' # 取第1,2列数据,有默认间隔符
ps -ef | awk '{print $1+$2}' # 取第1,2列数据,并相加
ps -ef | awk '{print $1"+"$2}' # 取第1,2列数据,以+作间隔符
指定间隔符:
awk -F, '{print $1, $2}' awk_test.txt # 读取数据时以","作间隔符
awk -F'[ ,]' '{print $1, $2}' awk_test.txt # 读取数据时先以空格分割,再以","分割
设置变量:
awk -va=1 '{print $1, $1+a, $1a}' awk_test.txt # 设置变量a=1,打印第1列原始数据,和第1列数据+a结果,和第1列数据与a拼接结果
高级用法:
# 过滤,多个过滤条件以&&拼接,支持正则
awk -F, '$1>2 && $2>2 {print $1, $2}' awk_test.txt
#读取数据时以“,”作间隔符,输出第1,2列大于2的行,并打印第1,2列
内建变量(详细内建变量请查看教程):
awk '{print NR, NF, $1, $2}' awk_test.txt
# NR 已经读出的记录数,就是行号,从1开始
# NF 一条记录的字段的数目
关键词(BEGIN、END):
文件中使用:
BEGIN{ 这里面放的是执行前的语句 }
{这里面放的是处理每一行时要执行的语句}
END {这里面放的是处理完所有的行后要执行的语句 }
命令行使用:
awk'BEGIN{FS=","} {print $1,$2}'awk_test.txt #通过BEGIN和内建变量,设置分隔符为逗号
3.sed
sed 是一种流编辑器,它是文本处理中非常重要的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
用法:sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
动作说明:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(下一行)
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行
d :删除, d 后面通常不接任何内容
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(上一行)
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行
s :取代,可以直接进行取代的工作,通常这个 s 的动作可以搭配正则表达式
sed实例:
sed-e 2a\nnnsed_test.txt #在输出流中第2行后插入'nnn'
sed-i2a\nnnsed_test.txt #在源文件中第2行后插入'nnn'
sed -i 's/nnn/jjj/g' sed_test.txt #在源文件中把'nnn'替换为'ggg'
sed'3d' sed_test.txt #在源文件中删除第3行数据,d代表删除,$d代表最后一行
sed'2,5c No 2-5 number' sed_test.txt # c为替换,将2-5行的内容替换为'No 2-5 number'
sed'/^666/c this is new line!' sed_test.txt #正则匹配666开头的行替换为'No 2-5 number'
网友评论