此为L005&&L006课程内容的一个总结。

命令:

基本形式

命令 [参数] [路径或文件]

例:ls -ld /data

pwd              目前所在目录

 [root@moban /]# pwd
/

mkdir             创建目录命令

 [root@moban tmp]# mkdir as
[root@moban tmp]# ls
as lkj.txt oldboy.txt yum.log

ls -l              显示目录或文件列表

 [root@moban tmp]# ls -ld
drwxrwxrwt. root root Mar : .

ls -ld            显示文件本身属性

 [root@moban /]# ls -ld /etc
drwxr-xr-x. root root Mar : /etc

ls -F 或者 ls -p        可以直接区别目录和文件,他会在每个目录的后面多加一个斜线“/”

 [root@moban /]# ls -F /var/
account/ cvs/ games/ lock/ nis/ run/ yp/
cache/ db/ lib/ log/ opt/ spool/
crash/ empty/ local/ mail@ preserve/ tmp/

ls -lrt            r为反转 t为时间,参数的意思为时间从近到远输出

 [root@moban tmp]# ls -lrt
total
drwxr-xr-x root root Mar etc
-rw-r--r-- root root Mar cut.txt
drwxr-xr-x root root Mar lok
drwxr-xr-x. root root Mar io
-rw------- root root Mar yum_save_tx-----16otc2lB.yumtx
-rw------- root root Mar yum_save_tx-----186ZDXOk.yumtx

cd [路径]            切换目录层次。cd.为当前目录。cd..为上级目录。

 [root@moban ~]# cd /etc/
[root@moban etc]#

touch [文件]         创建文件

 [root@moban tmp]# touch .txt
[root@moban tmp]# ls
.txt as lkj.txt oldboy.txt yum.log
[root@moban tmp]#

vi [文件]          创建一个记事本 如果文件不存在就创建一个新文件

 [root@moban tmp]# vi .txt

cat [文件]        查看文件内容

 [root@moban tmp]# cat .txt
lkj

cat -n [文件]      查看内容带行号

[root@moban tmp]# cat -n cut.txt
I am oldboy myqq is

echo          打印输出内容,如果需要打印的话语中有空格就要用双引号。

 [root@moban tmp]# echo "hello"
hello

            如果把单行文本覆盖到文件里可以使用“>"但是会清空原来的内容。要小心使用

[root@moban tmp]# cat .txt
lkj
[root@moban tmp]# echo "like" > .txt
[root@moban tmp]# cat .txt
like

            如果不想覆盖原内容,想在结尾追加用“>>”

[root@moban tmp]# cat .txt
lkj
[root@moban tmp]# echo "like" >> .txt
[root@moban tmp]# cat .txt
lkj
like

cp [路径文件] [路径]  拷贝(copy)只能拷贝文件不能拷贝目录,如果要拷贝目录要用-a或-r参数。

 [root@moban /]# cp -a /io /tmp/
[root@moban /]# ls /tmp/
.txt as io lkj.txt oldboy.txt yum.log

mv [文件路径] [路径]  移动,既可以移动文件也可以移动文件夹。

rm          删除(remove)删除文件夹要加参数 -r 强制删除要用-f 删除指定目录和文件-fr

 [root@moban /]# rm /tmp/.txt
[root@moban /]# rm -r /oi
[root@moban /]# rm -f /tmp/.txt
[root@moban /]# rm -fr /oi

*grep -v [指定字符] [文件] 过滤文件中的指定字符的行。

 [root@moban /]# cat .txt
liyun
lichaoran
wangyanhua
[root@moban /]# grep -v li /.txt
wangyanhua

            如果不加-v则显示你选择字符的行。

 [root@moban /]# grep li /.txt
liyun
lichaoran

grep -n [文件]    显示行号

head          头,也可用于搜索文件中的特定内容。

 [root@moban /]# head - .txt
liyun
lichaoran
##显示前两行,如果不加数字默认为前10行

*sed          取各种内容,功能十分强大。

 [root@moban /]# sed -n /li/p .txt
liyun
lichaoran
##-n为表示取消原始输出,不用-n会把整个文件的内容打出来并且把搜索的内容又打出来一遍。
##p为print 打印,把含有li的行打印出来
##搜索的关键字要放在//中间,例如上边的/li/
 [root@moban /]# sed /li/p .txt
liyun
liyun
lichaoran
lichaoran
wangyanhua
##如果不加-n,会打印出并复制一行所取出的内容
 [root@moban /]# sed /li/d .txt
wangyanhua
##d为delete,不显示所搜索的行。

mkdir -p        循环建立文件夹,递归创建。

 [root@moban /]# mkdir -p /////

tree            树,显示一个文件夹下的各层文件夹。

 [root@moban /]# tree //
//
└──
└──
└──
└── directories, files

alias          别名;1)通过给危险命令加一下保护参数,可以防止误操作。2)把很多的字符串变成一个简单的字符串或者命令。

 [root@moban /]# alias
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
##默认的别名

            如上,默认的cp -i别名为cp,-i为提示确认的参数,如果不需要-i可以使用unalias。

 [root@moban /]# unalias cp
##但是在重启后失效。

            默认别名的位置cat ~/bashrc  此可以永久修改。

find [路径] -type(类型)f(文件)-name(名字)“cat”(文件名)      查找

详细看这篇微博。http://www.cnblogs.com/lcrbg/p/5301795.html

           find还可以查询5天前的指定地址目录

 [root@moban /]# find /log/ -type -f -name "*.log" -mtime +

此为ntime的时间图示,一定要看懂,不然会出错。

xargs        按行,多配合管道“|”使用(暂时先这么理解,以后补充)

 [root@moban /]# find /tmp/ -type f -name .txt|xargs rm -f
##查找/tmp/目录下321.txt的文件,名按行删除,如果没有xargs是不对的因为查找到的是按行输出,不加xargs是错误的。

seq        sequence(序列)打印一个序列的数字。

 [root@moban /]# seq 

            横着打。(引号中为空格,也可以是别的符号,用于每个数字的间隔)

 [root@moban /]# seq -s " "
      

which        查看命令的路径whereis,locate,find

 [root@moban /]# which cp
alias cp='cp -i'
/bin/cp

awk        三剑客老大。awk用于打列比较方便,sed用于打行比较方便。

 [root@moban ~]# awk -F ":" '{print $1}' /etc/passwd
##-F为分割参数,接后面的‘:’就是以:为分隔的意思 。以:分割/etc/passwd的第一列显示。

history          查看历史纪录。-c为清空所有 -d为指定行号删除

 diff [文件] [文件]      按行比较文件差别

 vimdiff [文件] [文件] ...  比较多个不同的文件,显示不同

useradd [用户名]      填加用户

passwd [用户名]       填加用户名密码,如果不指定用户则修改当前密码。普通用户只能修改自己的密码,--stdin是跳过交互形式的修改密码。

 [root@lianxi ~]# echo |passwd --stdin oldboy

whoami          查看当前命令行终端的用户

su -            切换用户角色,注意要带上'-',不然用户变量转不过来,查询用户变量的命令是'env'

yum            基于rpm的包管理工具,rpm类似于windows上的exe

rpm -ivh                           软件安装命令。(很少使用)

chkconfig         查询开机自动启动命令,使用他更改后并不能马上生效,只能重启生效,详细请看http://www.cnblogs.com/lcrbg/p/5311275.html

last              查看系统登录记录

lastlog             曾静用户登录过的历史

file [文件]          查看文件类型

 [root@moban /]# file /dev
/dev: directory

ln -s [源文件名] [新文件名]  源文件,跟/etc/init.d -> rc.d/init.d一样

df -i            查看inode的使用量和总量

df -h            查看硬盘的余量

除命令以外其他的一些东西

cp
如果复制移动删除等命令下不想提示确认保护,需要在命令前加“\”

 [root@moban /]# cp /tmp/test.txt /mnt/
##会提示
[root@moban /]# \cp /tmp/test.txt /mnt/
##不会提示
5 [root@moban /]# /bin/cp /tmp/test.txt /mnt
6 ##另一种方法,命令的具体位置获取详见上面的which命令

 tail    于显示指定文件末尾内容,常用查看日志文件。 常用-f参数可以方便的查阅正在改变的日志文件

 tail -f [文件名]    循环读取,可以试试查看文件更新

 [root@moban tmp]# tail -f /etc/ssh/sshd_config
#Banner none # override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server # Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server

tail -n        从结尾开始显示,n为行数

 [root@moban tmp]# tail - /etc/ssh/sshd_config
# AllowTcpForwarding no
# ForceCommand cvs server

chkconfig--list    显示系统程序列表

 [root@moban tmp]# chkconfig --list
abrt-ccpp :off :off :off :off :off :off :off
abrtd :off :off :off :off :off :off :off
acpid :off :off :off :off :off :off :off
atd :off :off :off :off :off :off :off
auditd :off :off :off :off :off :off :off
blk-availability :off :on :off :off :off :off :off
cpuspeed :off :on :off :off :off :off :off
crond :off :off :on :on :on :on :off
cups :off :off :off :off :off :off :off
haldaemon :off :off :off :off :off :off :off
ip6tables :off :off :off :off :off :off :off
iptables :off :off :off :off :off :off :off
irqbalance :off :off :off :off :off :off :off
kdump :off :off :off :off :off :off :off
lvm2-monitor :off :on :off :off :off :off :off
mcelogd :off :off :off :off :off :off :off
mdmonitor :off :off :off :off :off :off :off
messagebus :off :off :off :off :off :off :off
netconsole :off :off :off :off :off :off :off
netfs :off :off :off :off :off :off :off
network :off :off :on :on :on :on :off
ntpd :off :off :off :off :off :off :off
ntpdate :off :off :off :off :off :off :off
portreserve :off :off :off :off :off :off :off
postfix :off :off :off :off :off :off :off
psacct :off :off :off :off :off :off :off
quota_nld :off :off :off :off :off :off :off
rdisc :off :off :off :off :off :off :off
restorecond :off :off :off :off :off :off :off
rngd :off :off :off :off :off :off :off
rsyslog :off :off :on :on :on :on :off
saslauthd :off :off :off :off :off :off :off
smartd :off :off :off :off :off :off :off
sshd :off :off :off :on :off :off :off
svnserve :off :off :off :off :off :off :off
sysstat :off :on :off :off :off :off :off
udev-post :off :on :off :off :off :off :off

chkconfig --level n [程序名] on/off  指定某程序开关

[root@moban log]# chkconfig --list sshd            //查看在各level下的sshd开启状态
sshd :off :off :on :on :off :off :off
[root@moban log]# chkconfig sshd off //关闭所有level下的sshd
[root@moban log]# chkconfig --list sshd
sshd :off :off :off :off :off :off :off
[root@moban log]# chkconfig --level sshd on //sshd开启level 3模式
[root@moban log]# chkconfig --list sshd
sshd :off :off :off :on :off :off :off

tar        压缩

a.[root@moban /]# tar -czvf etc.tar.gz etc/    //参数c为创建。z为gz格式的压缩模式。v为显示过程中的文件名。f为使用文档名
b.[root@moban /]# tar --exclude etc/services -czvf etc1.tar.gz etc/ //exclude为排除某个文件或者目录
c.[root@moban etc]# tar -xzvf etc.tar.gz -C /tmp //x为解压

cut        剪切数据

cut -b [文件名]    截取字节段

[root@moban ~]# echo "I am oldboy,myqq is 49000448" >> oldboy.txt
[root@moban ~]# cat oldboy.txt

a.[root@moban tmp]# cut -b -,- cut.txt
oldboy
b.[root@moban tmp]# cut -b -,- cut.txt
oldboy,

cut -d " " -f      用-d来设定分配分隔符 -f来指定输出

[root@moban ~]# echo "I am oldboy,myqq is 49000448" >> oldboy.txt
[root@moban ~]# cat oldboy.txt
a.[root@moban tmp]# cut -b -,- cut.txt
oldboy
b.[root@moban tmp]# cut -b -,- cut.txt
oldboy,

wc -l        查看文件有多少行

符号

;     多个命令的分隔符
/     根或路径的分隔符
>     标准输出重定向(数据流朝着箭头的方向流动),会覆盖原来的文件
>>     追加重定向(数据流朝着箭头的方向流动),再原来文件的“结尾”追加内容
<或<    标准输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
<<或<<    输入重定向:后跟字符串,用来表示‘输入结束’,也可用ctrl+d来结束输入。
..     上级目录
.     当前目录
^     开头 例如 sed /^oldboy/d test.txt 删除test.txt中的oldboy开头的行显示出来
~     用户的家目录
|     管道,把左边的命令输出给管道右边右边令执行,管道的两边不需要空格

{}      配合echo打印序列 echo {1..6} 打印1-6

小技巧

1.查看一个文件的20-30行,如何查看?

我们用sed,也可以用head和tail(但是繁琐)

 [root@moban /]# sed -n ,30p .txt

还可以用AWK,但是不方便。

 [root@moban ~]# awk '{if (NR>19&&NR<31) print $0}' ett.txt
##NR在awk中表示行的意思 $0为全部,在此是全部打印

2.把根目录(/)下及其子目录下的名为ett.txt的文件中的oldboylinux字符串改成oldboywindows

 [root@moban ~]# echo oldboylinux > ett.txt
[root@moban ~]# cp ett.txt /etc/
[root@moban ~]# cp ett.txt /opt/
[root@moban ~]# sed s#oldboylinux#oldboywindows#g ett.txt       //s为替换g为全部,合起来是全部替换的意思,###前两个#中间的内容为搜索的内容,后两个#中间的内容为需要替换成的内容
oldboywindows
[root@moban ~]# sed -i s#oldboylinux#oldboywindows#g ett.txt //-i为写入的意思,没有-i只会打印出来,而不会写到文件里
[root@moban ~]# cat
^C
[root@moban ~]# cat ett.txt
oldboywindows
[root@moban ~]# find / -type f -name ett.txt
/etc/ett.txt
/opt/ett.txt
/root/ett.txt
[root@moban ~]# find / -type f -name ett.txt | xargs sed -i s#oldboylinux#oldboywindows#g    //查找并批量替换
[root@moban ~]# find / -type f -name ett.txt | xargs cat
oldboywindows
oldboywindows
oldboywindows

最后:

这些命令学完后我给自己除了一些步骤小题,很不完善,也很初级,但是也能巩固一下所学的命令,每隔一段时间再跟着做一次。

.    查询目前所在的目录
. 在根目录创建一个名字为chushi的目录
. 查询根目录列表看看创建的目录是否存在
. 进入chushi目录
. 创建一个名字为1.txt的文件
. Vi编辑1.txt写入I like Linux 保存退出
. 查看1.txt
. 用打印输出功能打印Linux is good 覆盖1.txt原内容。
. 查看1.txt
. 打印输出功能打印Linux is very good 追加1.txt的内容
. 查看1.txt
. 再在根目录下创建一个名字为chushi1的目录
. 查看建立是否成功
. 拷贝chushi目录下的1.txt到chushi1下一份
. 检查复制是否成功
. 再次拷贝chushi目录下的1.txt到chushi1下一份,会提示是否同意覆盖
. 再次拷贝chushi目录下的1.txt到chushi1下一份,但是这次不要然他提示覆盖
. 在根目录下创建一个a.txt的文件和a的目录
. 分别将a.txt文件和a目录移动到chushi下
. 强制删除chushi1文件夹及其内容
. 用cat命令给chushi目录下的1.txt覆盖3行内容(lichaoran liyun wangyanhua)
. 滤出1.txt中的含有“li”的行并显示。
. 找出1.txt中的还有”li”的行并显示
. 显示1.txt的前两行
. 用sed方法查找1.txt中的含有”li”的行
. 用sed方法查找1.txt中不含有”li”的行
. 在根目录创建一个4层的文件夹
. 查看一下27
. 在chushi目录下创建1目录
. 把chushi目录下的1.txt复制到1目录下一份
. 查找chushi目录中的1.txt
. 查找chushi目录下的1.txt并删除
. 在根目录下用序列创建一个b.txt的文件为100
. 用空格为间隔横着显示一总数为6的序列
. 查询命令cp rm mv的位置
. 查询系统默认命令别名
. 查看根目录下的b.txt的45-50行显示。

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q147-Q151)
  2. 服务器磁盘扩展卷时遭遇&ldquo;There is not enough space available on the disk(s) to complete this operation.&rdquo;错误
  3. iOS中常见的一些宏
  4. 字节流、字符串、16进制字符串转换__Java(转)
  5. Redis配置以及通过C#访问小试
  6. 设置dt height 保证dd在同一行
  7. Java SE 第十六讲----面向对象特征之多态
  8. #pragma_pack(n)_与___attribute(aligned(n))
  9. jQuery 动态元素添加
  10. POJ 2387
  11. 在Android Studio上测试运行,Unity发布成Android包的环境搭建步骤
  12. 部署Flask项目到腾讯云服务器CentOS7
  13. 设计模式之 原型模式详解(clone方法源码的简单剖析)
  14. Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
  15. fine-tuning 两阶段模型
  16. iOS项目国际化详解
  17. Java基础知识_毕向东_Java基础视频教程笔记(22-25 GUI 网络编程 正则)
  18. MySQL Master_Slave主从配置
  19. php的curl也没这么复杂
  20. unity编辑器教程

热门文章

  1. Ajax系列之三:UpdatePanel
  2. PythonTip(1)
  3. vue中a的href写法
  4. SSH原理与远程登陆
  5. Android学习笔记_JNI_c调用java代码
  6. ASP.NET MVC Cookie 身份验证
  7. sql字段为datetime,插入&#39;&#39;的时候默认为1900年
  8. Java基础随笔2
  9. &#39;version&#39; contains an expression but should be a constant. @ line 13, column 11问题的解决
  10. iOS自动打开闪光灯