美文网首页ShellShell那些事儿shell
一、基本的bash shell命令

一、基本的bash shell命令

作者: Miridescent | 来源:发表于2017-08-08 21:58 被阅读208次

    一点建议,学习的时候把命令行工具开着,随时敲,验证,别光看,没用
    涉及到得命令:

    命令 作用
    cd 目录
    pwd 显示当前所在文件的绝对路径
    ls 显示当前目录下的文件和目录
    touch 创建一个文件
    cp 复制文件
    ln 符号链接
    mv 从命名文件或将文件移动到另外一个位置
    rm 删除文件
    mkdir 创建目录
    rmdir 删除一个目录
    file 查看文件类型
    cat 查看文件内容

    1.遍历目录

    cd 进入某一目录
    其后跟的参数有两种形式,绝对文件路径和相对文件路径
    绝对和相对的区别就是看是否以/开头
    .表示当前目录
    ..表示当前目录的父目录
    cd ..就会返回当前目录的父目录

    pwd 显示当前所在文件的绝对路径

    2.文件和目录列表

    ls 显示当前目录下的文件和目录
    ls后面可以跟多个参数,分别代表不同的操作

    参数 作用
    -F 可以区分文件和目录
    -a 显示隐藏文件
    -R 递归显示当前目录下的子目录中的文件
    -l 以列表的形式显示子文件(会附带一些文件的信息)

    *注意:ls后跟的参数不一定是一个,可以同时跟多个参数
    例如:ls -a -lls -al表示的是一样的意思,以列表形式显示文件,并同时显示隐藏文件

    ls -l后面还可以跟参数,用于过滤输出列表

    代码 作用
    ls -l my_dir 匹配名字是my_dir的文件
    ls -l my_?ir ?替代任意位置的单个字符
    ls -l my_* *匹配零个或多个字符(*也可以放在中间,例如ls -l my_*r
    ls -l my_[abcd]ir []匹配固定位置中出现的字符([]中可以用范围标示,例如ls -l my_[a-z]ir
    ls -l my_[!a]ir !去除给位置不需要的内容

    列出的只是简单常用的,还有很多参数没有列出

    3.处理文件

    touch 创建一个文件,该文件是一个空文件,大小是0
    例: touch test_one

    cp复制文件 后面会跟两个参数——源对象和目标对象
    例:cp test_one test_two
    复制后的文件名字是test_two

    如果单纯写cp test_one test_two可能会覆盖原来的test_two文件,这时候可以加参数-i
    例:cp -i test_one test_two
    这样就会弹出选项,询问你是否覆盖已有的test_two文件

    第二个参数还可以跟一个路径名
    例:cp -i test_one ~/Desktop/shell学习/ 会在指定的文件下复制一个名字为test_one的文件
    注意路径最后的/表示shell学习是一个目录,缺失/会产生不必要的错误
    另外这个路径也可以使用相对路径,不是一定要绝对路径

    将指定路径的文件复制到当前目录下,这时候就用到了前面提到的.
    例:cp -i ~/Desktop/shell学习/test_one . 将test_one复制到当前目录下

    递归复制整个目录下的所有内容
    例:cp -R ~/Desktop/shell学习/ ~/Desktop/shell学习2 将shell学习中的所有文件都复制到了shell学习2目录下

    *注意 cp命令也支持通配符? *
    *注意 使用命令行工具的时候使用tab键进行自动补全
    *注意 使用命令行工具的时候使用上下键进行查找已经输入过得命令语句

    文件链接,方便在系统上维护同一个文件的多个副本,有两种方式:
    符号链接 ln -s test_one sl_test_one
    下面是操作结果

    ➜  shell学习 ls
    test_one test_two
    ➜  shell学习 ln -s test_one sl_test_one
    ➜  shell学习 ls -l
    total 8
    lrwxr-xr-x  1 musong  staff  8  8  8 14:55 sl_test_one -> test_one
    -rw-r--r--  1 musong  staff  0  8  8 11:59 test_one
    -rw-r--r--  1 musong  staff  0  8  8 11:59 test_two
    

    产生的是一个实实在在的文件sl_test_one,当你打开sl_test_one文件的时候,实际打开的是test_one文件,但是sl_test_one和test_one是两个不同的文件
    使用命令ls -i *test*可以查看文件在inode编号,不同的文件编号是不同的

    ➜  shell学习 ls -i *test*
    11296164 sl_test_one 11292136 test_one    11292173 test_two
    

    硬链接 ln test_one sl_test_one1
    查看生成的sl_test_one1文件的inode编号

    ➜  shell学习 ls -i *test*
    11296164 sl_test_one  11292136 sl_test_one1 11292136 test_one     11292173 test_two
    

    发现sl_test_one1和test_one的编号是相同的,这说明硬链接其实是同一个文件
    *注意 我们一般不要cp连接

    mv 从命名文件或将文件移动到另外一个位置
    例: mv test_two test_three将文件test_two改名为test_three
    mv test_three ~/Desktop/shell学习2将文件test_three移到shell学习2目录下
    承接上面的例子
    mv test_three ~/Desktop/shell学习/test_two(注意:该操作是在shell学习2目录下)将shell学习2目录下的test_three文件移回shell学习目录同时将文件名字改为test_two

    *注意 在mv命令中也可插入-i参数,用来判断相同名字文件是否存在
    *注意 mv的第一个参数也可以是路径

    rm 删除文件
    例:rm test_two删除test_two文件
    *注意 rm命令中也可插入-i参数,用来提出是否删除的警告
    *注意 rm命令中也可使用通配符? *等同时删除多个数据
    *注意 bash shell不存在回收站之类的东西,删除则彻底删除

    4.处理目录

    创建目录 mkdir
    例:mkdir dir1创建一个目录dir1
    同时创建多个目录层级要用参数 -p
    例:mkdir -p dir2/sub_dir1/sub_sub_dir1
    *注意 可以用ls -R查看目录层级关系

    删除目录 rmdir
    例:rmdir dir1删除一个目录dir1
    *注意 rmdir只能删除空目录,当目录中有文件的时候,上面的命令是不会起作用的

    rmdir -rf dir1删除一个目录以及目录中的所有文件
    *注意 该条命令是很危险的,该删除没有任何提示

    rmdir -ir dir1删除一个目录以及目录中的所有文件
    *注意 -ir-fr命令的不同是-ir会逐条提示你是否删除目录下的子文件,但是这样带来的问题就是,当目录下有很多文件的时候,要逐条同意删除
    *注意 这两个命令中的rR效果是一样的,都是递归的意思

    5.查看文件内容

    查看文件类型 file
    例:file dir2查看dir2的文件类型(该命令适用于文件和目录)

    查看文件内容 cat
    例:cat 文本文件.rtf查看名字为文本文件.rtf文本的内容

    例:cat -n 文本文件.rtf查看名字为文本文件.rtf文本的内容,并为所有行加上行号

    例:cat -d 文本文件.rtf查看名字为文本文件.rtf文本的内容,并为所有文本行加上行号

    more 命令 查看大型文件
    cat命令比的好处就是more命令支持通过回车键或者空格键逐行查看,而cat命令不支持该功能
    *注意 退出按q

    less 命令 查看大型文件
    less命令是more的升级版,提供更多的命令集,具体的命令集自行了解
    *注意 可以用man less命令查看具体命令集
    *注意 man命令查看各种shell命令的详细说明

    查看部分文件 tail (查看文件尾)
    例:tail 文本文件.rtf查看最后10行文件内容
    *注意 可以通过参数-n修改显示的行数,tail -n 2 文本文件.rtf显示最后两行内容
    *注意 可以在-之后直接接数字,省略n,上面的语句等同于tail -2 文本文件.rtf

    查看部分文件 head (查看文件头)
    headtail

    这里介绍的知识一些常用的基本命令,还有很多功能没有具体介绍

    相关文章

      网友评论

      • Satelens:楼主写的真好,很详细,希望继续加油写出更好的文章
        iRacoon:楼主哥哥写的真好,非常适合我这种刚入门的小白学习,楼主哥哥可不可以留一个联系方式呢?

      本文标题:一、基本的bash shell命令

      本文链接:https://www.haomeiwen.com/subject/znjtrxtx.html