此为L005&&L006课程内容的一个总结。
命令:
基本形式
命令 [参数] [路径或文件]
例:ls -ld /data
pwd 目前所在目录
1 [root@moban /]# pwd 2 /
mkdir 创建目录命令
1 [root@moban tmp]# mkdir as 2 [root@moban tmp]# ls 3 as lkj.txt oldboy.txt yum.log
ls -l 显示目录或文件列表
1 [root@moban tmp]# ls -ld 2 drwxrwxrwt. 4 root root 4096 Mar 21 15:56 .
ls -ld 显示文件本身属性
1 [root@moban /]# ls -ld /etc 2 drwxr-xr-x. 97 root root 12288 Mar 31 08:47 /etc
ls -F 或者 ls -p 可以直接区别目录和文件,他会在每个目录的后面多加一个斜线“/”
1 [root@moban /]# ls -F /var/ 2 account/ cvs/ games/ lock/ nis/ run/ yp/ 3 cache/ db/ lib/ log/ opt/ spool/ 4 crash/ empty/ local/ mail@ preserve/ tmp/
ls -lrt r为反转 t为时间,参数的意思为时间从近到远输出
1 [root@moban tmp]# ls -lrt 2 total 24 3 drwxr-xr-x 97 root root 4096 Mar 9 2016 etc 4 -rw-r--r-- 1 root root 29 Mar 9 2016 cut.txt 5 drwxr-xr-x 8 root root 4096 Mar 9 2016 lok 6 drwxr-xr-x. 2 root root 4096 Mar 21 2016 io 7 -rw------- 1 root root 669 Mar 27 2016 yum_save_tx-2016-03-27-15-16otc2lB.yumtx 8 -rw------- 1 root root 669 Mar 27 2016 yum_save_tx-2016-03-27-15-186ZDXOk.yumtx
cd [路径] 切换目录层次。cd.为当前目录。cd..为上级目录。
1 [root@moban ~]# cd /etc/ 2 [root@moban etc]#
touch [文件] 创建文件
1 [root@moban tmp]# touch 123.txt 2 [root@moban tmp]# ls 3 123.txt as lkj.txt oldboy.txt yum.log 4 [root@moban tmp]#
vi [文件] 创建一个记事本 如果文件不存在就创建一个新文件
1 [root@moban tmp]# vi 123.txt
cat [文件] 查看文件内容
1 [root@moban tmp]# cat 123.txt 2 lkj
cat -n [文件] 查看内容带行号
[root@moban tmp]# cat -n cut.txt 1 I am oldboy myqq is 49000448
echo 打印输出内容,如果需要打印的话语中有空格就要用双引号。
1 [root@moban tmp]# echo "hello" 2 hello
如果把单行文本覆盖到文件里可以使用“>"但是会清空原来的内容。要小心使用
[root@moban tmp]# cat 123.txt lkj [root@moban tmp]# echo "like" > 123.txt [root@moban tmp]# cat 123.txt like
如果不想覆盖原内容,想在结尾追加用“>>”
[root@moban tmp]# cat 123.txt lkj [root@moban tmp]# echo "like" >> 123.txt [root@moban tmp]# cat 123.txt lkj like
cp [路径文件] [路径] 拷贝(copy)只能拷贝文件不能拷贝目录,如果要拷贝目录要用-a或-r参数。
1 [root@moban /]# cp -a /io /tmp/ 2 [root@moban /]# ls /tmp/ 3 123.txt as io lkj.txt oldboy.txt yum.log
mv [文件路径] [路径] 移动,既可以移动文件也可以移动文件夹。
rm 删除(remove)删除文件夹要加参数 -r 强制删除要用-f 删除指定目录和文件-fr
1 [root@moban /]# rm /tmp/123.txt 2 [root@moban /]# rm -r /oi 3 [root@moban /]# rm -f /tmp/123.txt 4 [root@moban /]# rm -fr /oi
*grep -v [指定字符] [文件] 过滤文件中的指定字符的行。
1 [root@moban /]# cat 321.txt 2 liyun 3 lichaoran 4 wangyanhua 5 [root@moban /]# grep -v li /321.txt 6 wangyanhua
如果不加-v则显示你选择字符的行。
1 [root@moban /]# grep li /321.txt 2 liyun 3 lichaoran
grep -n [文件] 显示行号
head 头,也可用于搜索文件中的特定内容。
1 [root@moban /]# head -2 321.txt 2 liyun 3 lichaoran 4 ##显示前两行,如果不加数字默认为前10行
*sed 取各种内容,功能十分强大。
1 [root@moban /]# sed -n /li/p 321.txt 2 liyun 3 lichaoran 4 ##-n为表示取消原始输出,不用-n会把整个文件的内容打出来并且把搜索的内容又打出来一遍。 5 ##p为print 打印,把含有li的行打印出来 6 ##搜索的关键字要放在//中间,例如上边的/li/
1 [root@moban /]# sed /li/p 321.txt 2 liyun 3 liyun 4 lichaoran 5 lichaoran 6 wangyanhua 7 ##如果不加-n,会打印出并复制一行所取出的内容
1 [root@moban /]# sed /li/d 321.txt 2 wangyanhua 3 ##d为delete,不显示所搜索的行。
mkdir -p 循环建立文件夹,递归创建。
1 [root@moban /]# mkdir -p /1/2/3/4/5
tree 树,显示一个文件夹下的各层文件夹。
1 [root@moban /]# tree /1/ 2 /1/ 3 └── 2 4 └── 3 5 └── 4 6 └── 5 7 8 4 directories, 0 files
alias 别名;1)通过给危险命令加一下保护参数,可以防止误操作。2)把很多的字符串变成一个简单的字符串或者命令。
1 [root@moban /]# alias 2 alias cp='cp -i' 3 alias l.='ls -d .* --color=auto' 4 alias ll='ls -l --color=auto' 5 alias ls='ls --color=auto' 6 alias mv='mv -i' 7 alias rm='rm -i' 8 alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 9 ##默认的别名
如上,默认的cp -i别名为cp,-i为提示确认的参数,如果不需要-i可以使用unalias。
1 [root@moban /]# unalias cp
##但是在重启后失效。
默认别名的位置cat ~/bashrc 此可以永久修改。
find [路径] -type(类型)f(文件)-name(名字)“cat”(文件名) 查找
find还可以查询5天前的指定地址目录
1 [root@moban /]# find /log/ -type -f -name "*.log" -mtime +5
此为ntime的时间图示,一定要看懂,不然会出错。
xargs 按行,多配合管道“|”使用(暂时先这么理解,以后补充)
1 [root@moban /]# find /tmp/ -type f -name 321.txt|xargs rm -f
##查找/tmp/目录下321.txt的文件,名按行删除,如果没有xargs是不对的因为查找到的是按行输出,不加xargs是错误的。
seq sequence(序列)打印一个序列的数字。
1 [root@moban /]# seq 6 2 1 3 2 4 3 5 4 6 5 7 6
横着打。(引号中为空格,也可以是别的符号,用于每个数字的间隔)
1 [root@moban /]# seq -s " " 6 2 1 2 3 4 5 6
which 查看命令的路径whereis,locate,find
1 [root@moban /]# which cp 2 alias cp='cp -i' 3 /bin/cp
awk 三剑客老大。awk用于打列比较方便,sed用于打行比较方便。
1 [root@moban ~]# awk -F ":" '{print $1}' /etc/passwd 2 ##-F为分割参数,接后面的‘:’就是以:为分隔的意思 。以:分割/etc/passwd的第一列显示。
history 查看历史纪录。-c为清空所有 -d为指定行号删除
diff [文件] [文件] 按行比较文件差别
vimdiff [文件] [文件] ... 比较多个不同的文件,显示不同
useradd [用户名] 填加用户
passwd [用户名] 填加用户名密码,如果不指定用户则修改当前密码。普通用户只能修改自己的密码,--stdin是跳过交互形式的修改密码。
1 [root@lianxi ~]# echo 123456|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 [文件] 查看文件类型
1 [root@moban /]# file /dev 2 /dev: directory
ln -s [源文件名] [新文件名] 源文件,跟/etc/init.d -> rc.d/init.d一样
df -i 查看inode的使用量和总量
df -h 查看硬盘的余量
除命令以外其他的一些东西
cp
如果复制移动删除等命令下不想提示确认保护,需要在命令前加“”
1 [root@moban /]# cp /tmp/test.txt /mnt/ 2 ##会提示 3 [root@moban /]# cp /tmp/test.txt /mnt/ 4 ##不会提示
5 [root@moban /]# /bin/cp /tmp/test.txt /mnt
6 ##另一种方法,命令的具体位置获取详见上面的which命令
tail 于显示指定文件末尾内容,常用查看日志文件。 常用-f参数可以方便的查阅正在改变的日志文件
tail -f [文件名] 循环读取,可以试试查看文件更新
1 [root@moban tmp]# tail -f /etc/ssh/sshd_config 2 #Banner none 3 4 # override default of no subsystems 5 Subsystem sftp /usr/libexec/openssh/sftp-server 6 7 # Example of overriding settings on a per-user basis 8 #Match User anoncvs 9 # X11Forwarding no 10 # AllowTcpForwarding no 11 # ForceCommand cvs server
tail -n 从结尾开始显示,n为行数
1 [root@moban tmp]# tail -2 /etc/ssh/sshd_config 2 # AllowTcpForwarding no 3 # ForceCommand cvs server
chkconfig--list 显示系统程序列表
1 [root@moban tmp]# chkconfig --list 2 abrt-ccpp 0:off 1:off 2:off 3:off 4:off 5:off 6:off 3 abrtd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 4 acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off 5 atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 6 auditd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 7 blk-availability 0:off 1:on 2:off 3:off 4:off 5:off 6:off 8 cpuspeed 0:off 1:on 2:off 3:off 4:off 5:off 6:off 9 crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off 10 cups 0:off 1:off 2:off 3:off 4:off 5:off 6:off 11 haldaemon 0:off 1:off 2:off 3:off 4:off 5:off 6:off 12 ip6tables 0:off 1:off 2:off 3:off 4:off 5:off 6:off 13 iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off 14 irqbalance 0:off 1:off 2:off 3:off 4:off 5:off 6:off 15 kdump 0:off 1:off 2:off 3:off 4:off 5:off 6:off 16 lvm2-monitor 0:off 1:on 2:off 3:off 4:off 5:off 6:off 17 mcelogd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 18 mdmonitor 0:off 1:off 2:off 3:off 4:off 5:off 6:off 19 messagebus 0:off 1:off 2:off 3:off 4:off 5:off 6:off 20 netconsole 0:off 1:off 2:off 3:off 4:off 5:off 6:off 21 netfs 0:off 1:off 2:off 3:off 4:off 5:off 6:off 22 network 0:off 1:off 2:on 3:on 4:on 5:on 6:off 23 ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 24 ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off 25 portreserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off 26 postfix 0:off 1:off 2:off 3:off 4:off 5:off 6:off 27 psacct 0:off 1:off 2:off 3:off 4:off 5:off 6:off 28 quota_nld 0:off 1:off 2:off 3:off 4:off 5:off 6:off 29 rdisc 0:off 1:off 2:off 3:off 4:off 5:off 6:off 30 restorecond 0:off 1:off 2:off 3:off 4:off 5:off 6:off 31 rngd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 32 rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off 33 saslauthd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 34 smartd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 35 sshd 0:off 1:off 2:off 3:on 4:off 5:off 6:off 36 svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off 37 sysstat 0:off 1:on 2:off 3:off 4:off 5:off 6:off 38 udev-post 0:off 1:on 2:off 3:off 4:off 5:off 6:off
chkconfig --level n [程序名] on/off 指定某程序开关
[root@moban log]# chkconfig --list sshd //查看在各level下的sshd开启状态 sshd 0:off 1:off 2:on 3:on 4:off 5:off 6:off [root@moban log]# chkconfig sshd off //关闭所有level下的sshd [root@moban log]# chkconfig --list sshd sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@moban log]# chkconfig --level 3 sshd on //sshd开启level 3模式 [root@moban log]# chkconfig --list sshd sshd 0:off 1:off 2:off 3:on 4:off 5:off 6: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 6-11,20-28 cut.txt oldboy 49000448 b.[root@moban tmp]# cut -b 6-12,21-28 cut.txt oldboy,49000448
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 6-11,20-28 cut.txt oldboy 49000448 b.[root@moban tmp]# cut -b 6-12,21-28 cut.txt oldboy,49000448
wc -l 查看文件有多少行
符号
; 多个命令的分隔符
/ 根或路径的分隔符
> 标准输出重定向(数据流朝着箭头的方向流动),会覆盖原来的文件
>> 追加重定向(数据流朝着箭头的方向流动),再原来文件的“结尾”追加内容
<或< 标准输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。
<<或<< 输入重定向:后跟字符串,用来表示‘输入结束’,也可用ctrl+d来结束输入。
.. 上级目录
. 当前目录
^ 开头 例如 sed /^oldboy/d test.txt 删除test.txt中的oldboy开头的行显示出来
~ 用户的家目录
| 管道,把左边的命令输出给管道右边右边令执行,管道的两边不需要空格
{} 配合echo打印序列 echo {1..6} 打印1-6
小技巧
1.查看一个文件的20-30行,如何查看?
我们用sed,也可以用head和tail(但是繁琐)
1 [root@moban /]# sed -n 20,30p 321.txt
还可以用AWK,但是不方便。
1 [root@moban ~]# awk '{if (NR>19&&NR<31) print $0}' ett.txt 2 ##NR在awk中表示行的意思 $0为全部,在此是全部打印
2.把根目录(/)下及其子目录下的名为ett.txt的文件中的oldboylinux字符串改成oldboywindows
1 [root@moban ~]# echo oldboylinux > ett.txt 2 [root@moban ~]# cp ett.txt /etc/ 3 [root@moban ~]# cp ett.txt /opt/ 4 [root@moban ~]# sed s#oldboylinux#oldboywindows#g ett.txt //s为替换g为全部,合起来是全部替换的意思,###前两个#中间的内容为搜索的内容,后两个#中间的内容为需要替换成的内容 5 oldboywindows 6 [root@moban ~]# sed -i s#oldboylinux#oldboywindows#g ett.txt //-i为写入的意思,没有-i只会打印出来,而不会写到文件里 7 [root@moban ~]# cat 8 ^C 9 [root@moban ~]# cat ett.txt 10 oldboywindows 11 [root@moban ~]# find / -type f -name ett.txt 12 /etc/ett.txt 13 /opt/ett.txt 14 /root/ett.txt 15 [root@moban ~]# find / -type f -name ett.txt | xargs sed -i s#oldboylinux#oldboywindows#g //查找并批量替换 16 [root@moban ~]# find / -type f -name ett.txt | xargs cat 17 oldboywindows 18 oldboywindows 19 oldboywindows
最后:
这些命令学完后我给自己除了一些步骤小题,很不完善,也很初级,但是也能巩固一下所学的命令,每隔一段时间再跟着做一次。
1. 查询目前所在的目录 2. 在根目录创建一个名字为chushi的目录 3. 查询根目录列表看看创建的目录是否存在 4. 进入chushi目录 5. 创建一个名字为1.txt的文件 6. Vi编辑1.txt写入I like Linux 保存退出 7. 查看1.txt 8. 用打印输出功能打印Linux is good 覆盖1.txt原内容。 9. 查看1.txt 10. 打印输出功能打印Linux is very good 追加1.txt的内容 11. 查看1.txt 12. 再在根目录下创建一个名字为chushi1的目录 13. 查看建立是否成功 14. 拷贝chushi目录下的1.txt到chushi1下一份 15. 检查复制是否成功 16. 再次拷贝chushi目录下的1.txt到chushi1下一份,会提示是否同意覆盖 17. 再次拷贝chushi目录下的1.txt到chushi1下一份,但是这次不要然他提示覆盖 18. 在根目录下创建一个a.txt的文件和a的目录 19. 分别将a.txt文件和a目录移动到chushi下 20. 强制删除chushi1文件夹及其内容 21. 用cat命令给chushi目录下的1.txt覆盖3行内容(lichaoran liyun wangyanhua) 22. 滤出1.txt中的含有“li”的行并显示。 23. 找出1.txt中的还有”li”的行并显示 24. 显示1.txt的前两行 25. 用sed方法查找1.txt中的含有”li”的行 26. 用sed方法查找1.txt中不含有”li”的行 27. 在根目录创建一个4层的文件夹 28. 查看一下27 29. 在chushi目录下创建1目录 30. 把chushi目录下的1.txt复制到1目录下一份 31. 查找chushi目录中的1.txt 32. 查找chushi目录下的1.txt并删除 33. 在根目录下用序列创建一个b.txt的文件为100 34. 用空格为间隔横着显示一总数为6的序列 35. 查询命令cp rm mv的位置 36. 查询系统默认命令别名 37. 查看根目录下的b.txt的45-50行显示。