linux基础重要命令小节

此为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”(文件名)      查找

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

           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行显示。
原文地址:https://www.cnblogs.com/lcrbg/p/5302530.html