综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统linux 笔记(一)正文
 
系统管理—常用工具—shell命令

  • 用户常用
  • 文件或目录处理
  • 文件内容操作
  • 文件传输
  • 文件权限的设定
  • 进程控制
  • 命令管道
  • 输入输出控制
  • bash 是大多数Linux系统的缺省外壳。它克服了Bourne 外壳的缺点,又和Bourne 外壳完全兼容。

    Bash有以下的特点:
        ·补全命令行。当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序名,按Tab 键,bash将自动补全命令或程序名。
        ·通配符。在bash下可以使用通配符* 和?。*可以替代多个字符,而?则替代一个字符。
        ·历史命令。bash 能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。缓冲区的大小由HISTSIZE变量控制。当你每次登录后,home 目录下的.bash_history 文件将初始化你的历史列表缓冲区。你也能通过history 和fc 命令执行、编辑历史命令。
        ·别名。在bash下,可用alias 和unalias 命令给命令或可执行程序起别名和清除别名。这样你可以用自己习惯的方式输入命令。
        ·输入/输出重定向。输入重定向用于改变命令的输入,输出重定向用于改变命令的输出。输出重定向更为常用,它经常用于将命令的结果输入到文件中,而不是屏幕上。输入重定向的命令是<,输出重定向的命令是>。
        ·管道。管道用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。管道的命令是|。
        ·提示符。bash 有两级提示符。第一级提示符就是你登录外壳时见到的,缺省为$。你可以通过重新给ps1变量赋值来改变第一级提示符。当bash需要进一步提示以便补全命令时,会显示第二级提示符。第二级提示符缺省为>,你可以通过重新给ps2变量赋值来改变第二级提示符。一些特殊意义的字符也可以加入提示符赋值中。
        ·作业控制。作业控制是指在一个作业执行过程中,控制执行的状态。你可以挂起一个正在执行的进程,并在以后恢复该进程的执行。按下Ctrl+Z 挂起正在执行的进程,用bg命令使进程恢复在后台执行,用fg命令使进程恢复在前台执行。

        这里列出的仅仅是最常用的bash命令子集,其他不太常用,但是在某方面有特殊用途的命令会在这个技术问题的目录下专门提到(例如:ncheck命令会在文件系统维护里介绍)

     

    用户常用


    查找
        find命令用于搜索目录树,并对目录树上的所有文件执行某种操作,参数是目录名表(指出从哪些起点开始搜索),还可给出一个或多个选项,规定对每个文件执行什么操作。
        find / -print 将列出当前工作目录下的目录树的每一个文件。
        find / -user bob -print 将列出在系统中可找到的属于bob用户的所有文件。
        find /usr/bob -perm 666 -print 将列出/usr/bob目录树下所有存取许可为666的文件。若将666改为-666则将列出所有具有包含了666在内的存取许可方式的文件(如777)。
        find /usr/bob -type b -print 将列出/usr/bob目录树下所有块特别文件(c为字符特别文件)。
        find / -user root -perm -4000 -exec ls -l {} \; 是一个较复杂的命令,-exec COMMAND \;允许对所找到的每个文件运行指定的命令COMMAND。若COMMAND中含有{ },则{ }将由f i n d所找到的文件名替换。COMMAND必须以\ ;结束。
        各选项可组合使用以达到更强的功能。

    远程登陆
    语法:rlogin 主机名[-1 用户名]
    例如:
    rlogin doc 远程登录到工作站doc 中。
    rlogin doc -l user 使用user 帐号登录到工作站doc 中。

    语法:telnet 主机名或telnet IP地址
    例如:
    telnet doc
    telnet 140.109.20.251

    更改密码
    语法: passwd
    Old password: <输入旧密码>
    New password: <输入新密码(最好为6~8字,英文字母与数字混合) >
    Retype new password: <再输入一次密码>

    检查自己所属的工作组名称
    语法:groups

    查看系统中的用户
    语法: who 或finger
    语法: who
    语法: finger 用户名或finger 用户名@域名

    改变用户名
    语法: su 用户名
    例如:
    su user 进入用户user 的帐号。
    passwrod : <输入用户user 的密码>

    查看自己用户名
    语法: whoami 查看登录时的用户名。
    语法: whoami 查看当前的用户名。若已执行过su命令,则显示出此用户的用户名。

    查看当前系统上所有工作站的用户
    语法: rusers
    按Ctrl+C> 结束

    与某工作站上的用户交谈
    语法: talk 用户名@主机名或talk 用户名@ I P地址
    例如:
    1) 可先利用rusers 指令查看网络上的用户;
    2) 假设自己的帐号是u84987 ,在工作站indian 上使用,现在想要与doc 上的u84123 交谈。
    talk u84123@doc
    此时屏幕上将会出现等待画面

    在对方( u84123 )屏幕上将会出现下列信息:
    Message from Talk_Daemon@Local_host_name at xx:xx
    talk: connection requested by u84987@indian
    talk: respond with: talk u84987@indian
    此时对方(u84123) 必须执行talk u84987@indian 即可互相交谈。最后可按Ctrl + C结束。

    显示文档帮助
    语法: man 命令
    例如:
    man ls

    语法:howto 主题
    例如:
    howto man

    文件或目录处理


    列出文件或目录下的文件名。
    语法: ls [-atFlgR] [name]
    name :文件名或目录名。
    例如:
    ls 列出目前目录下的文件名。
    ls -a 列出包括以.开始的隐藏文件的所有文件名。
    ls -t 依照文件最后修改时间的顺序列出文件名。
    ls -F 列出当前目录下的文件名及其类型。以/ 结尾表示为目录名,以* 结尾表示为
    可执行文件,以@ 结尾表示为符号连接。
    ls -l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。
    ls -lg 同上,并显示出文件的所有者工作组名。
    ls -R 显示出目录下以及其所有子目录的文件名。

    改变当前工作目录
    语法:cd [name]
    name:目录名、路径或目录缩写。
    例如:
    cd 改变目录位置至用户登录时的工作目录。
    cd dir1 改变目录位置至d i r 1目录下。
    cd ~user 改变目录位置至用户的工作目录。
    cd .. 改变目录位置至当前目录的父目录。
    cd ../user 改变目录位置至相对路径user 的目录下。
    cd /../.. 改变目录位置至绝对路径的目录位置下。
    cd ~ 改变目录位置至用户登录时的工作目录。

    复制文件或目录
    语法: cp [-r] 源地址目的地址
    例如:
    cp file1 file2 将文件file1 复制成file2。
    cp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为file1。
    cp /tmp/file1 . 将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为file1。
    cp /tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为file2。
    cp -r dir1 dir2 复制整个目录。

    移动文件目录或修改名称
    语法: mv 源地址目的地址
    例如:
    mv file1 file2 将文件file1更名为file2。
    mv file1 dir1 将文件file1移到目录dir1 下,文件名仍为file1。
    mv dir1 dir2 将目录dir1 更改为目录dir2。

    建立新的目录
    语法: mkdir 目录名
    例如:
    mkdir dir1 建立一新目录dir1。

    删除目录
    语法: rmdir 目录名或rm 目录名
    例如:
    rmdir dir1 删除目录dir1,但dir1 下必须没有文件存在,否则无法删除。
    rm -r dir1 删除目录dir1及其子目录下所有文件。

    删除文件
    语法: rm 文件名
    例如:
    rm file1 删除文件名为file1 的文件。
    rm file? 删除文件名中有五个字符且前四个字符为file 的所有文件。
    rm f* 删除文件名中以f 为字首的所有文件。

    列出当前所在的目录位置
    语法: pwd

    查看文件内容
    语法: cat 文件名
    例如:
    cat file1 以连续显示方式,查看文件名file1 的内容。

    分页查看文件内容
    语法: more 文件名或cat 文件名| more
    例如:
    more file1 以分页方式查看文件名file1 的内容。
    cat file1 | more 以分页方式查看文件名file1 的内容。

    查看目录所占磁盘容量
    语法: du [-s] 目录
    例如:
    du dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。
    du -s dir1 显示目录dir1 的总容量。

    文件的链接
    同一文件,可拥有一个以上的名称,也就是把一个文件进行链接。
    语法:ln 老文件名新文件名
    例如:
    ln file1 file2 将文件file2链接至文件file1。
    语法:ln -s 老文件名新文件名
    例如:
    ln -s file3 file4 将文件file4 链接至文件file3。

    文件内容操作


    改变文件或目录的最后修改时间
    语法:touch name
    name:文件名或目录名。
    2.3.21 文件中字符串的查寻
    语法:grep string file
    例如:
    grep abc file1 寻找文件f i l e 1中包含字符串abc 所在行的文本内容。

    查寻文件或命令的路径
    语法:whereis command 显示命令的路径。
    语法:which command 显示命令的路径,及使用者所定义的别名。
    语法:whatis command 显示命令功能的摘要。
    语法:find search-path -name filename -print 搜寻指定路径下某文件的路径。
    例如:
    find / -name file1 -print 自根目录下寻找文件file1 的路径。

    比较文件或目录的内容
    语法:diff [-r] name1 name2
    name1 name2:可同时为文件名或目录名。
    例如:
    diff file1 file2 比较文件file1 与file2 内各行的不同之处。
    diff -r dir1 dir2 比较目录dir1 与dir2 内各文件的不同之处。

    文件打印输出
    用户可用.login 文件中的setenv PRINTER来设定打印机名。
    例如:
    setenv PRINTER sp 设定自sp 打印机打印资料。

    一般文件的打印
    语法:lpr [-P打印机名] 文件名
    例如:
    lpr file1 或lpr -Psp file1 自sp打印机打印文件file1。
    语法:enscript [-P打印机名] 文件名
    例如:
    enscript file3 或enscript -Psp file3 自sp打印机打印文件file3。

    troff 文件的打印
    语法:ptroff [-P打印机名] [-man][-ms] 文件名
    例如:
    ptroff -Psp -man /usr/man/man1/lpr1 以troff 格式,自sp 打印机打印lpr1 命令的使用说明。

    文件传输


    1. 拷贝文件或目录至远程工作站
    语法: rcp [-r] 源地址主机名:目的地址
    源地址文件名、目录名或路径。
    主机名工作站名。目的地址路径名称。
    例如:
    rcp file1 doc:/home/user 将文件f i l e 1拷贝到工作站doc 路径/home/user 下。
    rcp -r dir1 doc:/home/user 将目录d i r 1拷贝到工作站doc 路径/home/user 下。

    2. 自远程工作站,拷贝文件或目录
    语法: rcp [-r] 主机名:源地址目的地址
    主机名工作站名。
    源地址路径名。
    目的地址、文件名、目录名或路径。
    例如:
    rcp doc:/home/user/file1 file2 将工作站d o c路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。
    rcp -r doc:/home/user/dir1 . 将工作站doc 路径/home/user 下的目录d i r 1,拷贝到当前工作站的目录下,目录名仍为d i r 1。

    3. 本地工作站与远程工作站之间的文件传输
    必须拥有远程工作站的帐号及密码,才可进行传输工作。
    语法: ftp 主机名或ftp ip地址
    例如:
    ftp doc 与远程工作站doc 之间进行文件传输。
    Name (doc:user-name): <输入帐号>
    Password (doc:user-password): <输入密码>
    ftp> help 列出ftp 文件传输时可使用的命令。
    ftp> !ls 列出本地工作站当前目录下的所有文件名。
    ftp> !pwd 列出本地工作站当前所在的目录位置。
    ftp> ls 列出远程工作站当前目录下的所有文件名。
    ftp> dir 列出远程工作站当前目录下的所有文件名。
    ftp> dir . |more 分页列出远程工作站当前目录下的所有文件名。
    ftp> pwd 列出远程工作站当前所在的目录位置。
    ftp> cd dir1 更改远程工作站的工作目录位置至dir1 之下。
    ftp> get file1 将远程工作站的文件f i l e 1拷贝到本地工作站中。
    ftp> put file2 将本地工作站的文件f i l e 2拷贝到远程工作站中。
    ftp> mget *.c 将远程工作站中扩展文件名为c 的所有文件拷贝到本地工作站中。
    ftp> mput *.txt 将本地工作站中扩展文件名为txt 的所有文件拷贝到远程工作站中。
    ftp> prompt 切换交互式指令(使用mput/mget 时不是每个文件皆询问y e s / n o )。
    ftp> quit 结束ftp 工作。
    ftp> bye 结束ftp 工作。
    注意从PC与工作站间的文件传输也可透过在PC端的FTP指令进行文件传输,指令用法与上述指令大致相同。

     

    文件权限的设定


    改变文件或目录的读、写、执行权限
    语法:chmod [-R] mode name
    name:文件名或目录名。
    mode: 3个8位数字或rwx的组合。r-read (读),w-write (写),x-execute (执行),u-user (当前用户),g-group(组),o-other(其他用户)。
    例如:
    chmod 755 dir1 对于目录dir1,设定成任何使用者皆有读取及执行的权利,但只有所
    有者可做修改。
    chmod 700 file1 对于文件file1,设定只有所有者可以读、写和执行的权利。
    chmod u+x file2 对于文件file2,增加当前用户可以执行的权利。
    chmod g+x file3 对于文件file3,增加工作组使用者可执行的权利。
    chmod o-r file4 对于文件file4,删除其他使用者可读取的权利。

    改变文件或目录的所有权
    语法:chown [-R] 用户名name
    name:文件名或目录名。
    例如:
    chown user file1 将文件file1 改为用户user 所有。
    chown -R user dir1 将目录dir1及其子目录下面的所有文件改为用户user 所有。


    改变文件或目录工作组所有权
    语法:chgrp [-R] 工作组名name
    name:文件名或目录名
    例如:
    chgrp vlsi file1 将文件file1 的工作组所有权改为vlsi 工作组所有。
    chgrp -R image dir1 将目录dir1及其子目录下面的所有文件,改为image 工作组所有。

    进程控制


    1.查看系统中的进程
    语法:ps [-aux]
    例如:
    p s或ps -x 查看系统中,属于自己的进程。
    ps -au 查看系统中,所有用户的进程。
    ps -aux 查看系统中,包含系统内部的及所有用户的进程。

    2. 结束或终止进程
    语法:kill [-9] PID
    PID:利用ps 命令所查出的进程号。
    例如:
    kill 456或kill -9 456 终止进程号为456 的进程。

    3. 在后台执行进程的方式
    语法:命令&
    例如:
    cc file1.c & 将编译file1.c 文件的工作置于后台执行。
    语法:按下Control+Z键,暂停正在执行的进程。键入bg命令,将暂停的进程置于后台继
    续执行。
    例如:
    cc file2.c
    ^ Z
    Stopped
    bg

    4. 查看正在后台中执行的进程
    语法:jobs

    5. 结束或终止后台中的进程
    语法:kill %n
    n:利用jobs命令查看出的后台作业号
    例如:
    kill % 终止在后台中的第一个进程。
    kill %2 终止在后台中的第二个进程。

    命令管道


    语法:命令1 | 命令2 将命令1的执行结果送到命令2,做为命令2的输入。
    例如:
    ls -Rl | more 以分页方式列出当前目录及其子目录下所有文件的名称。
    cat file1 | more 以分页方式列出文件file1 的内容。

    输入输出控制


    1. 标准输入的控制
    语法:命令< 文件将文件做为命令的输入。
    例如:
    mail -s “mail test” wesongzhou@hotmail.com < file1 将文件file1 当做信件的内容,主
    题名称为mail test,送给收信人。

    2. 标准输出的控制
    语法:命令> 文件将命令的执行结果送至指定的文件中。
    例如:
    ls -l > list 将执行“ls -l” 命令的结果写入文件list 中。
    语法:命令>! 文件将命令的执行结果送至指定的文件中,若文件已经存在,则覆盖。
    例如:
    ls -lg >! list 将执行“ls - lg” 命令的结果覆盖写入文件list 中。
    语法:命令>& 文件将命令执行时屏幕上所产生的任何信息写入指定的文件中。
    例如:
    cc file1.c >& error 将编译file1.c 文件时所产生的任何信息写入文件error 中。
    语法:命令>> 文件将命令执行的结果附加到指定的文件中。
    例如:
    ls - lag >> list 将执行“ls - lag” 命令的结果附加到文件list 中。
    语法:命令>>& 文件将命令执行时屏幕上所产生的任何信息附加到指定的文件中。
    例如:
    cc file2.c >>& error 将编译file2.c 文件时屏幕所产生的任何信息附加到文件error 中。


    返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

    关于我们 ┋ 友情链接


    深圳市福田区海滨广场恒福花园恒华阁11F
    电话:0755-88305872 传真:0755-88305880
    Copyright©2005-2007 无忧电子开发网版权所有

    粤ICP备05064233号