mkdir
创建目录
mkdir -p /dir1/dir2
连续创建目录
touch
创建文件
创建以file[n]
命名的一万个文件:
touch file{1..10000}
>
重定向
重定向>
,会清除文件里以前所有的数据;
利用重定向将内容写入file.txt
文本:
echo ‘I am Studying Linux’>file.txt
>>
内容追加
利用重定向将内容写入file.txt
文本,只在文件尾部追加需要的内容
echo ‘I am Studying Linux’>>file.txt
可追加多行
cat
命令重定向
cat >file.txt #回车并直接写入需要内容,按ctrl+C/D结束
cat
命令内容追加:
cat >>file.txt #cat命令内容追加,按ctrl+C/D结束
cat
命令多行内容追加:
cat >>file.txt<<xmq
>line1
>line2
>line3
>xmq
自定义设置字符作为开始与结束的标志
创建内容并同时写入内容:
echo "写入的内容" >/usr/data/file.txt
凡是用echo、touch创建的都是“文件”
<
输入重定向
cat <file.txt #即 cat file.txt
cat >abc.txt <file1.txt #将file1.txt中的内容重定向到abc.txt文件
tr " " "\n"<a.txt >>a.txt #将a.txt中的空格改成换行符,并追加到a.txt后
箭头方向即数据流向,输入重定向,将文件中的数据流向给命令
2>>
错误内容追加
输入错误命令,并将错误结果追加到file.txt
中
lls >>file1.txt 2>>file2.txt
ls >>file1.txt 2>>file2.txt #正确内容追加到file1,错误内容追加到file2
ls &>>file1.txt #正确和错误的内容全部追加到fiel1
lls >>file1.txt 2>&1 #标准错误输出同标准正确输出一致,全部追加到file1
- 总结:
>
或1>
输出重定向:把前面输出的东西输入到后边的文件中,会清除文件原有内容。
>>
或1>>
追加重定向:把前面输出的东西追加到后边的文件尾部,不会清除文件原有内容。
0<
或<
输入重定向:输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
0<<
或<<
追加输入重定向:后跟字符串,用来表示“输入结束”,也可用ctrl+D
来结束输入。
2>
错误重定向:把错误信息输入到后边的文件中,会删除原文文件内容。
2>>
错误追加重定向:把错误信息追加到后边的文件中,不会删除原文文件内容。
说明:
1、箭头的指向就是数据的流向。
数字说明:
标准输入: 代码为0,使用<或<<。数据流向:从右到左。
标准正常输出: 代码为1,使用>或>>。数据(正确的数据)流向:从左到右。
标准错误输出: 代码为2,使用2>或>>。 数据(错误的数据)流向:从左到右。
cat
查看文件内容
查看某一文件下所有文件内容:
find /data/data/ -type f |xargs cat
xargs
从标准输入获取内容创建和执行命令行常用命令:
xargs -n 数字
分组
$ echo 1 2 3 4 5 6 7 8 >a.txt
$ cat <a.txt
1 2 3 4 5 6 7 8
$ xargs -n 4 <a.txt
1 2 3 4
5 6 7 8
cp
复制文件cp -r 文件夹路径
-r,递归复制,用于复制文件夹cp -a 文件夹路径
复制,用于复制文件夹,保持文件属性,如果文件为链接文件将复制链接rm -f 文件名
-f (force)强制删除rm -rf 目录名
-r (recursive)递归,删除目录rm -v 文件名
-v 提示已删除的文件
rm命令使用比较危险,删除后无法恢复。一般使用find命令删除文件
find
按时间查找文件:
find /data -mtime +7 #+7表示七天以前的文件,7表示查找第7天的文件,-7表示最近7天
查找某一个路径下类型为“文件“的数据:
find /data -type f
查找某一个路径下类型为“文件“名称为file.txt
的数据:
find /data -type f -name "file.txt"
find
的-exec
对查找到的数据进行处理
对某一个路径下类型为“文件“名称为file.txt
的数据进行删除:
find /data -type f -name "file.txt" -exec rm {} \; #{}表示查找的内容,即将查找到的内容进行删除
find /data -type f -name "file.txt" |xargs rm -f #通过管道符号|将数据传给rm,xargs将查找到的数据变成一行,等同于rm -f a.txt b.txt c.txt
一般使用该命令删除,好处在于设置的条件比较多,不容易误删
-type f (file)文件 -type d (directory)目录 -type c( character) 字符 -type b (block)块设备、磁盘 -type s(socket)
|
管道符:将上一个命令的数据传递给下一个命令进行处理,管道符可多次使用。
对某一个路径下类型为“文件“名称为file.txt
的数据进行移动:
mv `find aaa/ -type f -name "*.txt" ` bbb/
!
可取反 -a
取交集 -o
取并集,或者
-
上一次所在的目录
~
当前用户的家目录
.
当前目录
..
上一级目录
grep
过滤命令(Linux三剑客之一),过滤需要的内容,使用-v
表示排除;查看
file.txt
文件中除abc
字符以外的内容grep -v abc file.txt
查看
file.txt
文件中含abc
字符的内容grep abc file.txt
grep num -A/-B/-C num file.txt
-A除了显示匹配一行之外,并显示该行之后的num行;
-B 除了显示匹配的一行之外,并显示该行之前的num行;
-C 除了显示匹配的一行之外,并显示该行之前后的各num行。
head -n 文件名
表示读取文件的前n
行,默认前十行tail -n
表示读取文件的后n
行,默认为十行
查看文件前十行和后十行内容。并将数据在一行输出:
$ seq 20 >file.txt #排序
$ head file.txt | xargs #xargs 将数据变为一行
1 2 3 4 5 6 7 8 9 10
$ tail file.txt | xargs
11 12 13 14 15 16 17 18 19 20
yum install Irzsz telnet tree nmap nc -y #-y表示直接同意安装
使用yum
安装常用命令(如果没有)LANG=en
改成英文版本LANG="zh_CN.UTF-8"
改成中文版本alias
设置/查看系统命令名别
别名的作用:
(1)给危险得命令加一些参数保护,防止人为误操作。
(2)把很多复杂的字符串或命令变成一个简单的字符串命令。
为rm
设置别名,告之不允许使用:
alias rm='echo this command does not allow to use.'
unalias 命令
删除别名,尽量不使用,并且重启系统后失效
alias设置别名,内容保存在系统内存中,无法永久保存,重启系统后失效;
要定义永久别名,需要将数据存储到文件目录中:
/etc/profile 全局生效
~/.bashrc 当前用户生效
cp
直接覆盖文件不提示
如何执行拷贝命令,遇到同名文件直接(让Linux系统不提示)覆盖
$ touch /tmp/test.txt
$ touch /mnt/test.txt
$ \cp /mnt/test.txt /tmp/ #加反斜号直接覆盖,使用反斜线,作用在于屏蔽别名。(使用alias命令查看)
$ /bin/cp /mnt/test.txt /tmp/ #加上命令全路径,直接覆盖执行
seq 数字
生成序列seq -s "分隔符"
-s
指定分隔符
$ seq 100 >file.txt #从数字1排到100生成100行数据文件
$ seq 3 10 #从数字3到10生成数据
$ seq 1 2 10 #从数字1到10每隔2位数生成数据,相当于等差数列,等差为2
sed
stream editor
,流编辑器,实现对文件的增删改替查换。Linux
命令三剑客之一
sed 's#需要替换的内容#替换的内容#g' file.txt
#s表示替换,g表示全局,#表示分隔符,也可使用其他任何字符替代。
$ cat >>file.txt <<input
> this is first line
> this is second line
> input
$ sed 's/first/second/g' file.txt
this is second line
this is second line
有4种可用的替换标记:
数字,表明同一行文本中替换具体第几处的数据;
g,表明新文本将会替换所有匹配的文本;
p,表明原先行的内容要打印出来(即修改行重复显示一行);
w file,将替换的结果写到文件中。
示例1:
echo "111 111 111" >file.txt
sed -i 's/111/222/2' file.txt
cat file.txt
111 222 111
示例2:
$ cat file.txt
111 111 111
222 222 222
$ sed 's/222/333/p' file.txt
111 111 111
333 222 222
333 222 222
sed 's/222/333/gp' file.txt
111 111 111
333 333 333
333 333 333
$ sed 's/222/333/gpw file_new.txt' file.txt
111 111 111
333 333 333
333 333 333
$ cat file_new.txt
333 333 333
$ cat file.txt
111 111 111
222 222 222
sed -e
在命令行使用多个编辑器命令
$ cat file.txt
111 111 111
222 222 222
$ sed -e 's/111/333/g;s/222/444/g' file.txt
333 333 333
444 444 444
sed -f xxx.sed file.txt
从文件中读取编辑器命令
$ cat xxx.sed
s/aaa/bbb/
s/ccc/ddd/
s/eee/fff/
用于每次需要重复替换多个相同的字符
sed -i
将替换结果写入到文件中
将/data/data/
目录下所有文件中aaa
替换为bbb
:
$ find /data/data/ -type f |xargs sed -i 's/aaa/bbb/g' #-i表示修改文件内容,如果不带-i将仅仅输出到上,而不存入文件中。
自我练习:
在文件file.txt
中将任意一行中tabs1
的字符后一行添加内容:name:www.google.com
:
$ cat file.txt
tabs1:
name:www.baidu.com
url:www.baidu.com
img:/soft/one.png
$ sed -i 's/tabs1/tabs1\nname:www.googole.com/g' file.txt #\n表示换行
tabs1:
name:www.google.com
name:www.baidu.com
url:www.baidu.com
img:/soft/one.png
将目录下.txt
格式的文件中的数据one
改成two
:
$ cat *
one
one
one
one
$ find -type f -name "*.txt" |xargs sed -i 's/one/two/g' #第一种方法
$ cat *
[sumsung@localhost aaa]$ cat *
two
two
two
two
$ sed -i 's/two/one/g' `find -type f -name "*.txt"` && cat * #第二种方法,``里面的命令将会先执行
one
one
one
one
sed -n
不产生命令输出,sed处理的结果将不会输出到CLI
中,通常与p
标记一同使用,用于仅仅输出替换的数据行内容。
打印某一行:
sed -n '20'p file.txt
打印最后一行:
sed -n '$'p file.txt
总结:
sed
命令选项总结:
选项 | 描述 |
---|---|
-e | 在命令行使用多个编辑器命令 |
-f | 从文件中读取编辑器命令 |
-i | 将替换结果写入到文件中 |
-n | 不产生命令输出,sed处理的结果将不会输出到CLI 中 |
sed
替换标记总结:
选项 | 描述 |
---|---|
数字 | 表明同一行文本中替换具体第几处的数据 |
g | 表明全局替换 |
p | 表明原先行的内容要打印出来(即修改行重复显示一行); |
w file | 将替换的结果写入文件中 |
awk
过滤、输出内容。
查看某一行:
awk NR==19 file.txt
只查看file.txt
文件(100行)内第20行到30行的内容:
$ head -30 file.txt|tail -10 #用法太low
$ sed -n '20,30'p file.txt # -n的目的是用于取消默认输出,p代表打印(print)
$ awk 'NR>19&&NR<31' file.txt #NR代表行号
$ grep 20 -A 10 file.txt #-A除了显示匹配一行之外,并显示该行之后的num行;-B 除了显示匹配的一行之外,并显示该行之前的num行;-C 除了显示匹配的一行之外,并显示该行之前后的各num行
快捷键总结:
tab
键 三下可列出/补全命令ctrl + c
终止当前任务命令或程序ctrl + d
退出当前用户环境。相当于exit
、logout
ctrl + l
清屏clear
ctrl shitf c
CRT里复制的命令ctrl shift v
CRT里的粘贴命令ctrl A
光标定位到开头ctrl E
光标定位到结尾ctrl U
清理前面的内容ctrl K
清理后面的内容ctrl R
搜索