Linux命令

 用户输入的指令----->解释器----->内核------->硬件

-用来实现某一功能的指令或程序

         -输入命令然后执行相应的程序来实现功能,不是简单的命令字符实现的 

程序在bin下:#ls /bin/xxx

-命令的执行依赖于解析器(shell):(默认的解析器:/bin/bash)

内核(只识别二进制的文件)根据命令来调配硬件,不能识别命令所需执行的功能,需要一个翻译官,就是解析器来实现



命令行的一般格式:

 基本用法

– 命令字        [选项]...        [参数1]      [参数2]...     #中括号表示可有可无


[root@server0 ~]# ls   -l    /root/  


[root@A ~]# ls /root


[root@A ~]# ls -l  /root    #显示目录下详细信息


[root@A ~]# ls -l  /boot    #显示目录下详细信息



[root@A ~]# ls  -l  -h  /boot   #显示目录下详细信息,加上单位(K,M,G)


[root@A ~]# ls -lh   /boot   #显示目录下详细信息,加上单位


[root@A ~]# man  ls         #查看ls命令的帮助手册信息

  

                    按"q" 退出


###################################################


   网卡配置文件:


# ls -l /etc/sysconfig/network-scripts/ifcfg-eth0      #显示网卡基本属性


# cat  /etc/sysconfig/network-scripts/ifcfg-eth0      #查看网卡配置信息   

# ls  /e(tab) 

# ls  /etc/sysco(tab)

# ls  /etc/sysconfig/netw(tab)

# ls  /etc/sysconfig/network-(tab)

# ls  /etc/sysconfig/network-scripts/ifc(tab)

# ls  /etc/sysconfig/network-scripts/ifcfg-e(tab)


# ls -lh /etc/sysconfig/network-scripts/ifcfg-eth0 


字符记不住的可以按"tab"补全



快捷键

– Ctrl + l : 清空整个屏幕,不是真正清除,而是直接调到空白

– Ctrl + c : 废弃当前编辑的命令行

– Esc + . : 粘贴上一个命令的参数


– Ctrl + u : 清空至行首,将光标前的字符清除

– Ctrl + w : 往回删除一个单词(以空格界定)

– Ctrl + k :将光标后面的字符清除



[root@A ~]# ls /etc/sysconfig/network-scripts/ifcfg-eth0


[root@A ~]# ls -l   Esc + .


[root@A ~]# ls -lh   Esc + .


[root@A ~]# cat     Esc + .


[root@A ~]# cat -n  Esc + .




###################################################

linux系统下载安装包,没网的情况下在光盘里下,光盘里有数千个包,访问光盘的内容用到挂载


挂载

 Windows

      光盘文件------->光驱设备------->CD驱动器



  Linux

      光盘文件------->光驱设备------------>访问点(挂载点) win可以双击的地方

               /dev/sr0//以SCSI接口的光驱设备

               /dev/hdc//以IDE接口的光驱设备

查看光驱设备是什么接口的:#ls /dev/hdc

            #ls /dev/sr0

linux为了解决有些人不会判断光驱设备是什么接口,不管光驱设备叫什么,它都会为自动光驱设备提供一个快捷方式自动判断是什么接口 这个快捷方式就是: /dev/cdrom


#ls -l /dev/cdrom    #查看源光驱设备是sr0还是hdc

通常光驱设备接口是sr0模式

cat不能直接查看设备文件内容,会弹出满屏乱码,按ctrl+c退出来


     

   

     1.虚拟机,图形鼠标操作,将光盘镜像放入虚拟光驱设备

如果找不到光盘文件,可以在真机上查找路径 #ls /ISO/rhel-server-7.2-x86_64-dvd.iso 复制过去


[root@A ~]# ls /dev/cdrom 

/dev/cdrom

[root@A ~]# ls -l /dev/cdrom

lrwxrwxrwx. 1 root root 3 10月 28 15:57 /dev/cdrom -> sr0


     2.Linux中挂载点就是一个目录


    3.使用mount命令,提供设备访问点(挂载点)

       mount挂载是个临时挂载


    – 格式: mount  设备路径     挂载点目录


[root@A ~]# mkdir /abc                #创建目录

[root@A ~]# ls  /


[root@A ~]# ls  /abc                 #查看目录内容为空

[root@A ~]# mount  /dev/cdrom  /abc    #挂载设备命令

[root@A ~]# ls /abc           #查看目录内容为光盘内容


[root@A ~]# ls /abc/P(tab)     #查看光盘里包的内容


    4.卸载

    – 格式: umount    挂载点目录

[root@A ~]# umount /abc

[root@A ~]# ls /abc/


注意:挂载点不要放在根/下,卸载不了,因为永远在根/下

最好自己创建挂载点


常见提示:

      1.当前在挂载点内

[root@A abc]# umount /abc/

umount: /abc:目标忙。


或者别的终端也挂载了,再开个终端也会挂载不了



      2.挂载速度很慢,没有把光盘文件放入到光驱中

[root@A /]# mount /dev/cdrom /abc/

        mount: 在 /dev/sr0 上找不到媒体


挂载点不要挂载在/root下,因为root原来会有很多文件,如果将光盘内容挂载进去,会把里面原有的隐藏掉


###############################################

重定向命令的输出

  覆盖重定向 >

  追加重定向 >>

 把前面命令的输出结果,写入到文本文件中,再显示出来

重定向有个功能,当需要写入的文件不存在时,会给你创建一个


[root@A /]# ifconfig > /opt/test.txt  #首先必须保证根下有opt/text.txt这个文件,直接这样创建

[root@A /]# cat /opt/test.txt//显示ifconfig内容


[root@A /]# hostname > /opt/test.txt

[root@A /]# cat /opt/test.txt//将上面的ifconfig内容覆盖掉,显示hostname内容


[root@A /]# hostname >> /opt/test.txt

[root@A /]# cat /opt/test.txt//在上面的hostname重新添加一个相同hostname内容


[root@A /]# ifconfig >> /opt/test.txt

[root@A /]# cat /opt/test.txt



[root@A /]# hostname > /opt/test.txt 

[root@A /]# cat /opt/test.txt


[root@A /]# echo 12345678


[root@A /]# echo 12345678 >> /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# echo hello >> /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# echo hahaxixi > /opt/test.txt

[root@A /]# cat /opt/test.txt


[root@A /]# > /opt/test.txt      #清空 文本文件 全部内容

[root@A /]# cat /opt/test.txt


####################################################

目录文件的管理


cd — Change Directory

– 用途:切换工作目录

– 格式:cd   [目标文件夹位置]


   相对路径: 不从根目录开始的路径

   绝对路径: 从根目录开始的路径


   .. 表示父目录,返回上一目录

   . 表示当前目录


[root@A /]# cd /etc/pki/

[root@A pki]# cd ..

[root@A etc]# cd ..

[root@A /]# pwd


[root@A /]# cd /etc/pki/

[root@A pki]# cd ../..

[root@A /]# pwd


[root@A /]# cd /etc/pki/

[root@A pki]# ls


[root@A pki]# cd CA         #相对路径

[root@A CA]# pwd


[root@A CA]# cd /

[root@A /]# cd /etc/pki/CA   #绝对路径

[root@A CA]# pwd


      


家目录:用来存放用户个性化设置的目录

~: 代表家目录

~user 表示  用户user的家目录


#useradd xxx//添加普通用户

#cd ~xxx//去往该用户的家目录


  /root: 管理员的家目录

  /home : 存放所有普通用户的家目录//home不是普通用户的家目录,而是存放其用户家目录的地方


[root@A /]# useradd nsd01        #创建nsd01用户

[root@A /]# cd ~nsd01            #去往用户nsd01的家目录

[root@A nsd01]# pwd

/home/nsd01    #普通用户nsd01的家目录nsd01在home下


[root@A nsd01]# cd ~lisi #去往用户lisi的家目录

[root@A lisi]# pwd

/home/lisi    #普通用户lisi的家目录lisi在home下


[root@A lisi]# useradd dc

[root@A lisi]# cd ~dc         #去往用户dc的家目录

[root@A dc]# pwd

######################################################

ls — List

– 格式:ls [选项]... [目录或文件名]


常用命令选项

– -l:以长格式显示

– -A:包括名称以 . 开头的隐藏文档

– -d:显示目录本身(而不是内容)的属性,一般不单独使用,和-l连用

– -h:提供易读的容量单位(K、M等),只看空目录的容量,不包括目录下内容的容量,所以没什么意义,所以一般很少用到 -lhd


d和h一般和l连用     


[root@A /]#  ls  -l /root      #显示/root目录下详细内容


[root@A /]#  ls  -ld /root     #显示root此目录本身的详细属性


[root@A /]#  ls  -lh /root     #显示/root目录下详细内容带单位


[root@A /]#  ls    /root


[root@A /]#  ls  -A  /root

[root@A /]#  du -sh  /boot    #统计目录及包含的内容的大小


###################################################

使用通配符

– * : 任意多个任意字符

– ? : 单个字符


[root@A /]# ls /etc/*.conf//表示该目录下以.conf结尾的所有文档

[root@A /]# ls /etc/*tab//

[root@A /]# ls /dev/tty*//表示该目录下所有以tty开头的文档



[root@A /]# ls /dev/tty?//表示tty开头的后面所有一位的文档

[root@A /]# ls /dev/tty??

[root@A /]# ls /dev/tty???




针对不确定的文档名称,以特殊字符表示

– [a-z]:多个字符或连续范围中的一个,若无则忽略

– {a,min,xy}:多组不同的字符串,全匹配


[root@A /]# ls /dev/tty[3-8]

[root@A /]# ls /dev/tty[7-9]


[root@A /]# ls /dev/tty{1,3,5,7,9}


[root@A /]# ls /dev/tty{1,3,5,7,9,S0}


[root@A /]# ls /dev/tty{1,3,5,7,9,S0,haha}


            请列出/dev/tty20 至 /dev/tty30  ?


[root@A /]# ls /dev/tty{2[0-9],30}

or

  /dev/tty{2?,30}

注意:[]里只能表示0-9单个字符

比如:tty[20-30]只显示tty2,tty0,tty3,tty0

#################################################

  命令的别名,简化复杂命令的输入

格式:alias 别名='定义的指令'

alias别名只是临时的,下次开机会失效


[root@A /]# ls -ld /root/

[root@A /]# myls

bash: myls: 未找到命令...


[root@A /]# alias myls='ls -ld'    #定义指令ls -ld别名为myls,指令要用''括起来

[root@A /]# myls /root/   #实际就是ls -ld /root/,因为之前就讲ls -ls定义为myls别名


[root@A /]# myls /


[root@A /]# myls /home/


[root@A /]# alias                #显示当前定义的有效别名


[root@A /]# unalias myls         #删除别名

[root@A /]# myls /root/          #执行失败

bash: myls: 未找到命令...


注意:定义别名最好不要用关键字,比如pwd,cd,poweroff等

e.g:

将pwd定义为‘hostname’的别名,则再输入pwd会执行这个别名的功能,即alias的权限远高基本命令和基本程序的,linux只会听从管理员root的权限


##################################################


  创建目录:  mkdir


[root@A /]# mkdir /root/haha /mnt/xixi /opt/hehe /tmp/lele

创建多个目录,中间用空格隔开

[root@A /]# ls /root


[root@A /]# ls /mnt


[root@A /]# ls /opt


[root@A /]# ls /tmp


[root@A /]# mkdir -p /opt/aa/bb/cc/dd

创建子目录在前面加  -p(表示连父目录一起创建)  

[root@A /]# ls /opt/


[root@A /]# ls /opt/aa


[root@A /]# ls /opt/aa/bb/


[root@A /]# ls /opt/aa/bb/cc/




  创建文本文件:  touch(文本文件)


[root@A /]# touch /opt/1.txt


[root@A /]# echo 123 > /opt/2.txt   #文件2.txt里还有123内容


[root@A /]# touch /opt/test     #test是个文件不是目录!




###############################################

rm — Remove

– 格式:rm [选项]... 文件或目录...


常用命令选项

– -r递归删除(目录连同底下的子目录一起删除)、-f:强制删除


单独rm会有提示你是否删除   y是,不敲默认否


rm其实是rm -i的别名


[root@A opt]# touch /opt/1.txt

[root@A opt]# touch /opt/2.txt

[root@A opt]# mkdir /opt/test


[root@A opt]# rm -rf  /opt/1.txt 


[root@A opt]# ls /opt


[root@A opt]# rm -rf  /opt/*

[root@A opt]# ls /opt



###################################################

mv 移动/改名

mv — Move

– 格式:  mv    原文件     目标路径


[root@A /]# echo 123 > /opt/1.txt

[root@A /]# mkdir /opt/nsd01

[root@A /]# ls /opt/


[root@A /]# ls /opt/nsd01

[root@A /]# mv /opt/1.txt   /opt/nsd01

[root@A /]# ls /opt/

[root@A /]# ls /opt/nsd01/


重命名: 路径不变的移动

[root@A /]# ls /opt/


[root@A /]# mv /opt/nsd01/  /opt/test #将opt下的nsd01移动到opt下,重命名为test,nsd01没有了

[root@A /]# ls /opt/  


[root@A /]# mv /opt/test/  /opt/haha

[root@A /]# ls /opt/

[root@A /]# mkdir /opt/test #创建test目录

[root@A /]# mv /opt/1.txt   /opt/2.txt   /root/3.txt   /opt/test/      #不管前面有多少个文件,只会将最后一个当作目标目录,将前面的移动到最后一个目录里


#############################################

cp — Copy

– 格式:cp [选项]... 原文件...      目标路径

cp命令,对象不同,选项也不同,如果对象是文件,就不需加任何选项,加 -r也没关系


常用命令选项

– -r:对象是目录,递归,复制目录时必须有此选项

– -p:保持原文件的权 限、修改时间等属性不变


cp 也支持多参数拷贝


点  .:经常和cp连用,将文件拷贝到当前目录下



[root@A /]# rm -rf /opt/*

[root@A /]# ls /opt/

[root@A /]# cp /etc/passwd   /opt/

[root@A /]# cp /etc/fstab  /opt/

[root@A /]# ls /opt/


[root@A /]# cp -r /boot/ /opt/

[root@A /]# ls /opt/


[root@A /]# cd /opt    #进入/opt

[root@A opt]# cp /etc/inittab   .   #复制/etc/inittab到/opt本身目录下 后面加 .

[root@A opt]# ls





[root@A /]# rm -rf /opt/*

[root@A /]# ls /opt

[root@A /]# cp -r /boot/ /opt/

[root@A /]# ls /opt


[root@A /]# cp -r /boot/ /opt/  #重新复制相同目录会提示是否覆盖,

       按Ctrl+c结束                                是由 -i决定的,因为cp是cp -i的别名,系统默认设置好的,    “cp -if”强制覆盖也没用,因为alias里的-i的优先级高于 -f(只有cp命令才高于-f,其他的优先级-f高于其他)


可以取消别名 unalias='cp',但是为了安全起见,最好不要取消,万一有些东西重要,不能覆盖,这时可以用 \\ 来临时取消别名定义,强制覆盖


[root@A /]# \\cp -r /boot/ /opt/   # \\:在本次操作临时取消别名的定义,强制覆盖




创建的文件都有所有者的,不会凭空而来,

Linux中查看所有者   ls -l

举例:

# ls -l  /root/

总用量 4

drwxr-xr-x. 2 root root    6 10月 28 15:42 abc

-rw-------. 1 root root 1822 10月 24 19:10 anaconda-ks.cfg

drwxr-xr-x. 2 root root    6 10月 28 16:20 haha

drwxr-xr-x. 2 root root    6 10月 24 19:26 公共

drwxr-xr-x. 2 root root    6 10月 24 19:26 模板

drwxr-xr-x. 2 root root    6 10月 24 19:26 视频

drwxr-xr-x. 2 root root    6 10月 24 19:26 图片

drwxr-xr-x. 2 root root    6 10月 24 19:26 文档

drwxr-xr-x. 2 root root    6 10月 24 19:26 下载

drwxr-xr-x. 2 root root    6 10月 24 19:26 音乐

drwxr-xr-x. 2 root root    6 10月 24 19:26 桌面


root用户的所有者都是root


而普通用户的家只属于本身普通用户

举例:

ls -l /home/

总用量 0

drwx------. 3 22    22    74 10月 25 19:58 22

drwx------. 3 a1    a1    74 10月 28 16:10 a1

drwx------. 3 a2    a2    74 10月 28 16:11 a2

drwx------. 3 b1    b1    74 10月 28 16:11 b1

drwx------. 3 hdq   hdq   74 10月 25 19:05 hdq

drwx------. 3 hdq24 hdq24 74 10月 24 18:36 hdq24

drwx------. 3 kb2   kb2   74 10月 25 20:00 kb2



如果将普通用户的目录复制到root用户下,root会将其当作自己目录下,而不是普通用户下

举例:

[root@hdq /]# cp -r /home/hdq   /opt/

[root@hdq /]# ls /opt/

boot  hdq

[root@hdq /]# ls -ld /opt/hdq

drwx------. 3 root root 74 10月 28 17:45 /opt/hdq

此时复制过来的home的hdq的所有者就是root


要将所有者的属性不变,则需要命令cp -rp进行拷贝




[root@A /]# ls -ld /home/lisi/


[root@A /]# cp -rp /home/lisi/   /mnt/  #保持属性不变进行拷贝


[root@A /]# ls -ld /mnt/lisi/





[root@hdq /]# cp etc/passwd /opt/

[root@hdq /]# ls opt/

hdq  passwd

[root@hdq /]# cp etc/passwd /opt/123   #重新拷贝一份再重命名

[root@hdq /]# ls /opt/

123  hdq  passwd




######################################################


使用vim创建/修改文件


vim文本编辑器 :可以修改文本文件的内容

-若目标文件不存在,则新建空文件夹并编辑

-若目标文件已存在,则打开此文件夹并编辑


      命令模式(只能看)     输入模式(输入)     末行模式(保存退出)



[root@A /]# vim  /opt/haxi.txt(新建此文件)  #命令模式 


     i 键               

命--------------------->输入模式(Esc 键)

式--------------------->末行模式(Esc 键)

:键



      在末行模式下  输入  :wq   保存退出

      在末行模式下  输入  :q!  不保存退出


举例:

[root@hdq /]# vim /opt/xixi.txt  #进入vim编辑界面(命令模式)

kobe bryant

huangdaoqi

....

~                                                       

~                                                       

~                                                       

~                          

[root@hdq /]# cat /opt/xixi.txt   #退出查看

kobe bryant 

huangdaoqi


##################################################