以下是操作Linux系统最常用的基础命令,转载请注明出处,谢谢合作!
ctrl+alt+t —>打开终端
Stefen@ubuntu:~$ —》shell命令行
Stefen -->主机用户名 --》不能修改,只能在安装的时候去设置(自主定义主机用户名)
@ -->作为分隔符
ubuntu -->主机名 --》在安装的时候设置的
: -->作为分隔符
~ -->表示用户当前路径
$ -->表示普通用户
# -->表示管理员用户
sudo -s --》切换管理员用户
exit --》退出管理员用户
sudo vi /etc/vim/vimrc -->临时切换管理员用户
ls -->查看当前目录下的目录和文件
ls -l -->查看当前目录下的目录和文件的详细信息
ls -a -->查看当前目录下的目录和文件,包括隐藏文件
ls -la -->查看当前目录下的目录和文件,包括隐藏文件详细信息
ls filename -->查看当前目录下的是否有filename这个文件
ls -l filename -->
cd -->切换路径
cd dirname -->进入该目录/路径
cd / -->进入根目录
cd … -->返回上一级目录
cd …/… -->返回上一级目录的上一级目录
cd ~ -->进入家目录
cd -->进入家目录
cd - -->返回原本所在的路径
cd . -->进入当前目录
~ 《==》 /home/Stefen -->家目录
. 当前目录
… 上一级目录
cd dev <==> cd ./dev <==> cd ./dev/ **<==>**cd dev/
上面都是一样的写法
/home/Stefen 对于路径来说 最前面的/才有意义,表示根目录
/写到中间或者最后面表示分隔符没有实际作用
绝对路径:从根目录开始写的路径
eg: cd /home/Stefen
相对路径:从当前目录写的路径
eg: cd ./../../home/Stefen
mkdir/rmdir 创建空目录/删除空目录
mkdir dirname —>创建一个新的目录dirname
mkdir dirname/dirname1 在已存在的dirname创建一个目录dirname1
mkdir dirname/dirname1 -p 在已不存在的dirname创建一个目录dirname1
rmdir dirname —>只能删除空目录
rm 删除文件或目录
rm filename -->删除一个文件
rm dirname -r —>删除一个目录(不管里面是否有文件)
rm dirname -rf —>强制删除一个目录(不管里面是否有文件)
touch 创建文件以后不进入编辑模式
touch filename -->创建文件以后不进入编辑模式
如果文件已存在,表示更新文件创建时间
vi filename -->创建文件以后进入编辑模式
vim filename
gedit filename
cp 复制文件或目录
cp filename filename1 -->复制一个内容一样文件
cp filename dirname -->把filename复制到dirname
cp dirname dirname1 -r -->把目录dirname复制到dirname1
mv 剪切文件或目录/更改文件或目录的名字
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 查看文件开头的信息
head filename --> 默认查看文件开头的十行信息
head filename -n 20 -->默认查看文件开头的二十行信息
tail 查看文件结尾的信息
head filename --> 默认查看文件结尾的十行信息
head filename -n 20 -->默认查看文件结尾的二十行信息
sort 给文件里面的内容排序
sort filename -->给文件里面的内容排序(正序)
sort filename -r -->给文件里面的内容排序(反序)
uniq 去除相邻行的重复内容
uniq filename -->去除相邻行的重复内容
sort filename | uniq —>把filename文件里面的内容排序,然后给uniq作为输入的,然后输出我们所要的内容
| —>管道文件
find 在目录中查找文件
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",并把它所在行号打印
grep 'hello' dirname -rnH -->-->在目录dirname 里面查找是否有字符"hello",并把它所在路径、文件名和行号打印
-rw-rw-r-- 1 Stefen Stefen 4 11月 5 17:09 13.c
110 110 100 --》二进制
6 6 4 --》八进制
-
-->表示普通文件 文本文件、二进制
l -->链接文件 快捷方式
b -->块设备文件 磁盘、U盘、光驱
c -->字符设备文件 鼠标、键盘
d -->目录文件
s -->套接字文件 网络传输的文件
p -->管道文件 进程间通信的文件
rw- -->表示文件创建者的操作权限
rw- -->表示同组用户对该文件的操作权限
r-- -->访客用户对该文件的操作权限
r -->可读
w -->可写
x -->可执行
Stefen -->文件创建者
Stefen -->文件创建者所在的分组
4 —>文件的大小
11月 5 17:09 -->文件创建的时间
chmod -->更改文件的类型 -->在共享文件夹上不一定可以修改文件的权限
eg:
chmod 777 13.c 改变13.c文件的权限
-rwxrwxrwx 1 Stefen Stefen 4 11月 5 17:09 13.c
chmod 664 13.4
-rw-rw-r-- 1 Stefen Stefen 4 11月 5 17:09 13.c
ln 创建快捷方式
ln -s filename newname -->给filename文件创建一个快捷方式叫做newname
diff 比较两个文件内容是否一样
diff filename filename1 -->比较两个文件内容是否一样
tar 压缩和解压
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文件压解压
echo -->在屏幕输出指定字符
echo “hello” 在屏幕输出hello
echo “hello” -> 6.c 把字符串hello导入文件6.c
echo $PATH 打印环境变量中的PATH
env 查看整个系统的环境变量
环境变量是整系统都能执行的一些配置
PATH --->表示系统执行文件的时候,会在当前设置的路径里面去找这个执行文件
export 临时设置环境变量的参数
export PATH=$PATH:~/test2 -->把环境变量中的PATH增加一个路径
永久设置:
1、打开 ~/.bashrc ,把export PATH=$PATH:~/test2加入配置文件
2、该配置文件是在终端打开的时候加载了一次,不能立刻生效
3、立刻生效还需加载一次配置文件:
source ~/.bashrc
pwd --》打印当前路径
who -->查看当前用户
动态库静态库的生成
函数库:
1、便于移植,方便使用
2、保密
静态库:
编译生成静态库:
1、把.c文件编译生成.o文件
gcc -c add.c
gcc add.c -c -o add.o
2、把.o文件编译生成静态库
ar -rc libadd.a add.o
3、静态库的使用:
gcc main.c libadd.a -o project
gcc main.c -o project libadd.a
4、执行文件
./project
动态库:
1、把.c文件编译生成.o动态库
gcc -fpic -shared add.c -o libadd.so
2、动态库的使用:
gcc main.c -o project libadd.so
3、执行二进制文件时:
(1)永久设置需要把add.so拷贝到/lib
cp add.so /lib
(2)临时设置环境变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/
永久设置:
把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/加入配置文件 ~/.bashrc
4、执行
./project
注意:LD_LIBRARY_PATH告诉编译器去哪个路径下找动态库
动态库和静态库的区别:
静态库是把静态库函数放到一起编译生成二进制文件(比较大)
动态库是把静态库函数没有放到一起编译生成二进制文件(相对比较小),执行文件的时候是需要去/lib去链接
动态库的库名:
libadd.so.9.0
前缀+库名+后缀+版本号
gcc main.c -o project -I ./include -L ./lib -ladd
-I 告诉编译器去哪里找头文件
-L 告诉编译器去哪里找动态库
-l 告诉编译器要连接的动态库的库名(不需要写前缀、后缀、版本号)