第一章:Linux下shell常用命令
一、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创建一个目录dirname1mkdir 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剪切到dirname1mv 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常用命令相关推荐
- 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 ...
- linux下开发常用命令
java开发,由于其很多应用都是发布在Linux操作系统上,因此了解.掌握一些常用的Linux命令对与提高Java开发人员的工作效率是很有必要的.本文着重介绍Java开发相关的一些常用命令,其中以To ...
- Linux下Shell脚本命令行参数:getopt、getopts用法
目录 简介 getopt 简介 支持选项 用法 getopt optstring parameters getopt [options] [--] getopt [options] -o|--opti ...
- Android Linux下的常用命令行
安卓下面有个软件叫终端模拟器,其实就是Linux下的命令行,使用这些命令能有效处理问题. 基本知识 "/",这个英文字母斜杠指的是根目录,类似Windows的C:\,但是Li ...
- linux下的常用命令 + 环境配置 + 数据库安装 一步到位!
文章目录 一.引言 1.1 开发环境(dev) 1.2 测试环境(test) 1.3 生产环境(prod) 1.4 操作系统的选择 二.Linux介绍 2.1 Linux介绍 2.2 Linux的版本 ...
- tomcat linux dump,Linux下Tomcat常用命令与配置
最近经常用到的Linux下的命令 重启tomcat ps x 查看pid kill -9 pid 杀死进程 /app/tomcat/bin/startup.sh 启动tomcat 追踪日志 tail ...
- 交互器、linux下的常用命令
使用交互器步骤 搜索-->cmd dir(查看当前目录文件) # 若想清空,输入cls python--> print(" hello world") # 若想退出,输 ...
- Linux下的常用命令(干货)
常用: 查看端口: ifconfig | ip addr show 查看进程: ps -ef|grep java 拷贝: cp [文件路径] [目标路径] 移动: mv [文件路径] [目标路径] 解 ...
- linux下的常用命令
一.Linux.CentOS下重命名文件和文件夹 mv:move 用移动文件命令就可以了,因为linux系统没有专门的重命名命令. 基本格式: 移动文件:mv 文件名 移动目的地文件名 重命名文件:m ...
最新文章
- java语言环境变量_JAVA语言环境变量的设置教程
- 罗斯蒙特1056ph电极_ROSEMOUNT 罗斯蒙特 PH电极 0396R-10-2(0396R-10-2)
- 信息学奥赛C++语言:派送蛋糕
- ADMT3.2域迁移之Server2003至Server2012系列(五)添加域管理员权限
- Mozilla Firefox 在用户访问被黑客攻击的网站时发出警告
- 62、剑指offer--二叉搜索树的第k个结点
- 特斯拉中国上调Model 3售价 涨价4500元起
- 第一章节 c#面向对象
- Java继承中的构造方法使用的理解,白话文,简单易理解
- pe擦除服务器硬盘,老毛桃winpe分区助手删除分区后如何用Gutmann算法擦除硬盘数据?...
- Android蓝牙音乐获取歌曲信息
- 简单枚举(ZJM要抵御宇宙射线)
- SSH免密登录(笔记)
- 【数据结构】两栈共享空间(双端栈)
- 计算机存储单位--“大数据”概念
- volley与java版本_如何使用Volley在Android中实现登录?
- git实现审核功能_代码库(SVN GIT)及代码评审
- 【IAR报错笔记】“Could not open macro file“ 与 “Error in macro file“
- photoshop矫正扫描图片的倾斜问题以及修改图片内容
- e控智慧管家免责声明