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