linux常用shell指令学习笔记总结【更新中...】

文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。


资料仅供学习交流使用。
作者:Aliven888

1、简介

shell
是一个程序,他在用户和操作系统提供了一个面向行的可交互接口。用户在命令行中输入命令,运行在后台的shell把命令转化成指令代码发送给操作系统。
Shell提供了很多高级特性,使得用户和操作系统之间的交互变得简单而高效。

2、shell指令介绍

2.1、显示当前目录(pwd)

pwd : 显示当前所在的位置,即当前的工作目录。

格式: 
    pwd

举例:
    pwd : 显示当前的工作目录。

2.2、目录切换(cd)

cd : 指令表示切换文件夹(跳到指定的文件下)

格式: 
    cd + 空格 + 路径

举例:
    cd ~ : 切换到主目录,比如是user用户,则切到 /user下。   
    cd /test : 切换到目录test下。
    cd test :切换到当前目录下的test目录下。
    cd / : 切换到跟目录。
    cd .. : 切换到当前目录的上一级。
    cd ../.. :切换到当前目录的上二级(上上级)目录。


注意:
    在shell中, “..”表示当前目录的上一级,“.”则表示当前目录。而“~”表示用户主目录,这个符号通常在键盘 Esc 按键的下方。

2.3、列出文件(ls, dir, vdir)

ls : 打印列出当前目录下的所有文件(不包含子文件夹中的内容)

格式:
    ls + 空格 + [option] + [文件参数]

举例:
    ls : 列出当前目录下的所有文件(带后缀)以及文件夹名。
    ls A* : 列出当前目录下以字母 A 开头的所有文件(带后缀)以及文件夹。
    ls -l *.txt : 列出当前目录下后缀名是 txt 的所有文件。
    ls -F : 列出当前目录下所有文件以及文件夹,并在文件夹后面添加 /, 而文件依旧显示文件名(带后缀)。可以用于区分文件与文件夹。
    ls -l : 查看当前目录下的文件以及文件的属性(包含文件的可读写属性,编辑时间,内存大小,编辑用户等信息)。
    ls -a : 显示当前目录下的所有文件(带后缀)以及文件夹,包含隐藏的文件。

注意:
    ls 的指令是可以合并使用的,比如ls –la , ls –aF 等,功能是叠加的。

option可选参数如下:
    -A  列出所有文件,包含隐藏文件
    -l  列表形式,包含文件的绝大部分属性
    -F  显示当前目录下的文件以及文件夹(目录),并在文件夹(目录)后添加 “/”
    -R  递归显示
    --help  此命令的帮助

dir : 列出当前目录下的所有文件(带后缀)以及文件夹。

格式:
    dir

举例:
    dir : 列出当前目录下的所有文件(带后缀)以及文件夹。

vdir : 列出当前目录下所有文件以及文件夹的属性信息,相当于ls -l 。

格式:
    vdir

举例:
    vdir : 列出当前目录下所有文件以及文件夹的属性信息。

2.4、查看文本文件内容(cat, more, less)

cat : 用于查看文件的内容(通常是一个文本文件);文件的内容会一次性的显示出来,文件内容比较多时,不便于阅读。

格式:
    cat + 空格 + [option] + 文件名(带后缀)

举例:
    cat text.txt : 查看文件text.txt的内容。
    cat -n text.txt : 查看文件text.txt的内容,并在每一行前显示行号。

more : 用于查看文本文件的内容,和cat相比,more会一页一页的显示,并在当前页的最后一行显示百分比,表示当前阅读的进度。 

格式:
    more + 空格 +文件名(带后缀)

按键操作:
    Enter键 :向下滚动一行。
    空格键:向下滚动一页。
    Q键:表示退出more指令。

举例:
    more text.cpp : 用于查看text.cpp文本文件的内容。

less : 用于查看文本文件内容,和more相比功能更强大;在more指令的基础上添加了可编辑功能。

格式:
    less + 空格 + 文件名(带后缀)

按键操作:
    空格键:向下翻页。
    B 键:向上翻页。
    ↑↓←→键 : 光标向上,下,左,右移动。
    Q 键:退出less指令。

举例:
    less text.cpp : 用于查看text.cpp文本文件的内容。

2.5、文件/文件夹操作(mkdir, rmdir, touch, rm)

mkdir : 在当前目录下创建文件夹,一次可以创建1个或者多个。

格式:
    mkdir + 空格 + 文件夹名 [ + 空格 + 文件夹名 … ]

举例:
    mkdir test1 test2 : 在当前目录下创建test1 和test2文件夹。
    mkdir test/test1 : 在当前目录下的子级目录test下创建test1文件夹(注意 :此时子级目录test必须是存在的,否则该指令执行失败)。
    mkdir -p test/test1 : 在当前目录下的子级目录test下创建test1文件夹(注意 :此时如果子级目录test不存在的,否则该指令会先依次创建子级目录test,然后再创建test1)。

rmdir : 该指令用于删除目录(文件夹)。

格式:
    rmdir + 空格 + [目录(文件夹名)]

举例:
    rmdir test : 删除文件夹test。

注意:
    1、目录(文件夹)为执行该指令会失败,因此使用该指令时,需要先清除该目录下的所有文件以及文件夹。因为rmdir的这一局限性,导致该指令很少被用,反而功能更强大的rm(下面有介绍)很受欢迎。

touch : 在当前目录下创建一个或者多个文件。

格式:
    touch  + 空格 + 文件夹名 [ + 空格 + 文件夹名 … ]

举例:
    touch text1.txt text2.txt :创建文件text1.txt 和 text2.txt。

rm : 用于删除一个或者多个文件(包含目标路径下的全部文件及文件夹,是一种递归删除)。

格式:
    rm  + 空格 + [option] + 空格 + [文件/文件夹名 … ]

举例:
    rm text.txt :  删除当前目录下的text.txt文件。
    rm *.txt : 删除当前目录下以“.txt”为后缀名的全部文件。
    rm -i text.txt : 删除当前目录下的text.txt文件,在删除前,系统会询问用户是否执行删除操作,如果回答“y”表示确认删除;“n”则表示跳过该文件。
    rm -r test/ : 遍历删除当前目录下子级目录test下的全部文件和文件夹。

注意:
    1、通过该指令被删除的文件将永远的从系统中消失,而不会被放在几个被称为“回收站”的临时目录下。
    2、使用rm指令时应该格外小心些,特别是以root权限操作时。因为文件彻底删除的特性,往往会导致一些惨痛的教训。

2.6、编辑文本文件(vi, vim)

vi/vim : 编辑文本文件。

格式:
    vi/vim + 空格 + 文件

编辑操作:
    I 键 : 表示进入编辑模式。
    Page Up & Page Down : 键可以上下翻页,
    Esc键 : 退出编辑模式。
    :x :  删除当前字符;
    :dd :  删除当前行;
    :u : 恢复前一步操作;
    :p : 复制之前删除的行。
    :wq: 退出当前编辑并保存。
    :q!: 退出当前编辑,不保存本次编辑内容。

举例:
    vi/vim file.txt :  编辑当前路径下file.txt文件。
    vi/vim /bin/file.txt :  编辑当前自己下路径下file.txt文件。

2.7、查找文本文件内容(grep)

grep  : 有时候我们并不需要查文件的全内容,此时就可以根据该指令包含查询信息的一行或者多行。

格式:
    grep + 空格 + [option] + 空格 + 查询信息(条件) + 文件

举例:
    grep 1111 text.txt : 在文件中查询包含“1111”文本的一行或者多行。

2.8、移动文件/文件夹(mv)

mv : 用于移动文件或者文件夹。重名时将会覆盖目标路径下的原有文件。

格式:
    mv + 空格 + 文件/文件夹 + 空格 + 目录

举例:
    mv file.txt bin/ : 将当前目录下的file.txt文件移动到bin目录下。   
    mv test/ bin/ : 将当前目录下的test文件夹移动到bin目录下。 


注意:
    1、  如果目标目录下有同名的文件或者文件夹,将会被迁移进来的文件或者文件夹覆盖。

2.9、拷贝复制文件/文件夹(cp)

cp : 用来赋值文件或者文件夹。默认情况下cp命令会跳过文件夹(目录),此时就可以使用-r指令实现递归拷贝,将文件夹以及其目录下的内容一起拷贝到目标路径下。

格式:
    cp + 空格 + [option] + 空格 + 文件/文件夹 + 空格 + 目录

option 可选参数如下:
    -a : 是指archive的意思,也说是指复制所有的目录
    -d : 若源文件为连接文件(link file),则复制连接文件属性而非文件本身
    -f : 强制(force),若有重复或其它疑问时,不会询问用户,而强制复制
    -i : 若目标文件(destination)已存在,在覆盖时会先询问是否真的操作
    -l : 建立硬连接(hard link)的连接文件,而非复制文件本身
    -p : 与文件的属性一起复制,而非使用默认属性
    -r : 递归复制,用于目录的复制操作
    -s : 复制成符号连接文件(symbolic link),即“快捷方式”文件
    -u : 若目标文件比源文件旧,更新目标文件


举例:
    //普通拷贝复制
    cp file.txt bin/ : 拷贝复制文件file.txt到目录bin下。      
    cp -i file.txt bin/ :  考本文件file.txt到目录bin下,在真正执行拷贝前,系统会先询问,“y”表示覆盖,“n”表示跳过该文件。    
    cp -r test/ bin/ : 递归拷贝test文件夹下的内容到bin目录下。
    cp * /home : 把当前目录下的所有为隐藏文件都拷贝到home目录下。
    cp -rf /usr /root :将 /usr 文件夹复制到 /root 文件夹下(会形成: /root/usr 文件夹)。
    cp -rf /usr/** /root :将 /usr 文件夹下的全部文件复制到 /root文件夹下。 (会形成: /root/usr文件夹下的内容)


    //强制拷贝覆盖、替换文件(如果目标路径有重名的,强制覆盖)
    \cp src dest : 前面增加 反斜杠“\” , 表示强制覆盖文件。
    \cp Hello.java World.java : 将 Hello.java 文件强制替换到 World.java下。 (相当于: World.java 删除,Hello.java 文件复制过来,改名 World.java)
    \cp -rf /usr /root : 将 /usr 文件夹复制到 /root 文件夹下,遇到相同,会强制覆盖掉!
    \cp -rf /usr/** /root :将 /usr 文件夹下的全部文件复制到 /root 文件夹下,遇到相同,会强制覆盖掉!

2.10、文件/文件夹权(chmod)

chmod : 用于改变一个文件的权限,该指令使用“用户组+/-权限”的表达方式来增加或者删除对应的权限。

格式:
    chmod + 空格 + 用户组+/-权限 + 空格 + 文件

用户组:
    u : 文件属主
    g : 文件属组
    o : 其他人
    a : 所有人

权限:
    r : 读取
    w : 写入
    x : 执行
    
注意事项:
    1、用户还可以通过“用户组=权限”的规则直接设置文件的权限。例如:chmod ug=rw, a=r file.txt 表示赋予属主(u)和数组(g)的读写权限和所有人(a)的读取权限。

举例:
    chmod u+x file.txt : 增加了属主对文件file.txt的执行权限。
    chmod o=u file.txt : 直接将属主的权限赋值给其他人,赋值后,两者的权限相同。

2.11、其他基础常用操作*

su root : 切换用户到root。
svn checkout svn路径 : 下载svn中的代码到当前路(目录)径下(该过程需要录入svn代码)。
df : 查看磁盘使用情况(详细参见:截图1:df 指令)。df 命令会收集当前已经挂载的全部文件系统的一些重要的统计数据。显示的信息有 : 文件系统名、1K-blocks、已用、可用、已用%、挂载点等信息。

截图1:df 指令:

image.png

你可能感兴趣的:(linux常用shell指令学习笔记总结【更新中...】)