1)基本常用命令

来源:互联网 发布:淘宝处理不公平 编辑:程序博客网 时间:2024/05/01 10:28

=========================一: 基本命令格式和文件处理命令:=======================
ls [选项] [文件或目录]
-a 显示所有文件,包括隐藏文件(相当于–all)
-l 显示详细信息
-d 查看目录属性
-h 人性化显示文件大小
-i 显示inode
//(ll就是ls -l)
//不过不同版本系统可能稍有差别

linux中不是以扩展名来区分文件类型的,不像windows,而是以文件权限来区分的
-rw-r–r–
- 文件类型(- 文件 d 目录 l 软链接文件(及快捷方式))
rw- r– r–
u所有者 g所属组 o其他人
r读 w写 x执行

//上面只列出了三种文件类型,一共有7种类型,其他四种分别是:// 块设备文件,字符设备文件,套接字文件和管道文件//这四种文件不需要普通用户操作,知道即可

1: 目录处理命令
1)建立目录:mkdir(make directories) //创建一个空文件用touch
mkdir -p [目录名]
-p 递归创建
ep: mkdir lanbo
这样就创建了一个lanbo文件夹,但是如果我想把创建的lanbo文件夹放在favorite文件夹下呢?那么这就是递归创建了
ep:mkdir -p favorite/lanbo 这样创建了两个目录,favotite和在此目录下的lanbo目录
ep:mkdir -p favorite/lanbo 创建了一个包含lanbo目录的favorite目录

2)切换目录:cd [目录] (change directoty)cd ~ 进入当前用户家目录(直接cd也是这样)cd - 进入上次所在目录cd .. 进入上一级目录cd .  进入当前目录(这条命令其实就是进入当前目录,没什么影响,但这条命令是可以运行的) pwd   打印当前所在目录 3)(只能)删除空的目录:rmdir(remove empty directories)(不过一般不这么做)rmdir [目录名]删除文件或目录:rmrm -rf [文件或目录]   选项:    -r 删除目录    -f 强制补充:rm -rf /temp/* 加×代表删除temp目录下的所有文件rm -rf /temp/ 不加表示删除temp整个目录习惯上,不管是目录还是文件,都用rm -rf 4)复制命令;cpcp [选项] [源文件诺目录][目标目录]选项:-r 复制目录-p 连带文件属性复制-d 若源文件是链接文件,则复制链接属性-a 相当于-pdr(这样目标文件和源文件一模一样,完全一样)ep:cp japan /tmp/ 后面没加文件名,就是原名复制cp japan /tmp/japan1 这样就是改名复制(date命令显示系统时间) 5)剪切命令mv [源文件] [目标目录] (不用加-r) 要改名的话mv file file2这样就行了

2: 文件处理命令
vi(或者vim) 可以打开文件
3:链接命令
ln - [源文件] [目标文件]
选项:-s 创建软链接
硬链接特征(不佳):
1)拥有相同的i节点和存储block块,可以看作是同一个文件
2)可通过i节点识别
3)不能跨分区
4)不能针对目录使用

  软链接特征:(如果要创建软链接,一定写绝对路径(除非源文件和软链接在同一目录),而硬链接不用)1)类似于windows的快捷方式2)软链接拥有自己的i节点的block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据3)lrwxrwxrwx l表示软链接        软链接文件权限都为rwxrwxrwx (其实真正的权限还得看源文件)4)修改任意文件,另一个都改变5)删除原文件,软链接文件不可用  做了下实验,比如新建一个文件a,写一些内容,然后创建一个a的软链接sa,cat a和cat sa是一样打,删除a后软链接就不可用了,但是如果再新建一个文件      夹,命名为a,输入不同的内容,结果cat sa后显示的是第二次的内容,就算没有删除原先的a,而是将其命名为aa,sa仍然是a(后来的)的软链接,即是通过文件      而不是i节点

4:常见目录的作用
/根目录
/bin命令保存目录(普通用户就可以读取的命令)
根目录和usr目录下的bin,sbin,这四个目录都是用来把保存系统命令的,区别是两个bin目录普通用户都可以执行
而sbin只有root下的超级用户才可以执行,Linux就是以这样的方式来区分权限的
/boot启动目录,启动相关文件
/dev设备文件保存目录 //没事别去动它
/etc配置文件保存目录
/home普通用户的家目录
/root超级用户的家目录
/lib系统库保存目录
/mnt系统挂载目录
/media系统挂载目录
/tmp 临时目录
/sbin命令保存目录(超级用户才能用的目录)
/proc直接写入内存的
/sys sys和proc这两个目录不要对它进行操作
/usr系统软件资源目录
/usr/bin/系统命令(普通用户)
/usr/sbin/系统命令(超级用户)
/var系统相关文档内容
/目录下的media,misc,mnt都是空目录,可以用来挂载cd,usb等设备,不过习惯于在mnt下创建cd,usb目录,其他两个不用,老式linux里只有mnt
这个目录,没有media和misc,当然随便你怎么用

!!!linux是一个严谨的内容,不是所有的目录下都可以随便存放内容的,可以在家目录root或home,以及tmp目录下随意存放内容

=========================二: 文件搜索命令=======================
1)文件搜索命令locate(优点:速度非常快)
touch可以新建文件
格式: touch cangls
这样就在当前目录新建了一个名为cangls的文件

 locate命令格式 locate 文件名  .在后台数据库按文件名搜素,搜索速度更快      /var/lib/mlocate  .locate命令所搜索的后台数据库   update  更新数据库  !当新建一个文件,比如touch cangls 然后locate cangls  结果是找不到这个文件的,因为数据库基本一天更新一次,所以一天后就可以找到了,难道`只有等一天吗? 其实可以更新数据库的,执行updatedb命令就更新了,然后就可以找到新建的文件了 如果不记得数据库目录在哪,可以locata locate,根据不同的版本,目录名可能不同,我的这个在/var/lib/mlocate 缺点:只能搜索文件名,功能单一       相比find(耗费资源多,慢,但功能强大),耗费资源少,  !!locate有一个很有意思的地方  当在/root和/tmp目录下都新建一个文件cangls时,然后updatedb,用locate只能找到/root下的cangls因为locate是按照/etc/updatedb.conf配置文件来搜索的 prune 删除,减少 PRUNE——BIND——MOUNTS="YES" #开启搜索限制 PRUNEFS= #搜索时,不搜索的文件系统 PRUNENAMES= #搜索时,不搜索的文件类型 PRUNEPATHS= #搜索时,不搜索的路径(/tmp)在这个目录下 所以上面只搜索到了/root目录下的cangls,可以打开updated.conf配置文件     

2)命令搜索命令whereis和which
a:whereis 命令名 //只能搜索系统命令,不能搜索自己创建的命令
#搜索命令所在路径及帮助文档所在位置
选项:
-b:只查找可执行文件
-m:只查找可帮助文件
whoanmi 可以知道自己是什么用户
whatis ls 就可以知道ls是干嘛的

    b:which 文件名(和whereis非常相似,只是多了可以查看别名的功能,比如ll,不过不能看帮助文档(不知道是不是系统原因,我的                 系统上不可以看到别名))        #搜索命令所在路径及别名    但不是所有的命令都可以找到目录的,比如cd命令,因为是shell自带的ps:其实我们使用的命令都是在某个目录下,要使用某条命令比如ls,是要输入绝对路径的,不然直接输入ls会提示找不到ls,卧曹, 那这样岂不是很麻烦,为此,我们可以配置环境变量,这些命令的环境变量都是配置好了的,所以我们可以直接输入ls就就以了, 可以用echo $PATH查看配置的环境变量 PATH环境变量:定义的是系统搜索命令的路径

3) find命令
find [搜索范围] [搜索条件]
#搜索文件
find / -name install.log //在/目录下按照文件名搜索,搜索文件名为”install.log”的文件
执行此命令会非常慢,系统压力很大,因为在整个根目录下搜索
#所以使用find时要避免大范围搜索,会非常耗费系统资源
#find是在系统当中搜索符合条件的文件名(必须文件名一模一样才会搜索到),如果需要匹配,使用通配符匹配,通配符是完全匹配

  linux中的通配符× 匹配任意内容 find /root -name “install.loh*” 用引号括起来find /root -name “*” 这样就是列出当前目录下所有文件,包括隐藏文件? 匹配任意一个字符[] 匹配任意一个中括号内的字符 find /root -name “ab[cd]” 就是搜索abc文件或者abd文件  find /root -iname install.log    iname就是不区分大小写  find /root -user root    -user 按照所有者搜索   find /root -nouser      -nouser 查找没有所有者的文件 //linux中,没有所有者打文件就是垃圾文件,所以一般找到这些文件后都可以手动删除,不过需要注意两种情况    //1: 由内核产生的文件(该文件直接由内核调用而不经过系统目录)有可能没有所有者:    //    比如/目录下打proc和sys这两个目录,这两个目录是内存打挂载点,内核有可能在这两个目录中进行交互,所以如果在这两个目录下找到了没有所    //    有者的文件,是正常打,不要去删除    //2:外来文件:    //  比如u盘(光盘等)拷贝一个windows系统中的文件,然后拷贝到linux中,因为windows忽略啦所有者(并不是没有)这一概念,所以这些文件也是    //  没有所有者的    除了这两种情况之外,其他的所有没有所有者的文件都是垃圾文件    find /var/log/ -mtime +10    #查找10天前修改的文件    -10   10天内修改文件     10    10天当天修改文件     +10   10天前修改文件     atime   文件访问时间     ctime   改变文件属性     mtime   修改为文件内容  find . -size 25k         .就表示在当前目录                        也可以找大小为兆字节的文件,注意的是,千字节要小写的k,而兆字节要大写的M,不然会报错                       如果不带单位,直接find . -size 25 就是搜索25个扇区大小的文件,就是25*512字节大小,所以基本都带单位     #查找文件大小为25kb的文件   -25    小于25kb的文件    25kb  等于25kb的文件    +25   大于25kb的文件     find . -inum 262422    #查找i节点是262422的文件     find /etc -size +20k -a -size -50k    #查找/etc目录下,大于20k小于50k的文件    -a and 逻辑与,    -o or  逻辑或 find /etc -size +20k -a -size -50k -exec ls -lh {} \;     #查找/etc/目录下,大于20k并小于50k的文件,并人性化显示详细信息     #-exec/-ok 命令 {} \;对搜索结果执行操作 只要用了-exec就必须在后面加{} \;  如果-exec后接rm -rf,那么就是把找到的文件删除

4) 字符串搜索命令 grep
grep [选项] 字符串 文件名
#在文件当中匹配符合条件的字符串
选项:
-i 忽略大小写
-v 排除制定字符串(即搜索不包含指定字符串打字符串)

#find命令和grep命令的区别:
*find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配

×grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配

//===========================================三:帮助命令=======================================================
1) 帮助命令man
man 命令
# 获取指定命令的帮助
ex: man ls
#查看ls的帮助

    man的级别:    1:查看命令的帮助    2:查看可被内核调用的函数的帮助    3:查看函数和函数库的帮助    4:查看特殊文件的帮助(主要是/dev目录下的文件)    5:查看配置文件的帮助    6:查看游戏的帮助    7:查看其他杂项的帮助    8:查看系统管理员可用命令的帮助    9:查看和内核相关文件的帮助#查看命令拥有哪个级别的帮助. man -f 命令     相当于:. whatis 命令#知道了命令拥有哪些等级的帮助后,可以查看相应等级的帮助例如:    man 5 passwd    man 4 null    man 8 ifconfig# 查看和命令相关的所有帮助(只要帮助文档里有该名令的关键字,就会列出来). man -k 命令相当于:. aprops 命令比如忘记了chpasswd命令,不记得怎么写,可以man -k passwd,会在列出的里面看到chpasswd2) 其他帮助命令    1:第一种: 选项帮助    . 命令 --help    *获取命令项的帮助    例如:ls --help2:第二种:shell内部命令帮助    . help shell内部命令     ×获取shell内部命令的帮助     例如 . whereis cd             #确定是否是shell内部命令          . help cd         #获取内部命令帮助3:详细命令帮助info(知道就好,太麻烦)    . info 命令    - 回车    进入子帮助页面(带有*号标记)    - u 进入上层页面    - n 进入下一个帮助小节    - p 进入下一个帮助小节    - q 退出

//===========================================三:压缩与解压缩命令=======================================================

常用压缩格式: .zip    .gz     .bz2        .tar.gz .tar.bz21: .zip格式压缩(这种格式和windows是通用的)    zip 压缩文件名 源文件        #压缩文件    zip -r 压缩文件名 源目录        #压缩目录   .zip格式解压缩    uzip 压缩文件        #解压缩.zip文件2: .gz格式压缩    . gzip 源文件        #压缩.gz格式的压缩文件,源文件会消失    gzip -c 源文件 > 压缩文件  //<就是将命令的结果写入后面的文件,比如touch a然后ls > a,就是将        #压缩为.gz格式的压缩文件,源文件保留                //ls显示的信息写入a中        //这样就做到了压缩原文件而源文件不消失的效果    gzip -r 目录(目录不会发生变化,里面文件会压缩)        #压缩目录下所有子文件,但是不能压缩目录         .gz格式解压缩(解压缩目录就加-r)    . gzip -d 压缩文件        #解压缩文件    .gunzip 压缩文件        #解压缩文件3: .bz2格式压缩    .bzip2 源文件        #压缩.bz2格式,不保留源文件    .bzip2 -k 源文件        #压缩之后保留源文件    !!注意,bzip2命令不能压缩目录    . bz2格式解压缩    bzip2 -d 压缩文件        #解压缩,-k保留压缩文件    bunzip2 压缩文件        #解压缩,-k保留压缩文件4:打包命令tar    . tar -cvf 打包文件名 原文件    . 选项:        -c: 打包        -v: 显示过程        -f:     指定打包后的文件名    ex:(jp文件夹里面有a,b两个文件)        tar -cvf jp.tar jp  //这样就会有一个打包好的jp.tar文件        gzip jp.tar     //然后再压缩为gzip格式(或者bzip2格式),这样就解决了不能压缩目录的问题   解打包命令    . tar -xvf 打包文件名    . 选项:        -x 解打包//如果每次都要打包,再压缩,那岂不是太麻烦了,所以就有.tar.gz和.tar.bz2这两种格式5: .tar.gz压缩格式    . 其实.tar.gz格式是先打包为tar格式,再压缩为.gz格式    . tar -zcvf 压缩包名.tar.gz 原文件   //默认压缩在当前路径,后面可以加上文件从而压缩多个文件    . 选项:        -z: 压缩为.tar.gz格式    . tar -zxvf 压缩包名.tar.gz    . 选项:        -x: 解压缩.tar.gz格式6:  .tar.bz2压缩格式    . tar -jcvf 压缩包名.tar.bz2 原文件    //默认压缩在当前路径,后面可以加上文件从而压缩多个文件    . 选项:        -j: 压缩为.tar.bz2格式    . tar -jxvf 压缩包名.tar.bz2    . 选项:        -x: 解压缩.tar.bz2格式.如果要将.tar.gz和.tar.bz2格式解压缩到指定位置,后面加-C 位置    //C是大写    . 也可以查看内容,不解压缩        -t 查看内容,不解压缩(test,相当于测试一下)    ep: tar -jtvf 压缩包名.tar.bz2  //就会看到压缩包里面的文件

//===========================================三:关机和重启命令=======================================================

1: shutdown命令(这条命令在关机之前会保存数据,比较安全)

. shutdown [选项] [时间]   选项:    -c 取消前一个关机命令    -h 关机    -r 重启ep: shutdown -h 06:20    //按下回车后终端会卡住(当然以实际情况为准,不同系统会不同),直到到了06:20后自动关机,可以按Ctrl+c中断命令    //如果想让命令后台执行,后面加个& (shutdown -h 06:20 &)时间如果是now就是马上,比如:shutdown -h nowdata可以显示时间

2: 其他关机命令
. halt
. poweroff
. init 0
//这三个命令都不是太安全,不会像shutdown一样在服务器关机和重启时正确保存数据,知道就好

3: 其他重启命令
. reboot //如果不想敲长的shutdown -h now,可以用reboot
. init 6 //尽量不要用

4: 系统运行级别
.0 关机
.1 单用户 //可以想象成windows的安全模式
.2 不完全多用户,不含NFS服务
.3 完全多用户 //字符界面
.4 未分配
.5 图形界面
.6 重启

. runlevel    #查询系统运行级别    执行该命令后,出现了N 5        N代表NULL,第一个代表进入当前级别之前在哪个级别,第二个是当前所在级别,5是图形界面,N表示之前是"空的",所以这就表示系统一开机就进入了图形界面,想想,如果既装了字符界面又装了图形界面,那么开机默认是进入哪个级别呢?可以查看配置文件,cat/etc/inittab,不过我的系统不在这里

5:退出登录命令logout

//===========================================四:其他常用命令=======================================================

1:挂载命令
挂载: 在linu中所有的存储设备(u盘,光盘,硬盘等),必须在挂载之后才能正常使用

1): 查询与自动挂载    . mount       #查询系统中已经挂载的设备    . mount -a       #根据配置文件/etc/fstab的内容,自动挂载2):命令挂载格式    . mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点    选项:        -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3,ext4,iso9660等文件系统        -o 特殊选项:可以指定挂载的额外选项    //选项参数看图片       可以创建一个脚本文件:touch hello.sh    然后用vim编写脚本,内容是:        #!/bin/bash //必须这样开头        echo "Hello shell"  //输出一段信息    然后给权限:  chmod 755 hello.sh     就生成了一个可执行的脚本文件,./hello.sh就可以执行了    mount -o remount,noexec /home   //remount表示重新挂载,使选项生效,noexec表示不执行,                    //挂载到home分区(我实验时挂载到home分区失败,所以就挂载到根分区,成功了,结果/下命令都执行不了了,除了自带的cd命令)    不要轻易修改!!!否则就是自己给自己挖坑,这时候就算是root,可执行文件也不可执行,万一挂载的是/目录,那就惨了,命令都执行不了了,重装系统吧    注意一下,这里直接写home,没有写设备文件名也是可以的,因为home分区已经自动挂载好了3):挂载光盘    mkdir /mnt/cdroom      #建立挂载点    mount -t iso9660 /dev/cdrom /mnt/cdrom/      #挂载光盘     //光盘的文件系统就是iso9660,没什么好说的,设备名可以写/dev/sr0(dev/cdrom是dev/sr0的快捷方式,即软连接,需要系统完全启动之后才会起作用,因此建议写     ///dev/sr0)    -t iso9660也是可以省略的    挂载光盘后,可能会出现:        /dev/sr0 is write-protected, mounting read-only    这不是报错,因为挂载后默认是读写的,而光盘是只读的,这里被迫挂载为只读,所以会有提示,挂载并没有失败     windows中光盘要取出来,直接按键就弹出了,不过linux中,要先卸载光盘,不然再怎么按也弹不出来(其实windows也一样,只不过可以取出来,数据可能丢失而已,而                   linux更严谨,直接无法弹出)4):卸载命令    umount 设备文件名或挂载点        umount /mnt/cdrom5): 挂载u盘    fdisk -l     # 查看u盘设备文件名    mount -t vfat /dev/sdb1 /mnt/usb/   //插入u盘后,执行fdisk -l就会看到u盘设备文件名,一般来说是sdb1,以实际为准       //上面的vfat文件系统相当于windows的fat32系统(这种系统基本淘汰,因为不支持单个文件大小超过4g),这里就是指定u盘的文件系统为fat32    注意:Linux默认是不支持NTFS文件系统的,所以,移动硬盘是不能直接在linux中挂载的,要想挂载,两种方法:        1:重新编译linux内核,使得支持NTFS文件系统        2:下载NTFS-3g,安装,之后就默认支持NTFS,不过就算这样也是只读的,linux与windows到底不是一个系统,兼容性不太好,要在linux和windows之间共享文件                  一般都是网络传输

2:查看登录用户信息

.w 用户名# 命令输出:  USER:登录的用户名  TTY:登录终端  FROM: 从哪个IP地址登录  LOGIN@: 登录时间  IDLE: 用户闲置时间  JCPU: 指的是和该终端连接的所有进程占用的时间,这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间  PCPU:是指当前进程所占用的时间  WHAT:当前正在运行的命令. who 用户名 # 命令输出:    - 用户名    - 登录终端    - 登录时间(登录来源IP地址). last      //查询当前登录和过去登录的所有用户信息    # last命令默认是读取/var/log/wtmp文件数据    # 命令输出        - 用户名        - 登录终端        - 登录IP        - 登录时间        - 退出时间(在线时间). lastlog   //查看所有用户的最后一次登录时间    # lastlog命令默认是读取/var/log/lastlog的文件内容    # 命令输出:        - 用户名        - 登录终端        - 登录IP        - 最后一次登录时间
0 0