命令使用求助[1]
命令名 --help
查看命令的使用方法。
如:date --help
管道操作[2]
-|
管道,配合其他命令使用。将上一条命令的输出作为下一条命令的输入。
如:ps -ef | grep java
信息分析处理[3]
#awk #sed #grep #wc #echo #cut #sort
- awk:文本分析工具。awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。
- 行工作模式,读入文件的每一行,会把一行的内容,存到$0里
- 使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100)
- 输出的时候按照内置变量OFS(out FS),输出
- 读入下一行继续操作
语法:awk ‘匹配模式+行为’ filename
示例:
provins=($(awk '{print $2}' provinsInfo.txt))
将文本provinsInfo.txt中每行按空格分隔后的第2个(从1开始)。字符串放入数组provins中。
echo "String:number" | awk -F':' ‘{print $2}’
将字符串"String:number"按‘:’进行分隔,并取第2部分。
- sed:文本处理工具,配合不同的参数执行删除、修改、获取等操作。
语法:sed -参数 '行为'
示例:
sed -i ‘/linux/d’ log.txt
直接在log.txt文件中删除包含linux的行
sed ‘$d’ log.txt
删除log.txt文件的最后一行
sed -n ‘3p’ log.txt
打印log.txt文件中的第3行
-
grep:文本的条件筛选工具
语法:cat filename | grep '筛选条件'
示例:
cat xferlog | grep ‘20170915’
筛选出文件xferlog中包含字符‘20170915’的记录(行)。
grep -v
筛选出不包含筛选条件的记录(行)。
grep -c
输出匹配行的条数
grep -n
输出匹配行所在的行号
cat xferlog | egrep ‘20170915|20170916’
筛选出文件xferlog中包含字符‘20170915’或‘20170916’的记录(行)。 -
wc:文本信息统计工具
语法:wc filename
-l:列出文本行数
-w:列出文本字数(英文单字)
-m:列出字符数
示例:
wc -l config.txt
显示config文件的行数。(其他写法:grep -n “” 文件名)
wc config.txt
显示结果为:n1 n2 n3 config.txt n1为文本行数,n2为文本字数,n3为文本字符数 -
echo:文本打印或控制台输出
语法: echo XXX
示例:
echo “${username}=vike”
在控制台打印。
echo -n "first line"
不打印换行符,后续内容将与“first line”同行显示
- cut:按条件截取字符串
语法:cat filename | cut -b n-m
截取文件的第n-m行字符
echo String | cut -d '分隔符' n
根据自定义分隔符截取第n段
示例:
cat config.txt | cut -b 2-8
截取config.txt文件中的2-8行。
echo config | cut -b 3
截取config字符串的第三个字符。
- sort:将文本内容按ASCII码值进行排序,升序打印。
语法:sort filename
示例:
sort config.txt
以文件的各行为单位,按ASCII码排序打印输出,原文本未做修改。
系统信息查询[4]
#du (disk usage) #df #stat
作用:显示目录(或文件)所占磁盘空间的大小。
示例:
du -ah --max-depth=1
查看目录下的所有文件的大小,以K、M、G的单位显示。
-a 表示目录中每个文件显示各自磁盘使用情况
-h 以K,M,G为单位,提高信息的可读性。
--max-depth=n 表示只深入到第n层目录,此处设置为1,即表示只深入到第一层子目录
df -h
显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。
stat -c 格式代码 文件名
获取关于文件的额外信息,包括文件系统和文件。
用户及权限操作[5]
#chmod #chown #passwd
- chmod:修改文件(夹)权限
语法:chmod mode file
其中mode是指:owner+[rwx]
owner: u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
此外mode也可以是数字:r=4,w=2,x=1。
示例:
chmod ugo+r file.txt
将文件 file.txt 设为所有人添加读取的权限。
chmod 777 file.txt
将文件file.txt 设为所有人皆可读可写可执行。
- chown:修改文件(夹)所属的用户或用户组
语法:chown own:group file
其中own指文件所属用户,group指文件所属的群组
示例:
chown root: file.txt
改变文件file.txt的拥有者和群组
chown :aiusr file.txt
改变文件file.txt的组群
- passwd:修改系统用户的密码
语法:passwd username
回车后再依次输入旧密码和两遍新密码即可修改完成
(先登录root,获得root权限) passwd aiusr :修改用户aiusr的密码。
文件操作[6]
#mkdir #cd #cp #scp #mv #rm #touch #cat #head #tail #vi
- mkdir:创建文件夹
语法:mkdir [mode] dirname
示例:
mkdir 760 data
创建名为data的文件夹,权限为创建者可读可写可执行,同组的可读可写,普通用户无任何权限。
- cd:进入某个路径下的文件夹
语法: cd filepath
示例:
cd /home/data
进入目录/home/data
- cp:复制文件
语法:cp filepath1/filename1 filepath2/filename2
示例:
cp /home/data/1.txt /home/data/backup/2.txt
复制/home/data/目录下的文件1.txt到目录/home/data/backup/下,命名为2.txt。
- scp:复制文件至远程服务器
语法:scp filepath1/filename1 remote_username@remote_ip:filepath2/filename2
示例:
scp home/vike/data/1.txt universal@192.168.1.246:/home/zw/data/1.txt
复制当前主机下/home/data/目录下的文件1.txt到远程主机universal(ip:192.168.1.246)的/home/zw/data/目录下。
- mv:移动文件(重命名文件)
语法:mv filepath1/filename1 filepath2/filename2
示例:
mv /home/data/1.txt /home/data/backup/2.txt
移动/home/data/目录下的文件1.txt到目录/home/data/backup/下,命名为2.txt。
mv /home/data/1.txt /home/data/2.txt
将/home/data/目录下的文件1.txt重命名为2.txt。
- rm:删除文件
语法:rm filepath/filename
示例:
rm /home/data/1.txt
删除/home/data/目录下的文件1.txt
-f 强制删除文件或者文件夹,不提示
-r 递归处理,将目录下的文件及其子文件夹全部删除
-i 删除文件或目录前先询问用户(输入y或n后再进行操作)
- touch:创建文件
语法:touch filepath/filename
示例:
touch /home/data/2.txt
在/home/data/目录下创建文件2.txt
- cat:打开文件
语法:cat filepath/filename
示例:
cat /home/data/1.txt
打开/home/data/目录下的文件1.txt
cat -n filename
打开文件,并显示行号。
- head,tail:查看文件前/后n行(不填写参数时默认显示10行)
语法:head [-n] filepath/filename
;
tail [-n] filepath/filename
示例:
head /home/data/1.txt
打印/home/data/目录下文件1.txt的前10行
tail -50 /home/data/1.txt
打印/home/data/目录下文件1.txt的后50行
- vi,vim:编辑文件(打开文件后--i(输入),:q!(退出),:wq(保存退出))
语法:vi filepath/filename
示例:
vi /home/data/1.txt
编辑/home/data/目录下的文件1.txt
搜索[7]
#find #locate #whereis
进程[8]
-
ps -ef
查看进程 -
crontab -l
查看当前定时任务 -
crontab -e
编辑当前定时任务
crontab格式
分 | 时 | 日 | 月 | 周 | 命令行 |
---|
* :所有取值 / :每 X-Y:从X连续到Y X,Y:离散的X和Y
停止运行[9]
- 筛选出需要的脚本,获取进程ID
ps -ef | grep '脚本名'
- 强行终止脚本
kill -9 进程ID
其他[10]
整数比较:
-eq 等于,如:if [ "b" ]
-ne 不等于,如:if [ "b" ]
-gt 大于,如:if [ "b" ]
-ge 大于等于,如:if [ "b" ]
-lt 小于,如:if [ "b" ]
-le 小于等于,如:if [ "b" ]
< 小于(需要双括号),如:(("b"))
<= 小于等于(需要双括号),如:(("b"))
> 大于(需要双括号),如:(("b"))
>= 大于等于(需要双括号),如:(("b"))
字符串比较:
= 等于,如:if [ "b" ]
== 等于,如:if [ "b" ], 与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ a以"z"开头(模式匹配)那么将为true
2 [[ a等于z(字符匹配),那么结果为true
3 [ a" == "z" ] # 如果$a等于z*(字符匹配),那么结果为true
!= 不等于,如:if [ "b" ], 这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "b" ]]
if [ "b" ] 在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "b" ]]
if [ "b" ] 在[]结构中">"需要被转义.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
- 字符串截取切割(参考:http://www.jb51.net/article/56563.htm)
假设有变量 var=http://www.aaa.com/123.htm.
- # 号截取,删除左边字符,保留右边字符。
echo ${var#*//}
其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符
即删除 http://,结果是 :www.aaa.com/123.htm
- ## 号截取,删除左边字符,保留右边字符。
echo ${var##*/}
##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
即删除 http://www.aaa.com/,结果是 123.htm
- %号截取,删除右边字符,保留左边字符
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符
- %% 号截取,删除右边字符,保留左边字符
echo ${var%%/*}
%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
结果是:http:
- 从左边第几个字符开始,及字符的个数
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数。
结果是:http:
- 从左边第几个字符开始,一直到结束。
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束。
结果是 :www.aaa.com/123.htm
- 从右边第几个字符开始,及字符的个数
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。
结果是:123
- 从右边第几个字符开始,一直到结束。
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:123.htm
注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)
网友评论