linux一些常见的指令
大家好,我是可爱的帅气迷人的猪猪,今天给大家说一下linux常见的一些指令,为了是同学们快速了解学习我们通过几道题来学习:
1,创建一个目录/zz
提示: windows下的路径样式为c: \zz\ test,而linux下的路径样式为 /zz/test
因此/zz就可以看做是c:\zz,不同的是 windows系统下还有D,E等盘, linux下就只有/
为所有目录的顶点。
英文make directorys缩写后就是 mkdir,这就是创建目录的命令
本题命令答案:
mkdir zz或cd /;mkdir zz
提示:使用分号可以在一行内分隔两个命令,有很多同学把两个命令写到了一行,但是却没加分号分隔
2、在zz目录下创建一个study.txt
touch /zz/study.txt
3、为study.txt输入内容“I am studying linux”
解答:
方法一:常用编辑方法
执行vi study.txt进入vi编辑器(默认命令模式),点击a或i进入编辑模式,敲入内容I am studying linux,然后按键盘上的ctrl+c或esc键,退出编辑模式(进入命令模式),最后敲:wq保存并退出。wq解释write quit。
此法说明:
ⅵ就是类似记事本一样的linux下的常用编辑器了,如果想功能更丰富可以用ⅵm替代ⅵ,
vim类似高级的编辑器例如 emeditor,vi/vim的内部有很多的命令技术点要掌握,例如:上文
提到的i就是 insert,进入插入编辑模式的状态的意思,esc键是切换到命令模式,命令模式
下可以敲冒号“:”在后面才可以接命令参数,例如wq,w是write,q为quit,就是写入后
退出编辑器的意思。
方法二:单行或多行文本插入常用命令,内容都是放到文件的尾部
echo 'I am studying linux’. >/dzqc/study. txt
1、如果没有 study.txt,会创建 study.txt,放入单引号的内容。
2、如果有 study.txt,会清空已有的全部内容,放入单引号的内容
echo ’ I am studying linux.’>> /zz/ study.txt 这个在企业里很常用:单行内容追加到文件结尾。
实践过程:
[root@ songls~]#echo ’ I am studying linux.’>>/zz/ study.txt 特殊的编辑文件方法,通过echo
命令使用单引号把引号的内容通过>>追加到dzqc/ study.txt,注意:追加就是增加,不是覆盖。
[root@ songls]#cat /zz/study.txt检查追加的结果。I am studying linux.
此法说明:
echo是一个打印输出内容的一个常用命令,配合“>或>>”可以为文件覆盖及追加内容,这
个命令要掌握。“>”意思为重定向,会清除文件里所有以前数据,“>>”为内容追加,
只在文件尾部追加需要的内容,还有一个较复杂不常用的类似命令 printf
方法三:写脚本常用,追加多行,内容都是放到文件的尾部
cat >> /zz/study.txt << EOF
I am study ing linux.
EOF
#注意:结尾的EOF要顶格写,EOF也可以别的字符替代,只要是一对就好。例如: sss替代EOF。
提示:
方法二、方法三为命令行或脚本中常使用的办法,都很重要,必须要掌握。
方法二用于单行文本,方法三可以是多行文本(文本中如果有特殊字符如$等需要用\转义才可)。
方法四:
[ root@ songls]cat > /zz/study.txt #→编辑新文件
echo ‘I am oldboy’
按ctrl+d或 ctrl+c组合键两遍结束编辑。此操作为特殊编缉方法,作为扩展知识而提及。
特别说明:学习一题多解,会拓展我们的思维,对一个好的思维形成很有帮助
总结:
企业常见的编辑文件的命令有i,im, echo cat等。
4、把study.txt文件拷贝到/temp目录下
解答
命令答案
cd /zz
cp study.txt /tmp/
提示:有的同学加cp -a,cp -p也可以。保持属性。更多信息可以 man cp
cp [- aifpru]源文件 目标文件
-a:相当于-pdr
-d:若源文件为链接文 件( link file),则复制链接文件属性而非档案本身;
-f:强制,若目标档案已经存在且无法开启,则移除后再尝试;
-i:若目标文件已经存在时,在覆盖时会先询问;
-p:连同档案的属性一起复制过去,而非使用默认属性;
-r:递归,用于复制目录
-u:若目标文件存在,则目标文件比源文件旧时才复制;
提示:如果源文件是多个,那么目的文件在最后,且是目录
cp的重要参数a p r
提示:如果源文件是多个那么目的文件在最后,且是目录。
cp的重要参数a p r
5、把/dzqc目录移动到/root下
解答
mv /zz /root/
提示:如果希望带目录拷贝,尽量不要 mv /zz /root/,移动目录时源目录结尾不要多余斜线。虽然此处是可以的,但是我们要养成好的规范和习惯。
总结
mv [-i f u] [源文件/源目录] [目的文件/目的目录]
-i:如果目的文件已存在,询问是否覆盖
-f:强制执行,不会询问
-u:若源文件比目标文件新,才会移动。
提示:如果源文件是多个,那么目的文件在最后,且是目录。
下面是某位学生测试的例子,你来实验下看看和他的表述是否相符?
如:f1、f2是文件,/d1、/d2是目录
mv f1 f2:如果f2不存在,则相当于f1重命名为f2;如果f2存在,则f1重命名为f2,并覆盖f2。
mv f1 /d1:如果/d1不存在,则把f1移动到./下,并重命名为d1;如果/d1存在,则把f1移动到/d1下。
mv f1 /d1:如果/d1不存在,则把f1移动到./下,并重命名为d1;如果/d1存在,则把f1移动到/d1下。
mv /d1 /d2:如果/d2不存在,则把/d1重命名为/d2,如果/d2存在,则把/d1移动到/d2下。
mv /d2 f1:如果f1不存在,则把/d2移动到当前目录,并重命名为f1;如果f1存在,会提示f1是个文件,不能用目录覆盖
6、进入root目录,zz目录删除study.txt文件
解答:
命令答案:rm
remove
cd /root/zz
rm study. txt
rm命令解释
rm [if] [文件/目录] 删除文件/目录
-i:询问用户是否确认删除,用y或者n来回答。
-r:删除目录时加该选项,删除目录及目录下的文件和目录,可以删除不为空的目录。
-f:强制删除,不用确认
rmdir [p] [目录名]:
用来删除空目录,p表示递归删除目录,目录里不能有文件或者目录,有文件只能用rm -r来删除。
如:/a/b/c
rmdir /a/b/c会删除/a/b/c。而/a/b还在。
rmdir -p/a/b/c会删除/a,/a/b,/a/b/c
但是rmdir/a, rmdir→p/a/b都会出错,提示: Directory not empty
提示:
删除一个文件一般用rm -i study.txt,此法会提示你确认,推荐初学使用。用rm- f study.txt方法不提示确认直接删除,比较危险,不推荐初学者使用。
特别提示:
初学者尽量不要用rm命令,那么如果必须要删除呢?
可以用mv替代rm,也就是把文件移动到/tmp下,然后等/tmp分区将要满时一次性删除,减少范错。这种把/tmp目录当作回收站使用对初学者是个不错的选择。
在脚本中删除文件或目录时生产环境的使用方法一般为:
①和xargs搭配用法
find . -type f -name “*.log” - mtime+15 |xargs rm -f 删15天以前的文件
find . -type d -name“*.1og" -mtime+30 |xargs rm -rf其删目录30天以前 慎用。
提示: xargs是一个不错的命令,有机会同学们要总结的。
②使用find的-exec
find /logs -type f -mtime+5 -exec rm {} : #在/logs目录中查找更改时间在5日以前的文件并
删除它们:
7、接第6题,退出zz目录,删除zz目录
解答:
cd…或cd…/
rm - r data或 rmdir data
#里面是空目录了不需要rf,杀鸡不用牛刀, rmdir基本要淘汰的命令了。
总结:
…相对路径,表示上一级目录,例如:/mnt/ aaa,mnt就是aaa的上级目录。
.相对路径,表示当前目录,即当前命令行的目录。
rm [-inf] [文件/目录] ←删除文件/目录
-i:询问用户是否确认删除,用y或者n来回答
8、已知文件test.txt内容为
Good good study
Day day up
Give you color see see
请给出打印test.txt内容时,不包含Give you color see see
解答:
先创建文件输入内容
利用第三题的方法三,生成测试数据:用前而的cat编辑文件的特殊用法,执行下面命令就好
cat >test. txt<<EOF
Good good study
Day day up
Give you color see see
EOF
方法一:使用grep过滤(必须要会)
[root @songls] grep -v ‘Give you color see see’ test.txt
Good good study
Day day up
提示:
大多数人这里会用cat test. txt grep -v" Give you color see see",这个命令虽然能实现,但如果是文件很大的话执行效率就差很多了,而且是不必要的。最后双引号"",为英文状态下的,非“”。
最后,此处gep后过滤的字符可以是
grep -v ‘Give you color see see’test.txt或grep- v Give you color see
see test.txt或grep -v " Give you color see seeoy"test.txt谁能说下区别?请实践验证。
方法二:
[root @moban ]# head -2 test.txt
Good good study
Day day up
方法三:0基础同学可以忽略此法
拓展:三剑客之一的sed删除方法,其实是把 Give you color see see行删除,然后打印剩下的内容。
Sed ‘/ Give you color see see/d’ test.txt
sed -e ‘/ Give you color see see/d’ test.txt
[root @songls]# sed -e /^Give you color see see/d test. txt
Good good study
Day day up
[root @songls]# sed /Give you color see see/d test. txt
Good good study
Day day up
方法四:0基础同学可以忽略此法
[root@old-boy ] awk /[^Give you color see see] /test.txt
Good good study
Day day up
提示:三剑客是grep,awk,sed,他们都有过滤字符串的功能,grep最擅长,awk处理列擅长。sed擅长删除,修改,替换,添加。
[if !supportLists]9、[endif]请给出一条命令完成创建目录/dzqc/test,即创建/dzqc目录及/dzqc/test目录
解答:
Mkdir -p /dzqc/telt
实践过程:
[root @songls]# mkdir -p / dzqc/test<递归创建目录,一般第一级目录不存在时用-p,否则报错。
[ root@songls]#tree /dzqc/查看目录树结果
如果没有tree命令 yum install tree -y
其他的方法: mkdir /dzqc/ /dzqc/test
[if
!supportLists]10、[endif]已知/tmp下已经存在test.txt文件,如何执行命令才能把/mnt/test.txt直接覆盖掉
/tmp/test.txt而让系统不提示是否覆盖(root权限下)
解答:
建立测试数据:
[root@songls dzqc]# touch /tmp/test. txt
[root@songls dzqc]# touch /mnt/test.txt
[root@songls dzqc]# cp / mnt/test. txt /tmp/
cp: overwrite ‘/tmp/test. txt’?
方法一:
/bin/cp/ mnt/test. txt /tmp/test.txt
方法二:
\cp /mnt/test. txt/ tmp/test.txt
简要解释:
此题的思路就是屏蔽掉系统默认的对应命令别名,默认执行cp的操作是调用了别名的。所以会提示覆盖。
详细说明:
cp命令默认是不会提示 overwrite的,但是cp的-i选项会提示,而一般 Linux的用户环境文件. ~/.bashrc中会把cp命名成 alias cp='cp -i’如:
[root@student tmp]# alias grep cp
alias cp=cp -i
这样在Linux下输入cp命令实际上运行的是cp -i,加上一个“\”符号或者写cp全路径/bin/cp就是让此次的cp命令不使用别名(cp -i)运行。
提示:
同样命令还有mv、rm等。希望大家做事也能尽量的举一反三,由此及彼,拓宽思路和视野。
特别说明:脚本里直接写命令也可以逃避别名,但是我们习惯还是用全路径
别名的作用:
1)通过给危险命令加一些保护参数,防止人为误操作。
2)把很多复杂的字符串或命令变成一个简单的字符串或命令。
别名对应的命令
alias查看和设置别名
unalias取消别名
让起的别名永久有效
#User specif’ic aliases and functions
alias rm=’ rm -i’
allas cp=’ cp -i’
alias mv=’mv -i
定义别名永久生效:
/etc/ profile全局生效
/. bashrc当前用户生效
分享别名的困惑及解决技巧
http:/oldboy.blog.51cto.com/2561410/699046
[if !supportLists]11、[endif]只查看ett.txt文件(共100行)内第20到第30行的内容
解答: sequence==seq序列
生成ett文件
[root@songls dzqc]# seq 100 >ett.txt
[root @songls dzqc]# cat ett.txt
Cat ett.txt|head -30|tail -10
方法一:grep 20 -A 10 ett.txt
方法二:(*必会):0基础同学可以考虑暂时忽略此法
sed -n ‘20,30p’ett.txt<这个命令更有效率,要记住
[root@songls dzqc]# sed -n ‘20, 30p’ ett.txt
提示:-n取消默认输出,p打印20-30
方法3(锦上添花):
[root @songls dzqc]# awk ’ 19<NR & NR<31’ett.txt
方法4:(锦上添花):
[root@songls dzqc]# awk ‘{if(NR<31 && NR>19) printf $0"\n"}’ ett.txt
12、把/dzqc目录及其子目录下所有以扩展名.sh结尾的文件中包含hhhhh的字符串全部替换为aaaaaaa
find /dzqc/* -name “*.sh” -type f -exec sed -i ‘/hhhhh/ s/hhhhh/aaaaaaa/g’ {} ;
所涉及到的命令总结:
1、mkdir make directorys创建目录例子: mkdir /data 在根/下创建data目录
2、Is list(列表)列表目录文件例子:1s/列根/目录下目录和文件。
-l(long)长格式, -d( directorys)查看目录
3、cd change directory改变目录路径例子:cd/etc
4、pwd print work directory打印工作目录(显示当前所在路径)
5、touch 创建文件或更新文件的时间戳,如果文件不存在,就建立新文件,如果存在,
就改变文件的访问时间atimer等时间戳信息。
6、vi windows记事本,简单。 例子: vi dzqc.txt
7、vim 复杂编辑器 功能复杂,高亮,自动缩进(写shell/ python脚本用)
8、echo 打印输出内容,配合“>或>>”可以为文件覆盖及追加内容,还有一个较复杂不常用的类似命令printf.
">” 意思为重定向,会清除文件里所有以前数据
“>>”为内容追加,只在文件尾部追加需要的内容
特殊符号:
或1> 输出重定向: 把前面输出的东西输入到后边的文件中,会清除文件原有内容
或1>> 追加重定向: 把前面输出的东西追加到后边的文件尾部,不会清除文件原有内容。
0<或< 输入重定向: 输入重定向用于改变命令的输入,后面指定输入内容,前面跟文件名。
0<<或<< 追加输入重定向: 后跟字符串,用来表示“输入结束“,也可用ctr1+d来结束输入
2>错误重定向: 把错误信息输入到后边的文件中,会删除文件原有内容。
2>>错误追加重定向: 把错误信息追加到后边的文件中,不会删除文件原有内容。
说明:
1、箭头的指向就是数据的流向。
2、数字说明:↓
1.标准输入( stdin):代码为0,使用<或<<。数据流向从右向左。
2.标准正常输出( stdout):代码为1,使用>或>>。数据流向从左向右。
3.标准错误输出( stderr):代码为2,使用2>或2>>。
例子:↓
[root @songls dzqc]# xargs -n 2<b. txt
特殊重定向的举例
a.将标准输出重定向到b.txt,将错误输出重定向到a.txt
例: echo‘aaaaaaa’ 2>a.txt 1>a.txt
b.2&1写法是把标准错误重定向到标准输出,即让错误的输出和正确的一样,正确的定向到哪,错误的就到哪。
例: echo‘aaaaaaa’>a. txt 2>&1
c.2&1的法相当于>&
例: echo‘aaaaaaa’ >a.txt 2>&1相当于 echo ‘aaaaaaa’ &>a.txt
9、cat 查看文件内容 例子:cat dzqc.txt
10、xargs 从标注你输入获取内容创建和执行命令 -n数字,分组
11、cp copy 拷贝文件或目录,默认不能拷贝目录,
-r:递归,用于复制目录:-a:相当于-pdr,
-p:连同档案的属性一起复制过去,而非使用默认属性
12、rm remove 删除目录和文件
-f(force)强制,-r(recursive)递归,用于删除目录
强调:删除命令要慎用,非常危险,删除前一定要先备份一份
13、mv move 移动文件或目录
14、****find 查找 -type文件类型(f(file), d( directory) ,c( character)
b( block), s( socket), l(link)), -name “文件名”,
- mtime时间,按修改时间查找,时间数字,+7 7天以前,7 第七天, -7最近7天。
[if !supportLists]15、[endif]***** grep linux三剑客老三过滤需要的内容, -v排除内容,例子: grep -v dzqc test.txt
-B除了显示匹配的一行之外,并显示该行之前的num行
-A除了显示匹配的一行之外,并显示该行之后的num行↓
-C除了显示匹配的一行之外,并显示该行之前后各num行↓
16、head 头,头部 读取文件的前n行,默认前10行, -n数字, 习惯-5, 忽略-n.
17、tail 尾,尾巴 输出文件的后n行,默认后10行,-n数字,习惯-5,忽略-n。小
18、alias 查看和设置别名 查看别名直接输入 alias,设置别名 alias cp=cp-i
19、unalias 取消别名 unalias cp
20、seq:等差数列。 seq 1 2 20 seq 1 20 seq 100 > ett.txt
#==》 xshell常用快捷键总结(很多只给出部分)
tab进行补全
Ctrl + a可以快速切换到命令行开始处Ctrl + e切换到命令行末尾
ctrl + l清屏
上箭头向上翻命令记录
下箭头向下翻命令记录Ctrl
- r在历史命令中查找Ctrl + u删除光标所在位置之前的所有字符Ctrl + k删除光标所在位置之后的所有字符ctrl +
w删除光标之前的一个单词Ctrl + d结束当前输入、退出shellctrl + s可用来停留在当前屏 ctrl + q 恢复刷屏
好了暂时就到这里,我们下期见啦!!