• linux命令(用户)


    一.常用命令

    1.1 ls

    ls 命令是 linux 下最常用的命令,ls 命令就是 list 的缩写。
    ls 用来打印出当前目录的清单。如果 ls 指定其他目录,那么就会显示指定目录里的文件及文件夹清单。
    通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。

    (1)命令格式
    ls [选项] [目录名]
    (2)常用参数
    参数 描述
    -a –all 列出目录下的所有文件,包括以 . 开头的隐含文件
    -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
    -d –directory 将目录象文件一样显示,而不是显示其下的文件
    -h –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
    -t 以文件修改时间排序

    eg:
    列出/home目录下的所有文件
    ls -a /home
    列出/home 文件夹下的所有文件和目录的详细资料
    ls -a -l /home
    ls -al /home


    1.2 cd
    cd 命令是 change directory 的缩写,切换当前目录至指定的目录。

    (1)命令格式
    cd [目录名]

    (2)常用范例
    从当前目录进入系统根目录:
    cd /
    从当前目录进入父目录:
    cd ..
    从当前目录进入当前用户主目录:
    cd ~
    从当前目录进入上次所在目录:
    cd -

    1.3 pwd
    pwd 命令查看“当前工作目录”的完整路径。pwd 命令是 Print Working Directory 的缩写。

    (1)命令格式
    pwd [选项]

    (2)常用参数
    参数 描述
    -P 显示实际物理路径,而非使用连接(link)路径
    -L 当目录为连接路径时,显示连接路径

    (3)常用范例
    显示当前目录所在路径:
    pwd
    显示当前目录的物理路径:
    pwd -P
    显示当前目录的连接路径:
    pwd -L

    另:常用快捷方式:
    Tab: 这个键是最有用的键了,也是敲击概率最高的一个键。因为当你打一个命令打一半时,它会帮你补全的。不光是命令,当你打一个目录时,同样可以补全。
    Ctrl + C:这个是用来终止当前命令的快捷键,当然你也可以输入一大串字符,不想让它运行直接Ctrl + C,光标就会跳入下一行。 

    Ctrl + D: 退出当前终端,同样你也可以输入exit。
    Ctrl + L: 清屏,使光标移动到第一行。
    Ctrl+S 暂停当前程序,暂停后按下任意键恢复运行
    Ctrl+Z 将当前程序放到后台运行,恢复到前台为命令fg
    Ctrl+A 将光标移至输入行头,相当于Home键
    Ctrl+E 将光标移至输入行末,相当于End键
    Ctrl+K 删除从光标所在位置到行末
    Alt+Backspace 向前删除一个单词
    Shift+PgUp 将终端显示向上滚动
    Shift+PgDn 将终端显示向下滚动

    显示历史输入命令:方向上键↑

    通配符:
    * 匹配 0 或多个字符
    ? 匹配任意一个字符
    [list] 匹配 list 中的任意单一字符
    [!list] 匹配 除list 中的任意单一字符以外的字符
    [c1-c2] 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]
    {string1,string2,...} 匹配 string1 或 string2 (或更多)其一字符串
    {c1..c2} 匹配 c1-c2 中全部字符 如{1..10}

    使用man 命令查看帮助文档
    eg: man ls

    二.用户及用户组管理
    1.多用户多任务
    Linux 是一个多用户、多任务的操作系统。
    有时可能是很多用户同时用同一个系统,但并不所有的用户都一定都要做同一件事,所以这就有多用户多任务之说;
    需要注意的是:多用户多任务并不是大家同时挤到一接在一台机器的的键盘和显示器前来操作机器,多用户可能通过远程登录来进行,比如对服务器的远程控制,只要有用户权限任何人都是可以上去操作或访问的;

    2.用户角色区分
    用户在系统中是分角色的,在Linux系统中,由于角色不同,权限和所完成的任务也不同;值得注意的是用户的角色是通过UID和识别的,特别是UID;在系统管理中,系统管理员一定要坚守UID 唯一的特性;
    root 用户:系统唯一,是真实的,可以登录系统,可以操作系统任何文件和命令,拥有最高权限;
    虚拟用户:这类用户也被称之为伪用户或假用户,与真实用户区分开来,这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以添加虚拟用户;
    普通真实用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员自行添加的;

    3.用户和用户组概念
    通过前面对Linux 多用户的理解,我们明白Linux 是真正意义上的多用户操作系统,所以我们能在Linux系统中建若干用户(user)。比如我们的同事想用我的计算机,但我不想让他用我的用户名登录,因为我的用户名下有不想让别人看到的资料和信息(也就是隐私内容)这时我就可以给他建一个新的用户名,让他用我所开的用户名去折腾,这从计算机安全角度来说是符合操作规则的;
    用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

    用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
    一对一:某个用户可以是某个组的唯一成员;
    多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
    一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
    多对多:多个用户对应多个用户组,并且几个用户可以是归属相同的组;其实多对多的关系是前面三条的扩展;理解了上面的三条,这条也能理解;

    4.用户和用户组的相关配置

    1)与用户(user)相关的配置文件;
    /etc/passwd 注:用户(user)的配置文件;
    /etc/shadow 注:用户(user)影子口令文件;

    2)与用户组(group)相关的配置文件;
    /etc/group 注:用户组(group)配置文件;
    /etc/gshadow 注:用户组(group)的影子文件;

    5.查看用户信息
    --使用 cat /etc/passwd 查看用户信息(这里 cat 命令用于读取指定文件的内容并打印到终端输出)

    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

    可以看到/etc/passwd的内容由":"分成了7段,每个字段的具体含义是:
    1)用户名(如第一行中的root就是用户名),代表用户账号的字符串。用户名字符可以是大小写字母、数字、减号(不能出现在首位)、点以及下划线,其他字符不合法。虽然用户名中可以出现点,但不建议使用,尤其是首位为点时,另外减号也不建议使用,因为容易造成混淆。
    2)存放的就是该账号的口令,为什么是’x’呢?早期的unix系统口令确实是存放在这里,但基于安全因素,后来就将其存放到/etc/shadow中了,在这里只用一个’x’代替。
    3)这个数字代表用户标识号,也叫做uid。系统识别用户身份就是通过这个数字来的,0就是root,也就是说你可以修改test用户的uid为0,那么系统会认为root和test为同一个账户。通常uid的取值范围是0~65535,0是超级用户(root)的标识号,1~499由系统保留,作为管理账号,普通用户的标识号从500开始,如果我们自定义建立一个普通用户,你会看到该账户的标识号是大于或等于500的。
    4)表示组标识号,也叫做gid。这个字段对应着/etc/group 中的一条记录,其实/etc/group和/etc/passwd基本上类似。
    5)注释说明,该字段没有实际意义,通常记录该用户的一些属性,例如姓名、电话、地址等等。不过,当你使用finger的功能时就会显示这些信息的。
    6)用户的家目录,当用户登录时就处在这个目录下。root的家目录是/root,普通用户的家目录则为/home/username,这个字段是可以自定义的,比如你建立一个普通用户test1,要想让test1的家目录在/data目录下,只要修改/etc/passwd文件中test1那行中的该字段为/data即可。
    7)shell,用户登录后要启动一个进程,用来将用户下达的指令传给内核,这就是shell。Linux的shell有很多种sh, csh, ksh,tcsh,bash等,而Redhat/CentOS的shell就是bash。查看/etc/passwd文件,该字段中除了/bin/bash外还有/sbin/nologin比较多,它表示不允许该账号登录。如果你想建立一个账号不让他登录,那么就可以把该字段改成/sbin/nologin,默认是/bin/bash。


    --使用 /etc/shadow 查看用户信息

    root:$1$8bVwhufy$7qyCLbpUfG9YzvkRrIB.m1::0:99999:7:::
    bin:*:17110:0:99999:7:::
    daemon:*:17110:0:99999:7:::
    adm:*:17110:0:99999:7:::

    /etc/shadow文件和/etc/passwd类似,用":"分割成了9段,各个字段含义如下:

    1)用户名,跟/etc/passwd对应。
    2)用户密码,这个才是该账号的真正的密码,不过这个密码已经加密过了,但是有些黑客还是能够解密的。所以为了安全,该文件属性设置为600,只允许root读写。
    3)上次更改密码的日期,这个数字是这样计算得来的,距离1970年1月1日到上次更改密码的日期,例如上次更改密码的日期为2012年1月1日,则这个值就是365*(2012-1970)+1=15331。
    4)要过多少天才可以更改密码,默认是0,即不限制。
    5)密码多少天后到期。即在多少天内必须更改密码,例如这里设置成30,则30天内必须更改一次密码,否则将不能登录系统,默认是99999,可以理解为永远不需要改。
    6)密码到期前的警告期限,若这个值设置成7,则表示当7天后密码过期时,系统就发出警告告诉用户,提醒用户他的密码将在7天后到期。
    7)账号失效期限。你可以这样理解,如果设置这个值为3,则表示:密码已经到期,然而用户并没有在到期前修改密码,那么再过3天,则这个账号就失效了,即锁定了。
    8)账号的生命周期,跟第三段一样,是按距离1970年1月1日多少天算的。它表示的含义是,账号在这个日期前可以使用,到期后账号作废。
    9)作为保留用的,没有什么意义。


    6.用户相关命令
    2.6.1 useradd 添加用户
    语法:  useradd [-u UID] [-g GID] [-d HOME] [-M] [-s] username
    -u 自定义UID
    -g 使其属于已经存在的某个GID
    -d 自定义用户的家目录
    -M 不建立家目录
    -s 自定义shell

    eg: useradd -M test1
    你会发现,创建test1时,加上了-M选项后,在/etc/passwd文件中test1那行的第六字段依然有/home/test1,K可是在home中没有此文件夹。

    2.6.2 userdel 删除用户
    语法:userdel [-r] username
    -r 选项的作用是删除用户时,连同用户的家目录一起删除。

    eg:userdel -r test1

    2.6.3 passwd username 创建/修改一个用户的密码
    等创建完账户后,默认是没有设置密码的,虽然没有密码,但该账户同样登录不了系统。只有设置好密码后方可登录系统。
    为用户创建密码时,为了安全起见,请尽量设置复杂一些。你可以按照这样的规则来设置密码:a. 长度大于10个字符;b. 密码中包含大小写字母数字以及特殊字符(*&等);c. 不规则性(不要出现root, happy, love,linux,123456,111111等等单词或者数字);d. 不要带有自己名字、公司名字、自己电话、自己生日等。

    【passwd 后不跟用户名,是修改当前用户密码】

    2.6.4 usermod 修改用户信息
    语法:usermod [-option] username
    -c<备注>  修改用户帐号的备注文字。
    -d登入目录>  修改用户登入时的目录。
    -e<有效期限>  修改帐号的有效期限。
    -f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。
    -g<群组>  修改用户所属的群组。
    -G<群组>  修改用户所属的附加群组。
    -l<帐号名称>  修改用户帐号名称。
    -L  锁定用户密码,使密码无效。
    -s<shell>  修改用户登入后所使用的shell。
    -u<uid>  修改用户ID。
    -U  解除密码锁定。

    eg:修改test1 的uid为2000,群组id为1000
    usermod -u 2000 -g 1000 test1
    修改test1 的用户名为zhiyou1
    usermod -l zhiyou1 test1


    2.6.5 su/sudo 切换用户
    --查看用户 who am i
    smile pts/0 2017-09-24 05:55 (:0)
    1)打开当前伪终端的用户的用户名
    2)伪终端.伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端, pts/0 后面那个数字就表示打开的伪终端序号
    3)当前伪终端的启动时间。

    --查看用户名
    whoami
    echo $LOGNAME


    --切换用户
    语法: su [-] username Linux系统中,有时候普通用户有些事情是不能做的,除非是root用户才能做到。这时就需要临时切换到root身份来做事了。
    使用su - 就可以切换成root身份,前提是知道root的密码。

    使用su时,后面可以跟”-”也可以不跟,普通用户su不加username时就是切换到root用户,当然root用户同样可以su到普通用户。

    [root@localhost ~]# su - smile
    Last login: Sun Sep 24 06:49:48 PDT 2017 on pts/0
    [smile@localhost ~]$ exit
    logout
    [root@localhost ~]# su smile
    [smile@localhost root]$ pwd
    /root

    加”-“后会连同用户的环境变量一起切换过来。su test 后虽然切换到了test用户,但是当前目录还是切换前的/root目录,然后当用su - test时切换用户后则到了test的家目录/home/test。当用root切换普通用户时,是不需要输入密码的。这也体现了root用户至高无上的权利。

    用su是可以切换用户身份,如果每个普通用户都能切换到root身份,如果某个用户不小心泄漏了root的密码,那岂不是系统非常的不安全?没有错,为了改进这个问题,产生了sudo这个命令。使用sudo执行一个root才能执行的命令是可以办到的,但是需要输入密码,这个密码并不是root的密码而是用户自己的密码。默认只有root用户能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的,即,使用visudo命··令去编辑相关的配置文件/etc/sudoers。如果没有visudo这个命令,请使用” yum install -y sudo”安装。

    另:finger 注:查看用户信息工具 id 注:查看用户的UID、GID及所归属的用户组 chfn 注:更改用户信息工具
    7.查看用户组相关信息
    在Linux里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。

    --在终端使用cat /etc/group

    root:x:0:
    bin:x:1:
    daemon:x:2:
    sys:x:3:
    adm:x:4:
    tty:x:5:
    disk:x:6:
    lp:x:7:

    /etc/group文件中的内容共有四个字段:
    1)groupname组名
    2)password 组密码,上面的 password 字段为一个 x 并不是说密码就是它,只是表示密码不可见而已。
    3)GID 组id
    4)user_list 本字段可以为空;如果字段为空表示用户组为GID的用户名;

    2.7.1 groups 显示用户所属的用户组
    eg:查看smile用户所在的用户组
    groups

    2.7.2 groupadd 添加分组
    语法:groupadd groupname
    -g GID:指定GID
    -r:系统组

    2.7.3 groupdel 删除分组
    语法:groupdel groupname

    2.7.4 groupmod 修改用户组信息
    语法: groupmod groupname
    -g GID
    -n NEW_GRP_NAME

    2.7.1 id username 查看用户信息



    三.文件命令
    pwd 打印出当前所在目录
    cd 进入到某一个目录(./当前目录 ../当前目录的上一级目录)

    3.1 mkdir
    mkdir命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。
    mkdir 命令是 make directory 的缩写。

    (1)命令格式
    mkdir [选项] 目录

    (2)常用参数
    参数 描述
    -m --mode=模式 设定权限<模式>
    -p --parents 可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录
    -v --verbose 每次创建新目录都显示信息

    (3)常用范例
    递归创建多个目录:
    mkdir -p smile/test
    创建权限为 777 的目录:
    mkdir -m 777 zhang
    创建目录显示信息:
    mkdir -vp zhang/test

    3.2 rmdir
    rmdir命令用来删除空目录。当目录不再被使用时,或者磁盘空间已到达使用限定值,就需要删除失去使用价值的目录。利用rmdir命令可以从一个目录中删除一个或多个空的子目录。该命令从一个目录中删除一个或多个子目录,其中dirname佬表示目录名。如果dirname中没有指定路径,则删除当前目录下由dirname指定的目录;如dirname中包含路径,则删除指定位置的目录。删除目录时,必须具有对其父目录的写权限
    rm 命令是 remove dirctory的缩写。

    (1)命令格式
    rmdir[选项] 目录

    (2)常用参数
    参数 描述
    -p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除; --ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;
    --help:显示命令的帮助信息;
    --version:显示命令的版本信息。


    3.3 rm
    rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
    rm 命令是 remove 的缩写。

    (1)命令格式
    rm [选项] 文件或目录

    (2)常用参数
    参数 描述
    -f --force 忽略不存在的文件,从不给出提示
    -i --interactive 进行交互式删除
    -r --recursive 指示 rm 将参数中列出的全部目录和子目录均递归地删除
    -v --verbose 详细显示进行的步骤

    (3)常用范例
    删除文件,系统会先询问是否删除:
    rm 1.txt
    强行删除文件,系统不再提示:
    rm -f 1.txt
    删除后缀名为.txt 的所有,删除前逐一询问
    rm -i *.txt

    3.4 mv
    mv 命令功能是用来移动文件或更改文件名,是 Linux 系统下常用的命令,经常用来备份文件或者目录。mv命令根据第二个参数类型(是目标文件还是目标目录),决定执行将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv 命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv 命令将各参数指定的源文件均移至目标目录中。
    mv 命令是 move 的缩写。

    (1)命令格式
    mv [选项] 源文件或目录 目标文件或目录

    (2)常用参数
    参数 描述
    -b --back 若需覆盖文件,则覆盖前先行备份
    -f --force 如果目标文件已经存在,不会询问而直接覆盖
    -i --interactive 若目标文件已经存在时,就会询问是否覆盖
    -u --update 若目标文件已经存在,且源文件比较新,才会更新
    -t --target 该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后

    (3)常用范例
    将文件 1.txt 重命名为 a.txt:
    mv 1.txt a.txt
    将文件 a.txt 移动到 zhang 目录下,如果文件存在,覆盖前会询问是否覆盖:
    mv -i a.txt ../zhang/a.txt
    【注意目标文件是否是文件夹,以及文件夹是否存在】

    3.5 cp
    cp 命令用来复制文件或者目录,是 Linux 系统中最常用的命令之一。一般情况下,shell 会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i 参数。但是如果是在 shell 脚本中执行 cp 时,没有-i 参数时不会询问是否覆盖。这说明命令行和 shell 脚本的执行方式有些不同。
    cp 命令是 copy 的缩写

    (1)命令格式
    cp [选项] 源文件 目录
    cp [选项] -t 目录 源文件

    (2)常用参数
    参数 描述
    -t --target-directory 指定目标目录
    -i --interactive 覆盖前询问(使前面的 -n 选项失效)
    -n --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效)
    -s --symbolic-link 对源文件建立符号链接,而非复制文件
    -f --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
    -u --update 使用这项参数之后,只会在源文件的修改时间较目的文件更新时,或是对应的目的文件并不存在,才复制文件

    (3)常用范例
    对文件 hello.txt 建立一个符号链接 1.txt:
    cp -s hello.txt 1.txt
    将 test1 目录下的所有文件复制到 test2 目录下,覆盖前询问:
    cp -i text1/* test2
    将 test1 目录下的最近更新的文件复制到 test2 目录下,覆盖前询问:
    cp -iu test1/* test2

    3.6 cat
    cat命令的功能是将文件或标准输入组合输出到标准输出。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
    cat 命令是 concatenate 的缩写。

    (1)命令格式
    cat [选项] [文件]

    (2)常用参数
    参数 描述
    -A --show-all 等价于 -vET
    -b --number-nonblank 对非空输出行编号
    -e 等价于 -vE
    -E --show-ends 在每行结束处显示 $
    -n --number 对输出的所有行编号,由 1 开始对所有输出的行数编号
    -s --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
    -t 与 -vT 等价
    -T --show-tabs 将跳格字符显示为 ^I
    -u (被忽略)
    -v --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

    (3)常用范例
    把 123.txt 的文件内容加上行号后输入1.txt 这个文件里:
    cat -n 123.txt > 1.txt
    将 123.txt 的文件内容反向显示:
    tac 123.txt

    【tac 是将 cat 反写过来,所以它的功能就跟 cat 相反,cat 是由第一行到最后一行连续显示在屏幕上,而 tac 则是由最后一行到第一行反向在屏幕上显示出来。】

    3.7 nl
    nl 命令在 linux 系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号。其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。
    nl 命令是 number of lines 的缩写。

    (1)命令格式
    nl [选项] [文件]
    (2)常用参数
    参数 描述
    -b 指定行号指定的方式,主要有两种:
    -b a 表示不论是否为空行,也同样列出行号(类似 cat -n)
    -b t 如果有空行,空的那一行不要列出行号(默认值)
    -n 列出行号表示的方法,主要有三种:
    -n ln 行号在屏幕的最左方显示
    -n rn 行号在自己栏位的最右方显示,且不加 0
    -n rz 行号在自己栏位的最右方显示,且加 0
    -w 行号栏位的占用的位数

    (3)常用范例
    把 123.txt 的文件内容加上行号后显示,空行不加行号
    nl -b t 123.txt


    3.8 more
    more 命令,功能类似 cat ,cat 命令是将整个文件的内容从上到下显示在屏幕上。 more 命令会一页一页的显示,方便使用者逐页阅读,而最基本的指令就是按空白键(space)往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more 命令从前向后读取文件,因此在启动时就加载整个文件。

    (1)命令格式
    more [选项] 文件

    (2)常用参数
    参数 描述
    +n 从笫 n 行开始显示
    -n 定义屏幕大小为 n 行
    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
    -c 从顶部清屏,然后显示
    -d 提示“Press space to continue,’q’ to quiet”,禁用响铃功能
    -p 通过清除窗口而不是滚屏来对文件进行换页,与-c 选项相似
    -s 把连续的多个空行显示为一行
    -u 把文件内容中的下画线去掉

    (3)常用操作
    符号 描述
    = 输出当前行的行号
    q 退出 more
    enter 向下查看一行
    空格键 向下滚动一屏
    b 返回上一屏

    3.9 less
    less 工具也是对文件或其它输出进行分页显示的工具,应该说是 linux 正统查看文件内容的工具,功能极其强大。
    less 作用跟more一样,但比more好在可以上翻,下翻。空格键同样可以翻页,而按”j”键可以向下移动(按一下就向下移动一行),按”k”键向上移动。在使用more和less查看某个文件时,你可以按一下”/” 键,然后输入一个word回车,这样就可以查找这个word了。如果是多个该word可以按”n”键显示下一个。另外你也可以不按”/”而是按”?”后边同样跟word来搜索这个word,唯一不同的是,”/”是在当前行向下搜索,而”?”是在当前行向上搜索。

    3.10 head
      head后直接跟文件名,则显示文件的前十行。如果加 –n 选项则显示文件前n行。

    3.11 tail
    tail 和head一样,后面直接跟文件名,则显示文件最后十行。如果加-n 选项则显示文件最后n行。

    【一般使用cat和tail命令查看日志信息】

    四、文件操作
    4.1 touch 命令
    使用touch命令可以创建一个新的空白文件
    语法: touch 文件
    4.2 vim 命令
    vi: Visual Interface 可视化接口
    vim: VI iMproved VI增强版

    全屏编辑器,模式化编辑器

    【vim模式:】
    正常模式
    正常模式主要用来浏览和修改文本内容的
    一般的,打开Vim都是正常模式。在任何模式下,只要按下 Esc 键就可以返回正常模式。
    插入模式
    插入模式则用来向文本中添加内容的,按下i,a,o,都可以切换到插入模式
    可视模式
    可视模式相当于高亮选取文本后的普通模式。
    命令模式(底行模式)
    命令模式则多用于操作文本文件(而不是操作文本文件的内容),例如保存文件;或者用来改变编辑器本身的状态,例如设定多栏窗口、标签或者退出编辑器……

    模式切换:
    使用vim命令打开文件,或者点击esc都可进入正常模式
    点击键盘i,a,o都可进入编辑模式
    点击键盘v,可进入可视化模式
    点击键盘esc或者ctrl+C,推出编辑模式,进入命令模式

    命令模式(末行模式关闭文件):
    :q 退出
    :wq 保存并退出
    :q! 不保存并退出
    :w 保存
    :w! 强行保存
    :wq --> :x

  • 相关阅读:
    NTDLL未文档化函数RtlGetNtVersionNumbers获取操作系统版本
    FormatMessage与GetLastError配合使用,排查windows api调用过程中的错误
    [翻译]:怎样从C/C++代码中对C#进行回调
    解决libcurl7.50.3在windows XP SP3 VC++ 6.0下编译报错 unresolved external symbol __imp__IdnToAscii@20 unresolved external symbol __imp__IdnToUnicode@20
    Windows XP SP3 VC6环境下成功编译openssl-0.9.8zh
    Windows XP SP3下编译安装openssl-1.1.0b
    Ubuntu关闭自动更新
    IDEA中分析JVM堆导出文件heapdump-1591244153347.hprof文件
    Linux环境下非root用户通过防火墙nat将端口转发到8080端口
    Linux自定义java程序运行脚本的命令
  • 原文地址:https://www.cnblogs.com/dslnn/p/10404635.html
Copyright © 2020-2023  润新知