一、系统操作命令

1、关机命令:halt

2、重启命令:reboot

3、增加用户 useradd [-dgGmMNs] 用户名

-d<登入目录> 指定用户登入时的目录。

-g<群组> 初始群组。

-G<群组> 非初始群组。

-m 自动创建用户的家目录。

-M 不要创建用户的家目录。

-N 不要创建以用户名称为名的群组。

-s 指定用户登入后所使用的shell。

4、给新用户设置密码 passwd [-k] [-l] [-u [-f]] [-d] [-S] [用户名]

必要参数:

  • -d 删除密码
  • -f 强制执行
  • -k 更新只能发送在过期之后
  • -l 停止账号使用
  • -S 显示密码信息
  • -u 启用已被停止的账户
  • -x 设置密码的有效期
  • -g 修改群组密码
  • -i 过期后停止用户账号

选择参数:

  • --help 显示帮助信息
  • --version 显示版本信息

5、用户的sudo权限

用root编辑 vi /etc/sudoers

在文件的 root        ALL=(ALL)      ALL 的下面添加:
               用户名    ALL=(ALL)      ALL

之后该用户就可以用sudo命令

6、主机名操作 hostname

1)查看主机名 :hostname

2)修改主机名:hostname 主机名(重启后无效)

7、修改主机名(永久有效)

vi /etc/sysconfig/network

8、修改ip

1)ifconfig eth0 IP地址 (重启后无效)

2)vi /etc/sysconfig/network-scripts/ifcfg-eth0(永久有效)

9、列出文件系统的整体磁盘使用量:df
        df [-ahikHTm]   [目录或文件名]
        -a:列出所有的文件系统,包括系统特有的/proc等文件系统;
        -k:以KB的容量显示各文件系统
        -m:以MB的容量显示各文件系统
        -h:以人们较易阅读的GB、MB、KB等格式自行显示
        -H:以M=1000K 替代M=1024K 的进位方式
        -T:连同该分区的文件系统名称(例如ext3)也列出
        -i:不用硬盘容量,而已inode的数量来显示
    df      //将系统内所有的文件系统列出来,在Linux下如果df没有加任何参数,那么默认会将系统内所有的(不含特殊内存内的文件系统与swap)都以1KB的容量列出来。
    df -h    //将容量结果以易读的容量格式显示出来
    df -aT    //将系统内所有的特殊文件格式及名称都列出来
    df -h /etc        //将/etc下面的可用的磁盘容量以易读的容量格式显示,这样就可以知道某个目录下还有多少容量可以使用了
    df -ih             //将目前各个分区当中可用的inode数量列出来

8、评估文件系统的磁盘使用量(常用于评估目录所占容量):du
        du [-ahskm] 文件或目录名称
        -a:列出所有的文件与目录容量,因为默认仅统计目录下面的文件量而已
        -h:以人们较易读的容量格式(G/M)显示
        -s:列出容量而已,而不列出每个各别的目录占用容量
        -S:不包含子目录下的总计,与-s有点差别
        -k:以KB列出容量显示
        -m:以MB列出容量显示
    du        //列出当前目录下的所有文件容量,但仅会显示目录容量(不含文件)
    du -a    //除了显示目录容量,还会显示文件容量
    du  -sm  ./*     //检查当前目录下面每个目录所占用的容量,可检查某个目录下那个子目录占用最大的容量

9、挂载 mount

$ mount /dev/hda2 /home
第一个叁数是与包括文件系统的磁盘或分区相关的设备文件。
第二个叁数是要mount到的目录。

10、卸载挂载点 umount

$ umount /dev/hda2
$ umount /usr
参数可以是设备文件或安装点

二、文件操作命令

1、目录
1).    代表此层目录
2)..   代表上一层目录
3)-    代表前一个工作目录
4)~  代表“目前用户身份”所在的主文件夹
5)~account 代表account这个用户的主文件夹(account是个帐号名称)

2、 切换目录:cd
      cd 【相对路径或绝对路径】

3、 显示目前所在的目录:pwd
pwd [-P]
      -P 如果是连接文件,会不以连接文件的数据显示,而是显示正确的完整路径,即获取连接文件的真正路径。

4、 查看文件与目录:ls
ls [-aAdfFhilnrRSt] 目录名称
ls [--color={never,auto,always}] 目录名称
ls [--full-time] 目录名称
    -a:全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)
    -d:仅列出目录本身,而不是列出目录内的文件数据(常用)
    -f:直接列出结果,而不进行排序(ls默认会以文件名排序)

    -F:根据文件、目录等信息给予附加数据结构,例如:*:代表可执行文件,/:代表目录,=:代表socket文件,|:代表FIFO文件

    -h:将文件容量以人类较易读的方式(例如GB,KB等)列出来

    -l:列出长数据串,包含文件的属性与权限等数据(常用)

    -r:将排序结果反向输出,例如:原本文件名由小到大,反向则为由大到小

    -R:连同子目录内容一起列出来,等于该目录下的所有文件都会显示出来

    -S:以文件容量大小排序,而不是用文件名排序

    -t:依时间排序,而不是用文件名

    --color=never:不要依据文件特性给予颜色显示

    --color=always:显示颜色

    --color=auto:让系统自行依据设置来判断是否给予颜色

    --full-time:以完整时间模式(包含年、月、日、时、分)输出

    --time={atime,ctime}:输出访问时间或改变权限属性时间(ctime),而非内容更改时间(modification time)  

5、 切换目录:cd
      cd 【相对路径或绝对路径】

6、 新建新目录:mkdir
mkdir [-mp]  目录名称
      -m : 配置文件的权限,mkdir -m 711 test1;
      -p  : 帮助你直接将所需要的目录(包含上层目录)递归创建起来,如果没有这个参数,只能一层一层建立目录,mkdir -p /home/a/b/c/d.

7、 删除“空”的目录:rmdir
rmdir [-p] 目录名称

8、 移除文件或目录:rm
rm [-fir] 文件或目录

    -f:就是force的意思,忽略不存在的文件,不会出现警告信息

    -i:互动模式,在删除前会询问用户是否操作

    -r:递归删除。最常用在目录的删除。但是很危险!!!

9、移动文件或目录,或更名:mv
mv [-fiu] source destination
 mv [options] source1,source2,source3,.....,directory

10、修改文件时间或创建新文件:touch

touch 文件名称:如果该文件不存在,创建一个空文件,如果已经存在修改时间

11、复制文件或目录:cp

cp [-adfilprsu] 源文件(source) 目标文件(destination)

cp [option] source1,source2,source3, ... directory

    -a:相当于-pdr 的意思

    -d:若源文件为连接文件的属性(link file),则复制连接文件属性而非文件本身

    -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)

    -r:递归持续复制,用于目录的复制行为(常用)

    -i:若目标文件(destination)已经存在时,  在覆盖时会先询问操作的进行(常用)

    -l:进行硬链接(hard link)的连接文件创建,而非复制文件本身

    -s:复制成为符号链接文件(symbolic link),即“快捷方式”文件

    -u:若destination 比source旧才更新destination
    注意:如果源文件有两个以上,则最后一个目的文件一定要是“目录”才行

12、编辑文件内容:vi

vi 文件名称:

1、首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑内容

2、按“i”键进入编辑模式,此模式下键入的都是文件内容。

3、编辑完成后,按esc键回到一般模式。

4、按:进入“底层命令行模式”,输入wq命令,回车即可。

常用的快捷键如下:

a :在光标的后一位插入

A:在该行的最后插入

I:在该行的最前面插入

gg:直接跳到文件的首行

G:直接跳到文件的末行

dd:删除光标所在行,如果5dd,则表示一次性删除光标后5行

yy:复制当前行,如果3yy,则复制当前光标后3行

p:粘贴

v:进入字符选择模式,选择完成后按y复制,按p粘贴

ctrl+v:进入块选择模式,选择完成后按y复制,按p粘贴

shift+v:进入行选择模式,选择完成后按y复制,按p粘贴

查找替换(在底行命令行模式进行)

%s/sad/hello 效果:查找文件中所有的sad并替换为hello

/you   效果:查找文件中所有的you,并定位到第一个you,按n定位到下一个you

13、直接查看文件内容:cat(concatenate)

cat [-AbEnTv]

    -A:相当于-vET的整合参数,可列出一些特殊字符,而不是空白而已

    -n:打印出行号,连同空白行也会有行号,与-b的参数不同

    -b:列出行号,仅针对非空白行做行号显示,空白行不标行号

    -E:将结尾的断行字符$显示出来

    -T:将[Tab]按键以^I显示出来

    -v:列出一些看不出来的特殊字符

14、可翻页查看(只向后):more,按q停止

15、可翻页查看(可向前或向后):less,按q停止

16、取出前面几行:head

    head [-n number] 文件

    head -n 20 /home/test

    head -n -100 /home/test           //不打印后面100行的数据,只是显示前面的数据

17、取出后面几行:tail

    tail [-n number] 文件

    tail -n 20 /home/test

    tail -n +100 /home/test          //只是列出100行以后的数据 

18、查看文件类型:file

19、从文件系统寻找特定的文件:find

find [PATH] [option] [action]
    参数:
    1)与时间有关的参数:共有-atime、-ctime、-mtime,以-mtime说明
            -mtime n:n为数字,意义为n天之前的“1天之内”被更改过的文件
            -mtime +n:列出在n天之前(不含n天本身)被更改过的文件名
            -mtime -n:列出在n天之内(含n天本身)被更改过的文件名
            -newer file:file为一个存在的文件,列出比file还要新的文件名
        find / -mtime 0        //将过去系统上24小时内有改动(mtime)的文件列出,数字0代表目前的时间,所以是从现在开始到24小时前
        find / -mtime 3        //列出3天前的24小时内有改动的文件
        find /etc -newer /etc/passwd     //寻租/etc目录下的文件,如果文件日期比/etc/passwd新的就列出来,可用于分辨两个文件之间的新旧关系
    2)与用户或用户组名有关的参数:
            -uid n:n为数字,这个数字是用户的帐号ID,即UID ,这个UID 是记录在/etc/passwd里面与帐号名称对应的数字
            -gid n:n为数字,这个数字是用户组名的ID,即GID,这个GID 记录在/etc/group中
            -user name:name为用户帐号名称,例如dmtsai
            -group name:name为用户组名,例如users
            -nouser:寻找文件的所有者不存在/etc/passwd的人
            -nogroup:寻找文件的所有用户组不存在与/etc/group的人
        find /home -user vbird      //查找/home下面属于bird用户的文件,可将属于某个用户的所有文件都找出来
        find / -nouser                        //查找系统中不属于任何人的文件
    3)与文件权限及名称有关的参数:
            -name filename:查找文件名为filename的文件
            -size [+-]SIZE:查找比SIZE 还要大(+)或小(-)的文件。这个SIZE的规格有:c:代表byte,k:代表1024bytes。所以,要找比50KB还要大的文件,就是“-size +50k”
            -type TYPE:查找文件的类型为TYPE的,类型主要有:一般正规文件(f)、设备文件(b,c)、目录(d)、连接文件(l)、socket(s)及FIFO(p)等属性
            -perm mode:查找文件权限"刚好等于"mode的文件,这个mode为类似chmod的属性值,举例来说,-rwxr-xr-x的属性为0755
            -perm -mode:查找文件权限“必须要全部包含mode的权限”的文件,举例来说,我们要查找-rwxr--r--,即0744的文件,使用-perm -0744,当一个文件的权限为-rwxr-xr-x,即755时,也会被列出来,因为-rwxr-xr-x的属性已经包括了-rwxr--r--的属性 了
            -perm +mode:查找文件权限“包含任一mode的权限”的我文件,举例来说,我们查找-rwxr-xr-x,即-perm +0755,但一个文件是-rw-------也会被列出来,因为它有-rw......的属性存在
        find / -name passwd     //找出文件名为passwd的这个文件
        find /var -type s              //找出/var目录下文件类型为socket的文件名
        find / -perm +0755       //查找文件当中含有-rwxr-xr-x中的任一属性
    4)其他可进行的操作:
            -exec command:command为其他命令,-exec后面可再接其他的命令来处理查找到的结果
            -print:将结果打印到屏幕上,这个操作是默认值
        find /etc -name passwd -exec cat {} \;         //将找到文件名为passwd的文件作为命令的输入

19、分析一行信息,若匹配想找的数据则将该行取出来:grep
        grep [-acinv] [--color=auto] '查找字符串' filename
        -a:将binary文件以text文件的方法查找数据
        -c:计算找到“查找字符串”的次数
        -i:忽略大小写的不同,所以大小写视为相同
        -n:顺便输出行号
        -v:顺便输出行号
        --color=auto:可以将找到的关键字部分加上颜色显示
        history | grep 'ls'

20、排序命令:sort
        sort [-fbMnrtuk] [file or stdin]
        -f:忽略大小写的差异,例如A与a视为编码相同
        -b:忽略最前面的空格符部分
        -M:以月份的名字来排序,例如JAN,DEC等的排序方法
        -n:使用“纯数字”进行排序(默认是以文字类型来排序的)
        -r:反向排序
        -u:就是uniq,相同的数据中,仅出现一行代表
        -t:分隔符,默认是用[Tab]键来分隔
        -k:以那个区间(field)来进行排序的意思
        cat /etc/passwd | sort
        cat /etc/passwd | sort -t ':' -k 3

21、连接文件:ln
1)硬连接或实际连接:hard link
        ln /etc/crotab .  
2)符号连接,也即是快捷方式:symbolic link
        ln -s /etc/crotab1 crotab2

22、将同一行里面的数据进行分解,取出想要的数据:cut
        cut -d'分隔字符' -f fields     //用于分隔字符
        cut -c 字符范围                        //用于排列整齐的信息
        -d:后面接分隔字符,与-f一起使用
        -f:依据-d的分隔字符将一段信息切割成为数据,与-f取出第几段的意思
        -c:以字符(characters)的单位取出固定字符区间
        echo $PATH | cut -d ':' -f 5            //将PATH变量取出,以:为分割符,取出第五个路径
        echo $PATH | cut -d ':'  -f 3,5        //将PATH变量取出,以:为分割符,取出第3到第5个路径
        export | cut -c 12-                //将export输出的信息取得第12字符以后的所有字符串,但是在处理多空格相连的数据时会比较复杂

23、统计文件的字、行、字符:wc
        wc [-lwm]
        -l:仅列出行
        -w:仅列出多少字(英文单字)
        -m:多少字符
        cat /etc/man.config | wc      //输出三个数字分别为行、字数、字符数

24、数据的替换、删除、新增、选取工具:sed

sed [-nefr] [动作]
1)参数:
        -n:使用安静(silent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者操作)才会被列出来
        -e:直接在命令模式上进行sed的动作编辑
        -f:直接将sed的动作写在一个文件内,-f filename则可以在filename内的sed动作
        -r:sed的动作支持的是扩展型正则表达式的语法(默认是基础正则表达式语法)
        -i:直接修改读取的文件内容,而不是由屏幕输出

2)动作说明:[n1  [,n2]] function
        n1,n2:不见得会存在,一般代表选择进行动作的行数,举例来说,如果我的动作是需要在10到20行之间进行的,则“10,20[动作行为]”
function常用的参数:
        a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)
        c:整行替换,c的后面可以接字符串,这些字符串可以替换n1,n2之间的行
        d:删除,因为是删除,所以d后面通常不接任何参数
        i:插入,i的后面可以接字符串,而这些字符串会在新的一行出现(目前上一行)
        p:打印,也就是将某个选择的数据打印出来,通常p会与参数sed -n一起运行
        s:部分替换,可以直接进行替换的工作,通常这个s的动作可以搭配正则表达式!例如1,20s/old/new/g
3)以行为单位的新增/删除功能
        nl /etc/passwd | sed '2,5d'        //将/etc/passwd的内容列出并且打印行号,同时,将第2~5行删除
4)在第二行后面(即加在第3行)加上“drink tea?“字样
        nl /etc/passwd | sed '2a drink tea?'
5)在第二行前面(即加在第2行)插入“drink tea?“字样        
        nl /etc/passwd | sed '2i drink tea?'
6)在第二行后面加入两行字,例如"Drink tea or " 与"drink beer?"
        -> nl /etc/passwd | sed '2a Drink tea or  \  
        -> dirnk beer? '        
7)以行为单位的替换与显示功能
        nl /etc/passwd | sed '2,5c No 2-5 number'       //将第2-5行的内容替换成为“No 2-5 number”
8)仅打印部分数据
        nl /etc/passwd | sed -n '5,7p'     //-n表示只会打印处理后的数据,如果不加-n,那处理后的数据会打印两次
9)部分数据的查找并替换的功能
        sed 's/要被替换的字符串/新的字符串/g'
    hadoop@hadoop-ThinkPad:~$ /sbin/ifconfig eth0
    eth0    Link encap:Ethernet  HWaddr b8:88:e3:3c:89:f9  
                  inet addr:10.130.26.21  Bcast:10.130.26.127  Mask:255.255.255.128
                  inet6 addr: fe80::ba88:e3ff:fe3c:89f9/64 Scope:Link
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  RX packets:143999 errors:0 dropped:1 overruns:0 frame:0
                  TX packets:88285 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:1000 
                  RX bytes:39104286 (39.1 MB)  TX bytes:39602666 (39.6 MB)

        sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'            //从ifconfig文件中抽取出本机的ip地址
        cat /etc/man.config | grep 'MAN' | sed 's/#.*$//g' | sed '/^$/d'

25、数据处理工具:awk
        sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个“字段”来处理,awk相当适合处理小型的数据处理。
        awk '条件类型1{动作1}  条件类型2{动作2} ... '  filename
        awk 主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键
        awk的处理流程是:
            1)读入第一行,并将第一行的数据填入$0,$1,$3等变量当中,$0代表一整行数据
            2)依据条件类型的限制,判断是否需要进行后面的动作
            3)做完所有的动作与条件类型
            4)所还有后续的“行”的数据,则重复上面1~3的步骤,直到所有的数据都读完为止
        awk的内置变量:
                NF  :    每一行($0)拥有的字段总数
                NR  :   目前awk所处理的是“第几行”数据
                FS    :   目前的分隔字符,默认是空格键
        awk运算符:
                >:大于      <:小于       >=:大于或等于      <=:小于或等于      ==:等于     !=:不等于
        last -n 5 | awk '{print $1 "\t" $3}'      //打印第一列和第3列
        last -n 5 | awk '{print $1 "\t lines: " NR "\t columes:" NF}'        //打印第一列,第几行,每一行的列数
        cat /etc/passwd | awk  '{FS=":"}  $3 < 10  {print  $1  "\t"  $3}'       //分隔为:,打印第三列小于10以下的数据,并且仅列出帐号与第三列
        新建一个文件:pay.txt
                    Name    1st     2nd     3th
                    VBird   23000   24000   25000
                    DMTsai  21000   20000   23000
                    Bird2   43000   42000   41000
        第一行只是说明,所以第一行不要进行加总(NR==1时处理)
        第二行以后就会有加总的情况出现(NR》=2以后处理)
       hadoop@hadoop-ThinkPad:~$ cat pay.txt | awk 'NR==1{printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} 
                                                                         NR>=2{total=$2+$3+$4 
                                                                           printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}'
                          Name        1st        2nd        3th      Total
                          VBird      23000      24000      25000   72000.00
                          DMTsai      21000      20000      23000   64000.00
                          Bird2      43000      42000      41000  126000.00

26、文件比较工具:diff
        diff [-bBi] from-filr to-file

三、文件权限操作

1、权限格式解读

drwxr-xr-x

d:标识节点类型(d:文件夹 , -:文件  ,l:连接)

r:表示可读,w:表示可写,x:表示可执行

第一组rwx:表示这个文件的拥有着对它的权限,可读可写可执行

第二组r-x:表示这个文件所属组对它的权限,可读不可写可执行

第三组r-x:表示其他用户对它的权限,可读不可写可执行

2、修改文件权限

u,g,o表示user,group,other这3种身份的权限,a表示all,即全部的身份。+加入,-除去,=设置。r读,w写,

chmod g-rx 文件名称,表示去除该文件所属组的读执行权限

chmod o-rw 文件名称,表示该文件去除其他用户的读写权限

chmod u+x 文件名称,表示给该文件所属用户增加可执行权限

可以用数字表示

x执行,4读,2写,1执行

chmod 664 文件名称,表示将该文件权限改为 rw-rw-r--

3、修改文件所属用户和组

chown [-cfhrv]... [所有者][:[组]] 文件,其操作权限一般为管理员。

参数:

-c 显示更改的部分的信息

-f 忽略错误信息

-h 修复符号链接

-R 处理指定目录以及其子目录下的所有文件

-v 显示详细的处理信息

-deference 作用于符号链接的指向,而不是链接文件本身