Linux系统命令操作语法格式
命令 参数选项 文件或路径
rm -f /etc/hosts
可以创建文件的命令:touch cp tar echo cat > >>
Linux命令行就是一个bash会话,我们平时敲的所有linux命令都是由bash解释执行的。
1.mkdir(make directory)创建目录命令 –p连续(递归)创建目录
Eg:创建一个目录/data mkdir /data
(在根/下创建data目录) mkdir -p /data/king
创建/data/king目录 mkdir -p /data/king/a/b/c/d
创建/data/king/a/b/c/d目录
查看连续(递归)目录:
[root@king ~]# tree /data/ #如果出现乱码调整字符集LANG=en
/data/
└── king
└── a
└── b
└── c
└── d
5 directories, 0 files
注意:1.linux严格区分字母大小写
2.如果tree命令不存在,可以使用yum install tree –y安装
2.ls(list列表)列表查看命令 ll=ls -l
Eg:查看data文件夹 ls –ld /data
(列出根/目录data下目录和文件)
参数解释:-l表示(long长格式),-d(directorys)查看目录,-h显示具体大小(人类可读),-F给不同文件结尾加不同标识,-p给目录结尾加 / 斜线,-a(all)显示所有文件,包括隐藏,-r倒序(反转排序)排列,-t按修改时间排序,–color=auto显示颜色,
-i(inode)显示索引节点
3.cd命令 change directory 改变目录路径,切换目录
Eg:cd /etc
cd 常用特殊字符
cd .当前目录
cd ..上一级目录
cd -上一次所在目录
cd家目录
cd ~家目录
4.pwd print work directory 打印工作目录(显示当前所在路径)
5.touch 创建文件或更新文件时间戳,当文件名不存在则创建,存在则更新时间戳
6.vi编辑文档:执行 vi king.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying Linux.然后按键盘上的ESC键退出编辑模式进入命令模式,再敲:wq保存并退出。wq =write quit(写入并退出),若不写入则只输入:q,若强制退出则输入:q!
7.vim 高级编辑器 功能复杂,可以高亮自动缩进等,写shell和python用
8.echo命令
-n 输出在同一行,不换行
-e 可以加入转义字符控制输出格式(\t制表符 \n换行)
echo ‘I am studying Linux.’>/data/king.txt
1.如果没有king.txt会创建king.txt放入单引号里的内容。
2.如果有king.txt会清空已有的全部内容,放入单引号的内容。
echo ‘I am studying Linux.’>>/data/king.txt
这个在企业里很常用:单行内容追加到文件结尾。(>>是增加不是覆盖)
使用echo增加多行内容
echo ' 1111
2222
4444
3333'>>king.txt
echo是一个打印输出内容的命令,配合“>或>>”可以为文件覆盖及追加内容,“>”意思为重定向,会清除文件里所有以前数据,“>>”为内容追加,只要在文件尾部追加需要的内容。printf也是此类命令,但较复杂不常用。
9.cat -n 显示行号 -b显示非空行行号 -E显示$结尾符 -s多空行显示为一个空行
-T区别显示tab制表符和空格,制表符显示为“ ^ ” cat >test.txt
,按行输入完成后回车并按ctrl+c或ctrl+d即可。
cat多行追加:
cat >>/data/king.txt<<EOF
I am studying Linux.
EOF #前后内容相同成对,不能与写入字符重复以致冲突,一般使用EOF
cat test{1,2}.txt
显示test1.txt和test2.txt内容
扩展:tac 倒序显示,最后一行开始显示直到第一行结束。
rev反向显示,每行从行尾字符开始显示直到行首字符结束。
10.xargs 从标准输入(管道、stdin、输入重定向)获取数据,并转换成命令行的参数
[root@king data]# cat >>test.txt<<EOF
1 2 3 4 5 6
7 8 9
10 11
EOF
[root@king data]# cat test.txt
1 2 3 4 5 6
7 8 9
10 11
[root@king data]# xargs < test.txt
1 2 3 4 5 6 7 8 9 10 11
-n 数字(分组)
[root@king data]# xargs -n 4 < test.txt
1 2 3 4
5 6 7 8
9 10 11
-i 将内容与{}联系起来
常见用法 [root@king data]# find . -type f -name "c.txt"|xargs -i mv {} /tmp/
-i/I,将xargs的每项名称,一行一行赋值给{},相当于用{}代替数据(让不支持批量处理的命令按行执行)
11.cp命令(copy)拷贝文件或目录,默认不能拷贝目录
cp [-aifpru] [源文件] [目标文件]
-a:相当于-pdr
-d:若源文件为链接文件(link file),则复制链接文件属性而非档案本身
-f:强制,若目标文件已经存在且无法开启,则移除后再尝试
-i:若目标文件已经存在时,在覆盖时会先询问
-p:文件的属性一起复制,保持属性
-r:递归,用于复制目录(目录里面文件一个挨一个拷贝则为递归)
-u:若目标文件存在,则目标文件比源文件旧时才复制
提示:如果源文件时多个,那么目的文件在最后,且是目录。 cp /etc/ssh/sshd_config{,.ori}
将sshd_config文件在原目录下备份
12.mv移动(move)
mv [源文件/源目录] [目的目录]
-i:如果目的文件已经存在,询问是否覆盖
-f:强制执行,不会询问
-u:若目的文件存在,则比源文件新,才会移动
提示:如果源文件时多个,那么目的文件在最后,且是目录。
mv后接文件且路径不变时修改文件名 eg:mv test.txt demo.txt
移动文件的四种方法:
find / test -type f -size +100k -exec mv {} /tmp/ \;
find / test –type f –size +100k|xargs -i mv {} /tmp/
find / test –type f –size +100k|xargs mv -t /tmp/
mv `find / test -type f -size +100k` /tmp/
13.rm删除命令,删除目录文件 -f(force)强制,-r(recursive)递归,用于删除目录
cd /root/data
rm king.txt 进入/root/data目录下删除king.txt文件
强调:删除命令要慎用,非常危险,删除前一定要备份。
linux中删除文件的正确姿势为,先将要删除的文件或目录移动至/tmp下,若一段时间后(一般是一个月)依然没有什么问题,在将它删除。
在脚本中删除文件或目录时生产环境的使用方法一般为:
1.和xargs搭配用法 find /log -type f -name ‘*.log’ -mtime +15 |xargs rm -f
查找log目录并删除15天以前修改过的后缀为.log文件 find /log -type d -name ‘*king’ -mtime +30 |xargs rm -rf
查找/log目录,删除修改日期30天以前且结尾名称为king的目录
2.使用find的-exec Find /logs -type f -mtime +5 -exec rm {} \;
在/logs目录中查找更改时间在5日以前的文件并删除他们
cp mv rm
等命令默认加了参数 -i 弹出确认对话提示(别名),若想去除默认参数而不使用参数可以:
1.在命令前加 \(反斜线)
2.全路径,在命令前加 /bin
3.去除别名: unalias cp 删除cp命令默认加-i的功能(临时生效,重启失效)
[root@king ~]# touch /tmp/test.txt ##创建/tmp/test.txt
[root@king ~]# touch /mnt/test.txt ##创建/mnt/test.txt
[root@king ~]# cp /mnt/test.txt /tmp/ ##将/mnt/test.txt拷贝到/tmp/
cp: overwrite `/tmp/test.txt'? y ##询问是否覆盖 按y回车确认
[root@king ~]# cp /mnt/test.txt /tmp/ ##将/mnt/test.txt拷贝到/tmp/
cp: overwrite `/tmp/test.txt'? ^C ##询问是否覆盖 按ctrl+c取消
[root@king ~]# \cp /mnt/test.txt /tmp/ ##在命令前加入 \ 强制复制
[root@king ~]# /bin/cp /mnt/test.txt /tmp/ ##使用全路径,在命令前加/bin
14.find查找 -type 文件类型f(file),d(directory),c(character字符串),b(block),s(socket),l(link);-name ’文件名’;-mtime 时间,按修改时间查找,时间数字+7是7天以前,7是第7天,-7是最近7天 ; ! 取反 ; -a and 交集,并且;
-o or 并集,或者; -maxdepth查找深度;-perm权限数值,按文件权限查找;-size按文件大小查找
find /data –type f –name ‘king.txt’
find /data –type f –name ‘king.txt’ -exec rm {} \;
find /data –type f –name ‘*.txt’
find /data –type f –name ‘*.txt’ |xargs
find /data –type f –name ‘*.txt’ |xargs rm –f
文件属性三种时间:
modify time 修改时间(内容) -mtime
change time 改变时间(属性) -ctime
access time 访问时间 -atime
15.grep 过滤命令(筛选,匹配)
-v 后接要排除内容(只能过滤一整句,linux以空格为分隔符)
-A除了显示匹配的一行外并显示该行之后的n行 A是after
-B除了显示匹配的一行外并显示该行之前的n行 B是before
-C除了显示匹配的一行外并显示该行之前后各n行 C是context(前后文)
–color=auto对过滤匹配的字符串加颜色
-n 对匹配的内容打印行号
-o 只显示过滤到的内容
-E 过滤两个字符串,用 | 隔开 grep -E = egrep
-i 不区分大小写
-w 按单词搜索,相当于\b(画边界)
[root@king ~]# egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
[root@king ~]# grep -E "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
Eg:创建test.txt文件并放入以下字符
test
king
happy
然后在屏幕上打印出除了king以外的字符
答案:
cat >>test.txt<<EOF
test
king
happy
EOF
grep -v king test.txt
test
happy