简单指令
符号|指令 | 作用 |
---|---|
$ | 表示你是一般用户(root) |
# | 表示你是超级用户 |
Ctrl + Alt + Shift + (f1~f6) | 切换到字符控制台 |
Alt + f7 | 切换回图形界面 |
ps aux | 查看进程信息 |
kill -9 进程ID | 停止进程 |
Ctrl + a | (shell)回到命令的开始 |
Ctrl + e | (shell)跑到命令末尾 |
Ctrl + d | (shell)删除光标后的字符 |
ls -a | 列出隐藏文件,文件夹中以"."开头的均为隐藏文件 |
ls -l | 列出文件的详细信息 |
ls -R | 连同子目录中的内容一起列出 |
用ls -l 命令显示的信息中,开头是由10个字符构成的字符串,其中第一个字符表示文件类型,它可以是下述类型之一:
符号 | 文件类型 |
---|---|
- | 普通文件 |
d | 目录 |
l | 符号链接(快捷方式) |
b | 块设备文件(U盘) |
c | 字符设备文件(鼠标,键盘) |
s | socket文件,网络套接字 |
p | 管道 |
后面9个字符表示文件的访问权限,分为3组,每组3位。第一组表示文件属主 的权限,第二组表示同组用户的权限,第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行(x)权限。
mkdir -p 可以连同父目录一起创建
mkdir -p /aa/bb/cc
touch 命令
如果文件已经存在,则把访问和修改时间都修改为目前的时间。
为文件创建链接
ln hello world_h
创建软链接
ln -s hello world_s
利用wc指令可以计算文件的byte数、字数或是列数。
wc -c 只显示bytes数;
wc -l 只显示列数;
wc -w 只显示字数
显示你的盘符已使用空间
df --block-size=GB
df --block-size=MB
根据文件名查找文件
符号|指令 | 作用 |
---|---|
find ./* -name "firefox" | 在当前目录下查找文件 |
find / -name "firefox" | 在根目录下查找文件 |
find / -name "firefox" > abcd | 可以令输出重定向到指定文件 |
Ctrl + a | (shell)回到命令的开始 |
Ctrl + e | (shell)跑到命令末尾 |
Ctrl + d | (shell)删除光标后的字符 |
根据内容查找文件
grep "查找内容" ./* -R
find默认使用递归方式查找文件,但是grep需要人为指定递归方式,而且grep无法查找隐藏文件的内容。./*表示在当前路径下,查找所有的文件。
打包文件
对tar文件
tar zcvf test.tar.gz test
-- zcvf:
-- z表示压缩格式,使用gZip压缩算法来压缩文件
-- c表示creat
-- vf表示索引信息
- 解包文件
tar zxvf test.tar.gz
-- x表示解包
- 解包到指定目录
tar zxvf test.tar.gz -C 指定的目录
- 如果是一般的打包文件,就不使用z参数
tar cvf test.tar test
tar zvf test.tar
tar zvf test.tar -C 指定到的目录
- 对.bz2格式的压缩包,使用j参数
tar jxvf test.tar.bz2 test
tar jxvf test.tar.bz2
tar jxvf test.tar.bz2 -C 指定的目录
对rar文件
打包:把dir压缩成newdir.rar
rar a -r newdir dir
解包:把newdir.rar 解压缩到当前目录
unrar x newdir.rar
对zip文件
打包:
zip -r dir.zip dir
解包:
unzip dir.zip
类Unix系统目录结构
ubuntu没有盘符这个概念,只有一个根目录/,所有的文件都在根目录下面。根目录下面的文件夹存放的内容简介:
文件名 | 内容 |
---|---|
bin | 系统可执行命令 |
boot | 内核和启动程序,所有和启动相关的文件都保存在这里 |
grub | 引导器相关文件 |
dev | 设备文件 |
etc | 系统软件的启动和配置文件,系统在启动过程中需要读取的文件都在这个目录。如LILO参数、用户账户和密码 |
home | 用户的主目录。下面是用户自己定义的用户名的文件夹 |
lib | 系统程序库文件,这个目录里存放着系统最基本的动态链接共享库,类似于Windows下的system32目录,几乎所有的应用程序都需要用到这些共享库 |
media | 挂载媒体设备,如光驱、U盘等 |
mnt | 该目录是让用户临时挂载别的文件系统,如挂载Windows下的每个分区,ubuntu默认还是挂载在/media目录 |
opt | 可选的应用软件包(很少) |
proc | 该目录是系统内存的映射,我们可以直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘而是在内存里 |
sbin | 管理员系统程序 |
selinux | |
srv | |
sys | /udev用到的设备目录树,/sys反映你机器当前所接的设备 |
tmp | 临时文件夹 |
usr | 这个是最庞大的目录,我们要用到的很多应用程序和文件几乎都存放在这个目录下 |
bin | 应用程序 |
game | 游戏程序 |
include | |
lib | 应用程序的库文件 |
lib64 | |
local | 包含用户程序等 |
sbin | 管理员应用程序 |
通过apt-get安装的软件
清理无用的包
sudo apt-get clean && sudo apt-get autoclean
卸载软件和配置
sudo apt-get remove *** --purge
deb包安装
sudo dpkg -i ***.deb
删除软件包命令
sudo dpkg -r ***.deb
连同配置文件一起删除命令
sudo dpkg -r --purge ***.deb
当U盘插入电脑(Ubuntu是直接挂载在media下面的,这里就当是一个积累了,可能其他的类Unix系统会用上这个指令)
-0) sudo fdisk -l
然后看“孤立”的一块存储区,它就是U盘的路径
-1) sudo mount /dev/*** /mnt
把外设U盘挂载到/mnt下面,然后就可以进入mnt下面,就发现里面全是U盘的内容,在该路径下读写文件的改变会直接作用于U盘。
-2) sudo umount /mnt
这样就可以卸载外设
拷贝文件(除了cp之外还可以用dd)
dd if=输入文件名 of=输出文件名
示例:
(base) vincent@vincent:~/CPURam$ dd if=main.cpp of=mainNew.cpp
36+1 records in
36+1 records out
18925 bytes (19 kB, 18 KiB) copied, 0.000224686 s, 84.2 MB/s
用参数bs=100M 还可以表示创建的文件大小100MB,=
用参数count =1表示创建一次
示例:
dd if=/dev/zero of=hello.txt bs=100M count=1
bs = block size,整句话的意思就是我要生成一个100Mb的文件
PS:
-1) /dev/null: 外号叫无底洞,你可以向它输出任何数据,它都通吃,并且不会撑着!
-2) /dev/zero: 是一个输入设备,你可以用它来初始化文件,从里面读出来的数据都是0。
如果想把一个应用程序设置为输入名字即可启动,则需要做以下几步:
-1)sudo vim /home/用户名/.bashrc
打开后,在里面找到“export PATH=$PATH:”
在后面追加你的应用程序路径->保存
-2) 打开新的shell,试运行一下
vim里面的指令(查漏补缺)
>> 文本块右移
<< 文本快左移
{{ 光标向上移动一个段落
}} 光标向下移动一个段落
gg 光标移动到文件开头
G 光标移动到文件结尾
yy 复制当前行
Ctrl+w+w 在vim中的不同窗口之间切换
vim的配置文件有两个,路径分别为:
- ~/.vimrc
- /etc/vim/vimrc
其中~/.vimrc的优先级高
gcc编译器选项
gcc -g 选项打开表示包含调试信息,后面使用gdb的时候可以提供帮助你信息;
gcc -D 编译时定义宏,注意-D和宏的名字之间没有空格。这个是用于手动激活代码中的宏定义;
#ifdef DEBUG
printf("test");
#endif
在编译代码的时候只要加上-DDEBUG就可以手动激活这个宏定义了。
还有两个工具可以帮助在开发过程中进行调试:
- nm 查看目标文件中的符号(全局变量、全局函数等)
- objdump 用于生成反汇l编文件,主要依赖objcopy实现,a.out编译时需要-g,使用时的指令为:
gcc main.c -g(打开调试信息) -o a.out
objdump -dSsx a.out > file
重定向到file里面后,可以看出程序运行时的调试信息。里面可以看到C代码,汇编码,机器码以及内存使用地址。可是我还是觉得这样效率不高,因为滚动了几千行信息之后,我只是为了找到程序出错的停止点。我还是愿意手动打Log的。所以这个工具应该是可以让程序员可以查看生成得汇编代码的。