帮助中心
常用命令
        本章将介绍在使用 StartOS 系统时常用的命令,除了软件安装的命令,其余的命令也适用于其它 Linux 发行版。
        本文档所有命令将在终端(Terminal)中使用;用户通过终端向操作系统发出命令,是人机交互的接口,此后命令都将在终端执行;gnome 桌面终端打开方式:
                桌面左下角 菜单 -> 附件 -> 终端
        本文档一些约定:
          ·  在介绍中,有些以方括号 "[]" 括起来的内容表示该部分可选择作为命令的一部分,也可以省略;
          ·  诸如 "*list" 或 "name1 ..." 之类的写法,表示是某些值的组合,以逗号 "," 或空白分隔;
          ·  若是选项中有竖线 "|" 如: "-f|--force" 则表示选项 "-f" 为 "--force" 的简写形式,任选其一使用;
          ·  命令行内符号 "#" 及其开始处至行末内容为该命令注解(有标注的除外),不作为命令的一部分,使用中无需输入;

1. 软件管理
1.1 ygetypkg
  StartOS 使用自有的软件包格式,后缀名为 ypk。
联网安装软件既可使用“软件中心”,也可使用命令 yget 安装;离线安装软件使用 ypkg 

1.1.1 yget 使用方法:   
  yget 命令  [选项] 软件包名1 [软件包名2 ...]
        命令:
          --install       安装软件包及其依赖
          --reinstall     安装软件包及其依赖
          --install-dev   安装编译软件需要的依赖软件包
          --remove        卸载软件包
          --search        搜索软件包
          --show          显示软件名详细信息
          --clean         清理下载的软件安装包
          --autoremove    自动删除所有不需要的软件包
          --upgrade       系统更新,将会检查并更新所有当前系统已经安装的软件
          --update        更新软件索引列表

        选项:
          -p              配合 --install 命令使用,将模拟安装过程,并没有进行安装
          -y              自动确认安装过程,yget将不会要求用户确认安装
          -d              仅仅下载软件安装包,不进行安装
          -f|--force      强制安装,忽略所有安装过程遇到的问题
  
1.1.2 yget 使用举例:
        使用yget安装/卸载软件要求特权用户权限,因此若是当前系统以普通用户登录,则需要在 yget 命令前加 sudo 再执行,否则会提示权限错误:"Permission Denied!";         
        更新软件包索引,同步本地软件包数据。
                yget --update      # 若久不更新系统,或提示软件包下载失败时,尝试先执行此命令

        更新系统已安装的所有软件包
                yget --upgrade     # 相当于更新整个系统

        查询软件包 leafpad 详细信息
                yget --show leafpad

        安装软件 leafpad
                yget --install leafpad

        重新安装软件 leafpad
                yget --reinstall leafpad
           或者
                yget --install -f leafpad   # 强制安装,忽略 yget 不重复安装相同版本软件的特性

        卸载软件 leafpad,如果有其它软件包依赖于 leafpad,则会提示一并卸载
                yget --remove leafpad       

        查找是否有 leafpad 软件安装包
                yget --search leafpad       # 可使用模糊搜索,如leaf, pad等,都可搜索到

        安装编译软件 leafpad 时需要的依赖软件包
                yget --install-dev leafpad  # 如编译 leafpad 软件会要用到软件包 glibc 的函数库,
                                            # 此命令会自动将 glibc 软件包安装

        如果更新软件包比较多的时候,会消耗掉大量的磁盘空间,而且确定不再需要当前已经下载的软件包了,则
            需要清理
                yget --clean
1.1.3 ypkg 使用方法:
  ypkg 与 yget 的区别是仅安装离线软件包,即下载到本地的软件包。        
       ypkg 命令 [选项]  软件包名1 [软件包名2 ...]

         命令:
                -h|--help               显示帮助信息
                -C|--remove             卸载软件包
                -I|--install            安装软件包
                -c|--check              检查软件包的依赖是否满足
                -l|--list-files         列出软件包的安装文件
                -k|--depend             显示软件包的依赖
                -x|--unpack-binary      解压 ypk 软件包
                -X|--unpack-info        解压 ypk 软件包的安装信息
                -b|--pack-directory     压缩目录成 ypk 格式软件包
                -L|--list-installed     列出当前系统所有安装的软件包
                -s|--whatrequires       查找当前系统已安装的软件中, 谁依赖此软件包
                -S|--whatprovides       查找文件属于哪个软件包
                --compare-version       比较2个软件包版本

         选项:
                -f|--force              配合 --install 命令使用,强制安装
        
1.1.4 ypkg 使用举例:
        使用 ypkg 安装/卸载软件同样要求特权用户权限,如果是普通用户使用,命令前要求加上 sudo 执行。

        若不使用 StartOS 的软件服务器联网在线安装软件,使用 ypkg 安装离线软件包时,需要好 ybk 格式的软件包。
        假设已经将 leafpad 软件包下载到当前目录中,软件包文件名为:leafpad_0.8.18.1-r3-i686.ypk         
        安装软件
                ypkg -I ./leafpad_0.8.18.1-r3-i686.ypk   # 安装软件要使用软件包文件名作为参数

        卸载软件
                ypkg -C leafpad                         # 与安装不同,只需要输入软件名

        列出软件包中的文件列表。 软件安装是解压及复制文件到相应目录的过程,
            以下 命令列出软件包的文件及其将被安装到何处
                ypkg -l leafpad

        列出当前系统已经安装的软件
                ypkg -L leafpad

        查找某个文件属于哪个软件包
                ypkg -S /usr/bin/leafpad        # /usr/bin/leafpad 为需要确定属主的文件

        查找已安装的软件包,谁需要此软件包
                ypkg -s gtk+                    # 通过此命令可查看系统中依赖 gtk+ 软件包的软件
        
2. 其它常用 shell 命令:
   注:Linux 系统只乎全部命令都有 -h|--help 选项,如遇不记得某命令的选项,使用此选项随时查阅    
        man 命令手册查看(Manual):
           此 man 非彼 man,放在第一个介绍,是因为掌握此命令,以下的命令应用就不那么费劲,在不了解某命
              令时,随时查阅其手册即可,相当于该命令的 -h|--help 选项,但信息或许更详细。
           注:若 man 命令查阅不出内容,可能需要安装 man-pages 包。
           man [选项] 命令
           man 命令常用选项:
                -k keyword      以 "keyword" 作为关键词搜索帮助手册
                 num            num 为具体 1~9 的数字。man 手册分类为 9 部分,
                                  深入了解可查看 man 命令手册(man man)
           用法示例:
                man -K printf
                man    printf
                man 3  printf

        type 描述命令类型
           type 是 Bash Shell 内建命令,不是独立程序。
           type 命令名
           用法示例:
                type mv
                type -p type    # -p 选项是显示命令路径

        whereis 定位命令的执行文件,源码以及手册页文件
           whereis [选项] 命令名, ...
           whereis 命令常用选项:
                -b              仅定位二进制文件
                -m              仅定位手册文件
                -s              仅定位源码文件
           用法示例:
                whereis mv      # 查找出有关 cp 命令的执行文件,源码及手册页位置

        cd 改变工作目录(Change working Direcotry)
           cd [目录路径]  # 如果省略 目录路径,则将进入到用户家目录。也是shell 内建命令
           用法示例:
                cd /tmp
                cd ~            # 进入用户家目录,在 bash shell 中,符号"~"表示用户家目录
                cd              # 省略路径,也进入用户家目录

        cp 文件复制(copy)
           cp [选项] 源文件 目标文件
           cp 命令常用选项:
                -r      递归复制,即复制整个目录
                -v      输出复制过程信息
                -i      若目标文件已经存在,默认操作将覆盖目标文件,此选项则请求用户确认
                -n      不复制已经存在的文件
                -u      只复制比目标文件更新的文件
           用法示例:
                cp    filesrc filedst       # 复制当前目录下 filesrc 文件成 filedst
                cp -r dirsrc  dirdst        # 复制当前目录下 dirsrc 目录 到 dirdst 目录

        mv 文件移动(move), 与文件复制命令 cp 相似,不同处是操作完成后源文件将被删除;需要留意:mv 命
             令没有递归选项 -r,移动目录跟移动普通文件没有区别
           mv [选项] 源文件 目标文件
           mv 命令常用选项:
                -i      默认情况下, mv 将覆盖掉源文件,此选项则请求用户确认
                -n      不移动已存在文件
                -u      只移动比目标文件更新的文件
                -v      显示详细移动过程
           用法示例:
                mv -vi file1 file2      # 交互式移动文件。该命令同目录下移动,实际是重命名文件

        touch 创建文本文件, 如果要创建的文件已经存在,则更新文件访问及修改时间为当前时间
           touch [选项] 文件名1 ...
           用法示例:
                touch file1     # 若 file1 文件未存在,则建立名为 file1 的文本文件,
                                # 否则更新其访问时间与修改时间

        file 文件类型查看:
           Linux 中不以文件后缀名区分文件,不清楚某一文件类型时,使用此命令即可判断。
           file [选项] 文件路径
           用法示例:
                file /dev/sda
                file /dev/pts/1

        rm 删除文件或目录(Remove)
           rm [选项] 文件或目录 ...
           rm 命令常用选项:
                -f      强制模式,永不提示,也不要求用户确认
                -i      交互模式,删除文件前请求用户确认
                -r      递归删除,即删除整个目录
                -v      输出当前操作的详细信息
           用法举例:
                rm -vi  file1        # 删除文件 file1
                rm -vir dir1        # 删除目录 dir1

        find 搜索文件
           find 命令非常强大,支持正规表达式(Regular Expression),三言两语难尽述其妙,建议读者使用
                 中随时查阅其手册 man find。
           find 命令常用写法:
                find [选项] 路径 [其它选项]
           find 命令常用选项:
                -P              不跟随符号链接,即无视符号链接指向的文件
                -L              跟随符号链接
           find 命令常用的其它选项:
                -type <file_type>       查找指定的文件类型,可以是 f(普通文件),d(目录文件),
                                          c(字符设备文件),...
                -name <file_name>       查找特定文件,文件名大小写敏感
                -iname <file_name>      与 -name 相同,不过忽略大小写
                -maxdepth level         指定最多搜索的目录级别(目录层数),level 为具体的正数
                -mindepth level         指定至少要搜索的目录级别,level 为具体的正的数字
                -size [-/+] <file_size> 限定搜索文件的大小,file_size 为具体数字,单位可以
                                          是c w b k M G。数字前导的"-"或"+"号表示文件大小
                                          要“小于”或“大于”此数值,省略表示文件大小严格为此值。
                -regex pattern          使用正规表达式搜索文件,pattern 为文件名表达式
                -regextype type         限定 find 解析正规表达式的标准,type 可选值为 emacs(默认),
                                          posix-awk, posix-egrep, posix-extended
                -exec 命令 \;            执行命令。-exec 之后的内容都解析成命令的一部分,直至遇到分号 ";",
                                          因为分号在 Bash Shell 中有特殊意义,故使用斜线 "\" 转义
           用法示例:
                find . -type f                         # 找出 "." 目录(即当前目录)中所有文件
                find ~ -name .bashrc                   # 在用户目录中查找名为 ".bashrc" 的文件
                find /usr -type f -iname "*StartOS*"   
                    # 在目录 /usr 中忽略大小写找出文件名中含有 "StartOS" 的文件, 注意:该命令中使用 
                    #    "*"号时使用了双引号,这是为了防止在 Shell 解析命令行参数阶段就展开 "*" 号,  
                    #   在 *inx 类系统众多的 Shell 中,星号 "*" 被解析成匹配所有。在 Shell 解析该
                    #   命令行的时候,就解析成当前目录所有的内容了,若不使用双引号, "*" 根本没传到
                    #   find 命令中。有兴趣的读者可以去掉双引号看看搜索结果有什么变化

                find /usr -size +2k -size -2M -regextype posix-egrep -regex ".*png$"    
                    # 在 /usr 目录中,找出大小在 2kB 到 2MB 之间,并且文件名以 png 结尾的文件。

                find ~ -type f -size +40M -exec file {} \;     
                    # 找出用户目录中 40MB 以上的文件,并使用 file 命令查探其类型。
                    # "{}" 代表 find 查找到的文件

        mkdir 创建目录(Make Directory)
           如果要创建的目录已经存在,则什么也不做
           mkdir [选项] 目录名1 ...
           mkdir 命令常用选项:
                -p|--parents    必要时,建立父目录
                -m              设置所建立目录的权限
                -v              输出当前操作详细的信息
           用法举例:
                mkdir -pv a/b/c   # 将按 a/b/c 层次结构建立 a b c 共 3 个目录, 因使用了 -p 选项,
                                  #   所以在 a 或 b 目录不存在时,会自动一起建立。如果不使用 -p,
                                  #   则父目录不存在时会报错
                mkdir a b c       # 在当前目录建立 a b c 三个目录

        rmdir 删除空目录(Remove Rirecotry)
           如果是非空目录,则报错,并不删除目录
           rmdir [选项]  空目录 ...
           rmdir 常用命令选项:
                -p|--parents    如果删除目录后,父目录也成为空目录,则一并删除之
                -v              输出当前操作详细的信息
           用法举例:
                rmdir -pv a/b/c  # 删除空目录 c,之后若 b 目录也为空,则删除 b 目录,...
                rmdir a b c      # 删除 a b c 三个空目录


        cat 输出文本文件内容(Concatenate)
           如果有多个文件,则依次输出到标准输出,相当于将数个文件的内容连接
           cat [选项] 文件1 ...
           cat 常用选项:
                -n      显示行号
           用法举例:
                cat /etc/yget.conf      # 输出文件 /etc/yget.conf 的内容到标准输出

        ls 列出目录内容(List)
           ls 命令使用频率非常高,这里只是列出最常用的几个选项,想要更大限度发挥 ls 功能,请查看其帮助
               页 ls --help
           ls [选项] 文件或目录 ...
           ls 命令常用选项:
                -l              长列表格式输出文件属性
                -R              递归列出,会遍历整个目录及其子目录
               --color=[WHEN]   根据输出文件的性质(文件或目录类型等),给项目着不同的颜色。 
                                   WHEN 的值可以是'always' (默认), 'never', 'auto', 
                                   意义分别为:总是,永不,自动
                -d              列出目录自身,而不是目录下的内容
                -h              人性化输出,如文件大小以 K,M,G 的方式标出
           用法示例:
                ls              列出当前目录的内容
                ls -Rl /tmp     列出 /tmp 目录及其子目录下所有文件的详细信息

        du 对文件/目录计算大小
           du [选项]  目录或文件 ...
           du 命令常用选项:
                -h              人性化输出,文件大小以 K,M,G 的方式标示
                -s              输出各个目录/文件的总的占用空间大小
           用法示例:
                du -h  ~        # 输出用户家目录下所有文件及子目录所占用的空间大小

        df 列出文件系统使用情况
           df [选项] [文件] ...
           df 命令常用选项:
                -a              所有文件系统
                -h              人性化输出信息
                -t <fs_type>      只输出 fs_type 限定的文件系统类型
                -T              输出文件系统类型
           用法示例:
                df -ht ext4     # 只输出类型为 ext4 的文件系统
                df -T
                df -h /dev/sda1 # 只输出第一块硬盘第一个分区的使用情况

        mount 挂载文件系统
           注:可能需要特权用户权限。另外 StartOS 的文件管理器默认自动挂载所有文件系统;因此练习时命令
              有可能报错。
           mount [选项] 设备 目标目录
           mount 命令常用选项:
                -t              指定文件系统类型,如 ntfs-3g, ext4 等
                -B              挂载目录
           用法示例:
                mount                             # 列出所有已经挂载的文件系统 
                mount -t ntfs-3g /dev/sda1 /mnt   # 挂载第一块硬盘第一个分区到 /mnt 目录下
                mount -B /media /mnt              # 这里将目录 /media 挂载到 /mnt 目录下,
                                                  #  这样无论 /mnt 或 /media 都可访问得到
                                                  #  /media 目录的内容,建站时或许非常有用

        umount 卸载文件系统
           注:需要特权用户权限。
           umount [选项] 设备或目录 ...
           umount 命令常用选项:
                -f              强制卸载目录
           用法示例:
                umount  /dev/sda1                 # 卸载已经挂载的文件系统 /dev/sda1 

        top 实时显示进程列表
           top 命令一旦运行,按字母“q”键退出。
           top [选项]
           top 命令常用选项:
                -p pidlist          只显示进程号位于为 pidlist 中的进程动态
                -d num              更新间隔时间。num 为时间,单位为秒(s)
           用法示例:
                top -d 1 -p 1,2     # 只监视进程号为 1,2 的两个进程,且每秒更新一次信息

        ps 列出当前系统运行的进程
           ps 命令接受3种形式的选项,虽然强大,但也使得用户面对选项搭配不知所措,有选项是冲突的,有选项
              功能是同一的,增加了使用难度。此处介绍只是 ps 的冰山一角,更详细的内容建 议查看其使用
              手册 man ps

           ps [选项]
           ps 命令常用选项:
                -e              显示所有进程
                -a              列出除会话首进程及未分配终端的进程外的所有进程
                -u userlist     以用户有效 ID 或用户名选择列出进程,ID 或名字位于 userlist 中
                -p pidlist      只列出指定进程号位于进程号列表 pidlist 的进程, 此选项可多次使用
               --ppid pidlist   只列出进程号位于 pidlist 中的进程的子进程
                 x              列出属于当前用户的进程
                -ax             列出所有进程。此处 'x' 与 'a' 联合使用,再组合其它选项时未必可用

           用法示例:
                ps -ax
                ps  x
                ps --ppid 1      # 列出父进程为 1 的进程

        pstree 列出当前系统所有进程,以树形方式体现其层次关系
           pstree [选项]
           pstree 命令常用选项:
                -a              命令参数一并列出
           用法示例:
                pstree

        pidof 根据进程名称查找进程号(pid)
           pidof [选项] 进程名称
           pidof 命令常用选项:
                -s              pidof 会尽可能多地输出某名称的进程号,该选项限定只需要输出一个
           用法示例:
                pidof lightdm

        kill 向进程发送信号
           kill [选项] pidlist
           kill 命令常用选项:
                -l              列出信号名
                -s signal       指定要发送的信号,默认是 15
           用法示例:
                kill -s 9 <PID>  # <PID> 为具体进程号(使用 pidof 命令查找),信号 9 是杀死进程

        killall 杀死进程
           killall [选项] 进程名称
           用法示例:
                killall firefox  # 杀死所有名为 "firefox" 的进程

        ping 往网络主机发送数据包
           用于网络联通测试。
           ping [选项] 主机
           ping 命令常用选项:
                -c      默认 ping 一直运行,直到用户按下 Ctrl-C 中止,该选项则限定 ping 的次数
           用法示例:
                ping localhost    # 测试本机 TCP/IP 协议是否正常,localhost 已被配置成代表本机

        ifconfig 查看/设置网络(Interface Configure)
           注:使用 ifconfig 设置网络时需要特权用户权限,并且设置不会被保存,所有改动重启后消失。
               Linux 系统中网络接口可理解成网卡,有线网卡编号为: eth0 eth1 ...;无线网卡编号为:
               wlan0 wlan1 ...
           ifconfig [选项]  [网络接口]
           ifconfig 网络接口 [协议地址簇] 选项 地址 ...   # 一般协议地址簇可省略,使用默认值
           ifconfig 命令常用选项:
                -a              显示所有网络接口
                up              开启网络接口
                down            关闭网络接口
                netmask         设置掩码
                broadcast       设置广播地址
           用法示例:
                ifconfig -a             # 显示所有网络接口信息
                ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
                    # 以上命令设置有线网卡 IP 地址为 192.168.1.100, 子网掩码为 255.255.255.0, 
                    #    广播地址 192.168.1.255。如果子网掩码设置足以区别出广播地址,则广播地址一般可以
                    #    省略,由 ifconfig 自动配置
                ifconfig eth0 down
                ifconfig eht0 up        
                    # 练习中若配置出错造成无法上网,执行两行命令,分别关闭/开启一次,即可恢复原有设置

        netstat 查看网络状态(Network Status)
           netstat [选项]
           netstat 常用选项:
                -p      显示出进程信息
                -t      只列出与 tcp 协议有关的条目
                -u      只列出与 udp 协议有关的条目
                -n      端口,地址等使用数字而不是名称显示
                -a      显示所有
                -l      仅显示在监听状态的条目
           用法示例:
                netstat -atunp  # 显示出所有在使用 tcp 及 udp 协议的进程,及通信双方地址、端口号