一、vim的应用和设置

Ctrl+Alt+t(这个是打开终端的指令,打开终端才能进行指令安装对吧!。。。嗯嗯)

1、在(64位)ubuntu16.4里面安装vim编辑器的指令:

sudo apt install vim

vi /vim        这个是进去vi/vim编辑器的指令(这两个区别:https://blog.csdn.net/qq_37896194/article/details/80369432)

2、vim的设置

输入 i      -->编辑模式
按esc      -->命令模式

(1)按esc 后输入

:wq       保存并退出
            :q!         强制退出不保存(已经编辑状态)
            :q          直接退出(未编辑咋状态)

(2)复制的相关指令:
         按esc 后输入

yy         复制一行
             2yy       复制两行
             yw        复制一个单词(空格隔开的算一个单词)
             2yw      复制两个单词(空格隔开的算一个单词)
             y^         复制到行首(光标到行首这一段会被复制)
             y$         复制到行末(光标到行尾这一段会被复制)

=====》按p粘贴

(3)剪切的相关指令:
        按esc后输入

dd         剪切一行
             2dd       剪切两行
             dw        剪切一个单词
             2dw      剪切两个单词
             d^         剪切到行首
             d$         剪切到行末

x           剪切单个字符
  =====》按p粘贴

(4)其他指令:

按esc 后输入          
                u                                               撤销
                ctrl+r                                         恢复撤销(只能回复撤销的内容)

/hello                                         表示查找字符---》+回车+n   --》表示查找下一个
         
                :%s/oldstring/newstring          替换字符串
         
                ctrl +d                                        向下翻页
                ctrl +u                                        向上翻页
        
                G                                               表示跳的文件末尾
                gg                                              表示跳的文件末开头

二、linux简介

1、LINUX系统目录结构简介

Linux文件系统就是一个树形的分层组织结构。

       将根(/)作为整个文件系统的惟一起点,其他所有目录都从该点出发。将Linux的全部文件按照一定的用途归类,合理地挂载到这颗“大树”的“树枝”或“树叶”上,而这些全不用考虑文件的实际存储位置,无论是存在硬盘上,还是在CD-ROM或USB存储器中,甚至是网络终端。(比如“/”是主干,“/bin”这类是支干,然后依次类推。。。形成了树型)

/

Linux文件系统根目录

/bin

存放系统中最常用的可执行文件(二进制)

/boot

存放Linux内核和系统启动文件,包括Grub、lilo启动器程序

/dev

存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等

/etc

存放系统的所有配置文件,例如passwd存放用户账户信息,hostname存放主机名等

/home

用户主目录的默认位置

/lib

存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件

/media

Ubuntu系统自动挂载CD-ROM、软驱、USB存储器后,存放临时读入的文件

/mnt

该目录通常用于作为被挂载的文件系统的挂载点

/opt

作为可选文件和程序的存放目录,主要被第三方开发者用来简易地安装和卸装他们的软件包

/proc

存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据

/root

根用户(超级用户)的主目录

/sbin

存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件

/tmp

存放用户和程序的临时文件,所有用户对该目录都有读写权限

/bin

存放系统中最常用的可执行文件(二进制)

/boot

存放Linux内核和系统启动文件,包括Grub、lilo启动器程序

/dev

存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty等

/etc

存放系统的所有配置文件,例如passwd存放用户账户信息,hostname存放主机名等

/home

用户主目录的默认位置

/lib

存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件

/media

Ubuntu系统自动挂载CD-ROM、软驱、USB存储器后,存放临时读入的文件

/mnt

该目录通常用于作为被挂载的文件系统的挂载点

/opt

作为可选文件和程序的存放目录,主要被第三方开发者用来简易地安装和卸装他们的软件包

/proc

存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如cpuinfo文件存放CPU当前工作状态的数据

/root

根用户(超级用户)的主目录

/sbin

存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件

/tmp

存放用户和程序的临时文件,所有用户对该目录都有读写权限

三、shell命令

1、打开终端时显现的(例如:lrb@ubuntu:~$ )shell命令行
lrb              -->主机用户名  --》不能修改,只能在安装的时候去设置
@              -->作为分隔符
ubuntu       -->主机名  --》在安装的时候设置的
:              -->作为分隔符
~               -->表示用户当前路径
$               -->表示普通用户
#               -->表示管理员用户

2、权限命令
sudo -s                          -->切换管理员用户
sudo passwd root         -->刚安装完时,需要初始化设置超级用户权限;
exit                                -->退出管理员用户
sudo vi /etc/vim/vimrc   -->临时切换管理员用户(用vi打开某个文件,临时获取管理员权限)

3、ls命令的相关用法(查看文件)
ls                       -->查看当前目录下的目录和文件
ls -l                    -->查看当前目录下的目录和文件的详细信息
ls -a                   -->查看当前目录下的目录和文件,包括隐藏文件
ls -la                  -->查看当前目录下的目录和文件,包括隐藏文件详细信息
ls filename         -->查看当前目录下的是否有filename这个文件
ls -l filename      -->查看当前目录下的是否有filename这个文件,并列出文件的详细信息

4、cd命令的相关用法(切换路径/目录)
cd dirname        -->进入该dirname目录/路径
cd /                    -->进入根目录
cd ..                   -->返回上一级目录
cd ../..                -->返回上一级目录的上一级目录
cd ~                   -->进入家目录,~ 等同 /home/lrb (家目录)
cd                      -->进入家目录
cd -                    -->返回原本所在的路径
cd .                    -->进入当前目录

~                        等同 /home/lrb (家目录)
                       当前目录
..                        上一级目录

例如:cd dev  <==>  cd ./dev   <==>  cd ./dev/  <==>cd dev/          //都是一样的

/home/lrb            对于路径来说  最前面的/才有意义,表示根目录
                           /写到中间或者最后面表示分隔符没有实际作用

绝对路径:从根目录开始写的路径
        eg:    cd /home/lrb

相对路径:从当前目录写的路径
        eg:    cd ./../../home/lrb

5、mkdir、rmdir 指令的相关用法(创建、删除空目录)

mkdir dirname                         -->创建一个新的目录dirname
mkdir dirname/dirname1         -->在已存在的dirname创建一个目录dirname1

mkdir dirname/dirname1 -p     -->在已经不存在的dirname创建一个目录dirname1
rmdir dirname                          -->只能删除空目录

6、rm指令的相关用法(删除文件/目录)
rm filename             -->删除一个文件
rm dirname -r          -->删除一个目录(不管里面是否有文件)
rm dirname -rf         -->强制删除一个目录(不管里面是否有文件)

8、touch、vim、gedit指令的相关用法(创建文件)
touch filename         -->创建文件以后不进入编辑模式,如果文件已存在,表示更新文件创建时间
vi filename               -->创建文件以后进入编辑模式  
vim filename            -->创建文件以后进入编辑模式 
gedit filename          -->创建文件以后进入编辑模式 ,save保存,然后X退出

9、cp指令的相关用法(复制文件/目录)
cp filename filename1               -->复制一个内容一样的文件(文件名不一样)
cp filename dirname                  -->把filename(文件)复制到dirname下(目录文件)
cp dirname  dirname1 -r            -->把目录dirname复制到dirname1

10、mv指令的相关用法(剪切)

mv                                                      --> 剪切文件或目录/更改文件或目录的名字
mv filename dirname                          -->把filename剪切到dirname
mv  dirname  dirname1(存在)             -->把目录dirname剪切到dirname1

mv filename filename1                       -->  把filename改名为filename1

mv  dirname  dirname1(不存在)    -->把目录dirname改名dirname1

11、cat、more、less指令的相关用法(查看文件信息)

cat filename           --> 查看filename文件里面的信息
cat filename -n       -->查看filename文件里面的信息,并打印它的行号
more                      -->分页查看文件里面的内容-->按回车和空格可以翻页(查看完会自动退出)
less                        -->分页查看文件里面的内容-->按回车和空格可以翻页-->输入q退出查看

12、head、tail指令的相关用法(查看文件开头/结尾的信息
head filename                    //默认查看文件开头的十行信息
head filename -n 20           //默认查看文件开头的二十行信息
tail filename                       //默认查看文件结尾的十行信息
tail filename -n 20              //默认查看文件结尾的二十行信息

13、sort、uniq指令的相关用法(文件内容排序)(去除相邻行的重复内容

sort filename                -->给文件里面的内容排序(正序)
sort filename -r             -->给文件里面的内容排序(反序)
uniq filename                -->去除相邻行的重复内容
sort filename | uniq       -->把filename文件里面的内容排序,然后给uniq作为输入的,然后输出我们所要的内容(正顺序排                                            列且相邻行不重复)

sort filename -r | uniq   -->把filename文件里面的内容排序,然后给uniq作为输入的,然后输出我们所要的内容(反顺序排                                            列且相邻行不重复)

                                  -->管道文件

14、find指令的相关用法(在目录中查找文件

find dirname -name "1.c"           -->在目录dirname里面查找1.c文件
find dirname -name "*.c"           -->在目录dirname里面查找以.c为后缀的文件
find dirname -type d                  -->在目录dirname里面查找某种类型(d目录类型)

find dirname -type f                  -->在目录dirname里面查找某种类型(f文件类型)

15、grep指令的相关用法(在文件中查找字符串
    grep 'hello' filename                 -->在文件filename 里面查找是否有字符"hello"
    grep 'hello' filename -n             -->在文件filename 里面查找是否有字符"hello",并把它所在行号打印

grep 'hello' dirname -rnH          -->在目录dirname 里面查找是否有字符"hello",并把它所在路径、文件名和行号打印

   16、ls -l打开的信息,相关字符具体代表的意思

eg:drwxrwxr-x  3 lrb  lrb   4096 12月 11  2018 list
(1)文件类型(上例蓝色的字符)
-          -->表示普通文件              文本文件、二进制
l          -->链接文件                      快捷方式
b         -->块设备文件                  磁盘、U盘、光驱
c         -->字符设备文件               鼠标、键盘
d         -->目录文件                
s         -->套接字文件                   网络传输的文件
p         -->管道文件                       进程间通信的文件

(2)读写执行的操作权限(上例绿色的字符)rwx   rwx   r-x

rwx(前三个)                        -->表示文件创建者的操作权限
rwx(中间三个)                    -->表示同组用户对该文件的操作权限
r-x (后三个)                        -->访客用户对该文件的操作权限

r                           -->可读
w                          -->可写
x                          -->可执行

lrb                       -->文件创建者 
lrb                       -->文件创建者所在的分组

3                          -->文件的大小

12月 11 17:09      -->文件创建的时间

chmod                 //更改文件的类型 (在共享文件夹上不一定可以修改文件的权限)
        eg:
        chmod 777 13.c          改变13.c文件的权限(二进制111 111 111==》777)   
            -rwxrwxrwx 1 lrb lrb 4 12月 11 17:09 13.c
            
        chmod 664 13.c           改变13.c文件的权限 (二进制110 110 100==》664) 
            -rw-rw-r-- 1 lrb rb 4 12月 11 17:09 13.c

17压缩、解压缩指令的相关用法            
tar -cvf 1.tar *c                          -->把所有的.c归档,生成1.tar
tar -xvf 1.tar                              -->释放1.tar文件里面的文件
xz 1.tar                                     -->把1.tar文件压缩生成1.tar.xz
xz --decompress 1.tar.xz          -->把1.tar.xz文件压解压生成1.tar
tar -Jcvf 1.tar.xz *c                    -->把所有的.c文件压缩生成1.tar.xz
tar -Jxvf 1.tar.xz                        -->把1.tar.xz文件压解压  
tar -zcvf 1.tar.gz *.c                   -->把所有的.c文件压缩生成1.tar.gz
tar -zxvf 1.tar.gz                        -->把1.tar.gz文件压解压   
tar -jcvf 1.tar.bz2 *.c                  -->把所有的.c文件压缩生成1.tar.bz2
tar -jxvf 1.tar.bz2                       -->把1.tar.bz2文件压解压

18其他指令的相关用法
 ln -s  filename newname           -->给filename文件创建一个快捷方式叫做newname

*                                                  -->通配符

who                                            -->查看当前用户

pwd                                            -->打印当前路径
    
diff filename filename1               -->比较两个文件内容是否一样

echo                                           -->在屏幕输出指定字符
    eg:    echo "hello"                      //在屏幕输出hello
             echo "hello" -> 6.c            //把字符串hello导入文件6.c
             echo $PATH                     //打印环境变量中的PATH

env                                             -->查看整个系统的环境变量,环境变量是整系统都能执行的一些配置
        
PATH                                          -->表示系统执行文件的时候,会在当前设置的路径里面去找这个执行文件
        
export                                         -->临时设置环境变量的参数

eg:     export PATH=$PATH:~/test2       //把环境变量中的PATH增加一个路径 
    永久设置:
        1、打开 ~/.bashrc ,把export PATH=$PATH:~/test2加入配置文件
        2、该配置文件是在终端打开的时候加载了一次,不能立刻生效
        3、立刻生效还需加载一次配置文件:source ~/.bashrc
                    
四、动态库、静态库的生成
1、函数库:
       (1)便于移植,方便使用
       (2)保密

2、静态库:
     编译生成静态库:
   (1)把.c文件编译生成.o文件(add.c生成add.o)
            gcc -c add.c
   (2)把.o文件编译生成静态库(add.o生成libadd.a)
            ar -rc add.a add.o  
   (3)静态库的使用:(使用libadd.a和main.c一起编译生成可执行文件project)
            gcc main.c libadd.a -o project  或  gcc main.c  -o project libadd.a

(4)执行文件(执行project)
            ./project

3、动态库:
  (1)把.c文件编译生成.o动态库(add.c生成add.o,再生成libadd.so)
            gcc -fpic -shared add.c -o libadd.so
  (2)动态库的使用(使用libadd.so和main.c一起编译生成可执行文件project)
            gcc main.c -o project libadd.so

(3)执行二进制文件时:
           1)永久设置需要把libadd.so拷贝到/lib
        2-1)临时设置环境变量:
                 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/(当前变异的位置)
        2-2)永久设置环境变量:
                 把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/加入配置文件 ~/.bashrc
   (4)执行
        ./project

注意:LD_LIBRARY_PATH告诉编译器到哪里路径下去找动态库

动态库的库名:

eg:   libadd.so.9.0                     -->前缀+库名+后缀+版本号

4、动态库和静态库的区别:
        (1)静态库是把静态库函数放到一起编译生成二进制文件(比较大)
        (2)动态库是静态库函数没有放到一起编译生成二进制文件(相对比较小),执行文件的时候是需要去/lib去链接
        (3) gcc main.c -o project -I ./include -L ./lib -ladd

-I  告诉编译器去哪里找头文件
           -L  告诉编译器去哪里找动态库
           -l  告诉编译器要连接的动态库的库名(不需要写前缀、后缀、版本号)

第一章:Linux下shell常用命令相关推荐

  1. Linux下Shell常用命令与工具

    文章目录 Shell常用命令与工具 1.ls 2.echo 3.printf 4.cat 5.tac 6 .rev 7.wc 8.cp 9.mkdir 10.mv 11.rename 12.dirna ...

  2. linux下开发常用命令

    java开发,由于其很多应用都是发布在Linux操作系统上,因此了解.掌握一些常用的Linux命令对与提高Java开发人员的工作效率是很有必要的.本文着重介绍Java开发相关的一些常用命令,其中以To ...

  3. Linux下Shell脚本命令行参数:getopt、getopts用法

    目录 简介 getopt 简介 支持选项 用法 getopt optstring parameters getopt [options] [--] getopt [options] -o|--opti ...

  4. Android Linux下的常用命令行

     安卓下面有个软件叫终端模拟器,其实就是Linux下的命令行,使用这些命令能有效处理问题. 基本知识 "/",这个英文字母斜杠指的是根目录,类似Windows的C:\,但是Li ...

  5. linux下的常用命令 + 环境配置 + 数据库安装 一步到位!

    文章目录 一.引言 1.1 开发环境(dev) 1.2 测试环境(test) 1.3 生产环境(prod) 1.4 操作系统的选择 二.Linux介绍 2.1 Linux介绍 2.2 Linux的版本 ...

  6. tomcat linux dump,Linux下Tomcat常用命令与配置

    最近经常用到的Linux下的命令 重启tomcat ps x 查看pid kill -9 pid 杀死进程 /app/tomcat/bin/startup.sh 启动tomcat 追踪日志 tail ...

  7. 交互器、linux下的常用命令

    使用交互器步骤 搜索-->cmd dir(查看当前目录文件) # 若想清空,输入cls python--> print(" hello world") # 若想退出,输 ...

  8. Linux下的常用命令(干货)

    常用: 查看端口: ifconfig | ip addr show 查看进程: ps -ef|grep java 拷贝: cp [文件路径] [目标路径] 移动: mv [文件路径] [目标路径] 解 ...

  9. linux下的常用命令

    一.Linux.CentOS下重命名文件和文件夹 mv:move 用移动文件命令就可以了,因为linux系统没有专门的重命名命令. 基本格式: 移动文件:mv 文件名 移动目的地文件名 重命名文件:m ...

最新文章

  1. java语言环境变量_JAVA语言环境变量的设置教程
  2. 罗斯蒙特1056ph电极_ROSEMOUNT 罗斯蒙特 PH电极 0396R-10-2(0396R-10-2)
  3. 信息学奥赛C++语言:派送蛋糕
  4. ADMT3.2域迁移之Server2003至Server2012系列(五)添加域管理员权限
  5. Mozilla Firefox 在用户访问被黑客攻击的网站时发出警告
  6. 62、剑指offer--二叉搜索树的第k个结点
  7. 特斯拉中国上调Model 3售价 涨价4500元起
  8. 第一章节 c#面向对象
  9. Java继承中的构造方法使用的理解,白话文,简单易理解
  10. pe擦除服务器硬盘,老毛桃winpe分区助手删除分区后如何用Gutmann算法擦除硬盘数据?...
  11. Android蓝牙音乐获取歌曲信息
  12. 简单枚举(ZJM要抵御宇宙射线)
  13. SSH免密登录(笔记)
  14. 【数据结构】两栈共享空间(双端栈)
  15. 计算机存储单位--“大数据”概念
  16. volley与java版本_如何使用Volley在Android中实现登录?
  17. git实现审核功能_代码库(SVN GIT)及代码评审
  18. 【IAR报错笔记】“Could not open macro file“ 与 “Error in macro file“
  19. photoshop矫正扫描图片的倾斜问题以及修改图片内容
  20. e控智慧管家免责声明

热门文章

  1. 疑难杂症、易混淆、易遗忘的知识点记录
  2. 极简生活牙膏,让你的口腔清新一整天!
  3. ubuntu 软件安装到中途停止解决方法
  4. php客流量统计,智慧店铺客流量统计系统
  5. 数据可视化---将某个股票每天收盘价通过matplotlib生成折线图
  6. 磁盘概念-Fidisk-Parted
  7. 组合数学与计算机科学书籍,计算机科学丛书:组合数学(原书第5版)
  8. 怎样在word中批量替换文字?Word替换文字这一招你会吗?
  9. matlab怎么对不同长度的数据储存,求助,怎么解决适量长度不同的问题
  10. 【游戏程序设计】二维游戏示例-回合制Demo