<p><br /> ctrl+alt+t --->打开终端快捷方式</p>
讯享网
gec@ubuntu64:~\( ---》shell命令行,命令行提示符</p> <p>gec -->主机用户名 <br /> @ -->作为分隔符<br /> ubuntu64 -->主机名<br /> : -->作为分隔符<br /> ~ -->表示用户当前路径 ~ 表示家目录 ~ == /home/gec<br /> \) –>表示普通用户
# –>表示管理员用户
exit –》退出管理员用户
sudo vi /etc/vim/vimrc –>临时切换管理员权限
—-
ls –>查看当前目录下的目录和文件
ls -l –>查看当前目录下的目录和文件的详细信息
ls -a –>查看当前目录下的目录和文件,包括隐藏文件
ls -la –>查看当前目录下的目录和文件,包括隐藏文件详细信息
ls filename –>查看当前目录下的是否有filename这个文件
ls -l filename –>
-rw-rw-r– 3 gec gec 12 3月 20 15:28 1
第一个字符:表示文件类型
Linux文件种类:7种
- —>普通文件(.txt 、.c、.doc、二进制文件、.png)
d —>目录文件(文件夹)
l —>链接文件(快捷方式)
b —>块设备文件(内存)
c —>字符设备文件
s —>套接字文件(用于网络传输)
p —>管道文件(先进先进)
第二个字符至第十个字符:分别表示三种用户对该文件的操作权限
r —>read 可读
w —>write 可写
x —>excute 可执行
- —》 表示没有该权限
第一种用户:文件拥有者
第二种用户:同组用户
第三种用户:其它用户
第十一个字符:表示硬链接的个数
第十二个: 文件拥有者的用户名
第十三个:文件拥有者的所属组名,如果没有分组,指的就是自己的用户名
第十四个:文件的大小
第十五个:文件最后的修改时间
—-
cd –>切换路径
cd dirname –>进入该目录/路径
cd / –>进入根目录
cd .. –>返回上一级目录
cd https://blog.csdn.net/softshow1026/article/.. –>返回上一级目录的上一级目录
cd ~ –>进入家目录
cd –>进入家目录
cd - –>返回原本所在的路径
cd . –>进入当前目录
《==》 /home/gec –>家目录
. 当前目录
.. 上一级目录
cd dev <==> cd https://blog.csdn.net/softshow1026/article/details/dev <==> cd https://blog.csdn.net/softshow1026/article/details/dev/ <==>cd dev/
都是一样的写法
绝对路径:从根目录开始写的路径
eg: cd /home/lcy
相对路径:不是从根目录开始写的路径
eg: cd https://blog.csdn.net/softshow1026/article/details/https://blog.csdn.net/softshow1026/home/lcy
———
Linux目录结构:
———
mkdir/rmdir 创建空目录/删除空目录
——-
rm 删除文件或目录
rm filename –>删除一个文件
rm dirname -r —>删除一个目录(不管里面是否有文件)
rm dirname -rf —>强制删除一个目录(不管里面是否有文件)
删库跑路—->不要尝试
sudo rm /* -rf
touch filename –>创建文件以后不进入编辑模式
如果文件已存在,表示更新文件最后修改时间
vi filename –>创建文件以后进入编辑模式
vim filename —>创建文件以后进入编辑模式
gedit filename –>创建文件以后进入编辑模式
——-
cp 复制文件或目录
cp filename filename1 –>复制一个内容一样文件
cp filename dirname –>把filename复制到dirname
cp dirname dirname1 -r –>把目录dirname复制到dirname1
mv filename dirname –>把filename剪切到dirname
mv dirname dirname1(存在) –>把目录dirname剪切到dirname1
mv filename filename1 –> 把filename改名为filename1
mv dirname dirname1(不存在) –> –>把目录dirname改名dirname1
——-
cat/more/less 查看文件里面的信息
cat filename –> 查看filename文件里面的信息
cat filename -n –>查看filename文件里面的信息,并打印它的行号
more –>分页查看文件里面的内容–>按回车切换下一行和空格可以翻页
less –>分页查看文件里面的内容–>按回车切换下一行和空格可以翻页–>输入q退出查看
方向键上下也可以切换
head 查看文件开头的信息
tail 查看文件结尾的信息

—–
uniq 去除相邻行的重复内容
uniq filename –>去除相邻行的重复内容
| —>管道文件
find dirname -name “1.c” –>在目录dirname里面查找1.c文件
find dirname -name “*.c” –>在目录dirname里面查找以.c为后缀的文件
find dirname -type d –>在目录dirname里面查找某种类型的文件
——
grep 在文件中查找字符串
grep ‘hello’ filename –>在文件filename 里面查找是否有字符“hello”
grep ‘hello’ filename -n –>在文件filename 里面查找是否有字符“hello”,并把它所在行号打印
——-
chmod –>更改文件的权限 –>在共享文件夹上不一定可以修改文件的权限
eg:
gec@ubuntu64:\( ls -l 4.c<br /> -rw-rw-r-- 1 gec gec 15 3月 4 10:31 4.c<br /> rw- rw- r--<br /> rw- rw- r-- 用户对文件的操作权限<br /> 110 110 100 --->二进制<br /> 6 6 4 --->八进制</p> <p> <br /> 7 7 7 --->八进制<br /> 111 111 111 --->二进制<br /> rwx rwx rwx 用户对文件的操作权限<br /> <br /> eg:<br /> gec@ubuntu64:~\) chmod 777 4.c
gec@ubuntu64:~\( ls -l 4.c<br /> -rwxrwxrwx 1 gec gec 15 3月 4 10:31 4.c</p> <p> <br /> rwx rw- r-x<br /> 111 110 101<br /> 7 6 5<br /> <br /> <br /> <br /> <br /> -------<br /> ln 创建快捷方式 (软连接不能在共享目录新建,目录不能创建硬链接文件)</p> <p>创建软链接:<br /> ln -s filename newname -->给filename文件创建一个快捷方式叫做newname<br /> 创建硬链接: <br /> ln filename newname -->给filename文件创建一个硬链接叫做newname<br /> <br /> 硬链接文件的类型是: 普通文件<br /> 软连接文件的类型是: 链接文件</p> <p>硬链接文件在源文件删除的情况,文件内容依然可以通过硬链接文件找到<br /> 软连接文件在源文件删除的情况,文件内容不能通过软链接文件找到<br /> <br /> -------<br /> diff 比较两个文件内容是否一样<br /> diff filename filename1 -->比较两个文件内容是否一样</p> <p>-------<br /> tar 压缩和解压</p> <p> c ---》表示归档<br /> v ---》把过程打印输出<br /> f ---》指代文件<br /> x ---》释放<br /> <br /> xz、gz、bz2压缩算法不同<br /> <br /> tar -cvf 1.tar *.c 把所有的.c归档,生成1.tar<br /> tar -xvf 1.tar 释放1.tar文件里面的文件<br /> <br /> <br /> xz 1.tar 把1.tar文件压缩生成1.tar.xz<br /> xz --decompress 1.tar.xz 把1.tar.xz文件压解压生成1.tar<br /> <br /> tar -Jcvf 1.tar.xz *.c 把所有的.c文件压缩生成1.tar.xz<br /> tar -Jxvf 1.tar.xz 把1.tar.xz文件压解压<br /> <br /> <br /> tar -zcvf 1.tar.gz *.c 把所有的.c文件压缩生成1.tar.gz<br /> tar -zxvf 1.tar.gz 把1.tar.gz文件压解压<br /> <br /> <br /> tar -jcvf 1.tar.bz2 *.c 把所有的.c文件压缩生成1.tar.bz2<br /> tar -jxvf 1.tar.bz2 把1.tar.bz2文件压解压<br /> <br /> <br /> ------<br /> echo -->在屏幕输出指定字符<br /> echo "hello" 在屏幕输出hello<br /> echo "hello" > 6.c 把字符串hello导入文件6.c , ">"表示重定向<br /> echo \)PATH 打印环境变量中的PATH的值 \( -->表示调用环境变量<br /> ------<br /> env 查看整个系统的环境变量<br /> 环境变量是整系统都能使用的变量 ---》操作系统中用来指定操作系统运行环境的一些参数<br /> <br /> PATH --->它是系统环境变量中的一个,表示系统执行可执行文件的时候,<br /> 如果没有写路径,就会在当前设置的PATH环境变量设置的路径里面去找这个执行文件<br /> <br /> 执行可执行文件时:https://blog.csdn.net/softshow1026/article/details/hello 敲回车 ---> https://blog.csdn.net/softshow1026/article/details/ 表示hello文件的路径<br /> <br /> ls 敲回车--> ls它也是一个可执行文件,但是它不用输入路径就可执行<br /> <br /> 环境变量的作用:<br /> https://www.jianshu.com/p/3faacdf979e5<br /> ------<br /> export 临时设置环境变量的参数</p> <p> export PATH=\)PATH:/home/gec –>把环境变量中的PATH增加一个路径
永久设置:
1、打开 ~/.bashrc ,把export PATH=\(PATH:/home/gec加入配置文件<br /> sudo gedit ~/.bashrc<br /> <br /> 2、该配置文件是在终端打开的时候加载了一次,不能立刻生效<br /> <br /> 3、立刻生效还需加载一次配置文件:<br /> source ~/.bashrc<br /> -----------------------------<br /> 把一个可执行文件设置成,不需要加路径名也可以运行---》类似于Linux命令的效果</p> <p>例子:<br /> 把家目录里面的可执行文件hello,设置为不需要加路径名也可以运行</p> <p> 1、可以直接把该文件复制到/bin<br /> cp hello /bin<br /> <br /> 2、可以把家目录的路径设置到环境变量PATH里面<br /> (1)临时设置环境变量PATH ---->新开的窗口里面是没有改路径<br /> export PATH=\)PATH:/home/gec
(2)永久设置环境变量PATH
1》打开配置文件
sudo vi ~/.bashrc
2》把设置命令:export PATH=\(PATH:/home/gec加到配置文件最后一行<br /> 3》使配置文件生效<br /> source ~/.bashrc<br /> ------------------------------<br /> 练习:<br /> 1、把一个可执行文件,设置为不输入路径也可以执行,可以永久设置<br /> <br /> ------------------------------</p> <p>ubuntu16.04:<br /> ctrl+alt+F2 -->切换成纯终端界面<br /> ctrl+alt+F7 -->切换成图形界面</p> <p></p> <p> <br /> ------------------------------ <br /> pwd --》打印当前路径</p> <p>----<br /> who --> 显示已经登录的用户</p> <p>环境变量HOME:当前用户的主目录(也称家目录)</p> <p>sudo -s -->临时切换管理员用户 ---》表示原本用户还是普通用户<br /> sudo su -->完全切换为管理员用户 ---》表示现在的用户是管理员用户</p> <p>exit 退出管理员用户</p> <p>which --->查找Linux命令或可执行所在路径</p> <p>--------------<br /> clear 表示清屏</p> <p>---<br /> alias 临时给命令取别名 --->如果要永久设置,必须加入到配置文件<br /> alias c='clear' --->给clear取别名为c<br /> alias ll='ls -l'</p> <p>-------------<br /> man --->查找帮助手册</p> <p>man man ---->自己查找自己</p> <p> 1<br /> 可执行程序或 shell 命令<br /> 2<br /> 系统调用(内核提供的函数)---》Linux操作系统自带的函数<br /> 3<br /> 库调用(程序库中的函数)---》标准C语言库函数<br /> <br /> man 1 ls --->查找Linux命令<br /> man 2 open --->查找系统函数<br /> man 3 printf --->查找标准C语言库函数</p> <p>man -f printf --->查找所有关于printf函数的用法<br /> man ascii --->查找ascii码表</p> <p><br /> ========================动态库静态库的生成========================<br /> 函数库:<br /> 1、便于移植,方便使用<br /> 2、保密, 保护知识产权<br /> <br /> 动态库静态库编译之前一定要先函数模块化,主函数不要弄成动态库静态库<br /> 静态库:<br /> 编译生成静态库:<br /> <br /> 1、把.c文件编译生成.o文件(二选一)<br /> gcc -c add.c<br /> <br /> gcc add.c -c -o add.o<br /> <br /> 2、把.o文件编译生成静态库<br /> ar -rc libadd.a add.o <br /> <br /> 3、静态库的使用(二选一):<br /> gcc main.c libadd.a -o project<br /> gcc main.c -o project libadd.a<br /> </p> <p> 4、执行文件<br /> https://blog.csdn.net/softshow1026/article/details/project<br /> <br /> 动态库:<br /> <br /> 1、把.c文件编译生成.o动态库<br /> <br /> gcc -fpic -shared add.c -o libadd.so</p> <p> <br /> 2、动态库的使用(三选一):<br /> gcc main.c libadd.so -o project<br /> gcc main.c -o project libadd.so<br /> gcc main.c -o project -L . -ladd</p> <p> 3、执行二进制文件时:<br /> https://blog.csdn.net/softshow1026/article/details/project<br /> 如果出现以下错误:<br /> https://blog.csdn.net/softshow1026/article/details/main: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory</p> <p> 解决方法:<br /> (1)永久设置需要把libadd.so拷贝到/lib<br /> sudo cp libadd.so /lib<br /> <br /> (2)临时设置环境变量LD_LIBRARY_PATH:<br /> export LD_LIBRARY_PATH=\)LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库
永久设置:
把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库加入配置文件 ~/.bashrc
LD_LIBRARY_PATH的作用:执行可执行文件时,使用到动态库,系统会在 LD_LIBRARY_PATH设置的路径下去查找动态库,进行调用
4、执行
https://blog.csdn.net/softshow1026/article/details/project
lib add .so.8.3.0
前缀+库名+后缀+版本号
(2)
lib add .a
前缀+库名+后缀
———————————-
动态库和静态库的区别:
静态库是把静态库函数放到一起编译生成二进制文件(比较大)
动态库是把动态库函数没有放到一起编译生成二进制文件(相对比较小),执行文件的时候是需要去/lib去调用
libadd.so.9.0
前缀+库名+后缀+版本号
gcc main.c -o project -L . -ladd
-L 告诉编译器去哪里找动态库
-l 告诉编译器要连接的动态库的库名(不需要写前缀、后缀、版本号)
-I 告诉编译器去哪里找头文件
———————–
练习:
1、编译生成动态库,并执行程序

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/183359.html