一、常用的文件、目录操作命令
这是我们使用得最多的命令了,Linux最基础的命令!
- 可用
pwd
命令查看用户的当前目录 - 可用
cd
命令来切换目录 .
表示当前目录..
表示当前目录的上一级目录(父目录)-
表示用 cd 命令切换目录前所在的目录~
表示用户主目录的绝对路径名
绝对路径:
- 以斜线(/)开头 ,描述到文件位置的完整说明 ,任何时候你想指定文件名的时候都可以使用
相对路径 :
- 不以斜线(/)开头 ,指定相对于你的当前工作目录而言的位置 ,可以被用作指定文件名的简捷方式
tips:输入命令的时候要常用tab键来补全
ls
:显示文件或目录信息mkdir
:当前目录下创建一个空目录rmdir
:要求目录为空touch
:生成一个空文件或更改文件的时间cp
:复制文件或目录mv
:移动文件或目录、文件或目录改名rm
:删除文件或目录ln
:建立链接文件find
:查找文件file/stat
:查看文件类型或文件属性信息cat:
查看文本文件内容more:
可以分页看less:
不仅可以分页,还可以方便地搜索,回翻等操作tail -10
: 查看文件的尾部的10行head -20
:查看文件的头部20行echo
:把内容重定向到指定的文件中 ,有则打开,无则创建管道命令 |
:将前面的结果给后面的命令,例如:ls -la | wc
,将ls的结果加油wc命令来统计字数重定向 > 是覆盖模式,>> 是追加模式
,例如:echo "Java3y,zhen de hen xihuan ni" > qingshu.txt
把左边的输出放到右边的文件里去
二、文件打包和压缩命令
压缩的方式也是有好几种,我们常用的有下面这三种:
- gzip
- bzip2
- tar
常用的压缩的命令就有:
gzip filename
bzip2 filename
tar -czvf filename
常用的解压命令有:
gzip -d filename.gz
bzip2 -d filename.bz2
tar -xzvf filename.tar.gz
三、正则表达式+grep
1、正则表达式
2、grep命令
grep(global search regular expression)是一个强大的文本搜索工具。grep 使用正则表达式搜索文本,并把匹配的行打印出来。
格式:grep [options] PATTERN [FILE...]
- PATTERN 是查找条件:可以是普通字符串、可以是正则表达式,通常用单引号将RE括起来。
- FILE 是要查找的文件,可以是用空格间隔的多个文件,也可是使用Shell的通配符在多个文件中查找PATTERN,省略时表示在标准输入中查找。
- grep命令不会对输入文件进行任何修改或影响,可以使用输出重定向将结果存为文件
例子:
- 在文件 myfile 中查找包含字符串 mystr的行
grep -n mystr myfile
- 显示 myfile 中第一个字符为字母的所有行
grep '^[a-zA-Z]' myfile
- 在文件 myfile 中查找首字符不是 # 的行(即过滤掉注释行)
grep -v '^#' myfile
- 列出/etc目录(包括子目录)下所有文件内容中包含字符串“root”的文件名
grep -lr root /etc/*
四、系统管理命令
stat 显示指定文件的详细信息,比ls更详细
who 显示在线登陆用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
五、远程登录与NFS
Telnet是Internet提供的一项基本服务,用来将本地计算机作为远程计算机的终端机使用。
telnet 主机名或IP地址
exit或logout命令退出
telnet以明文传输不安全,因此禁止root身份登录
SSH 主机名或IP地址
//作为telnet的替代,以公开密钥算法加密数据,允许root登录
scp 本地文件路径 远程用户名@主机:文件路径
//用于本地与远程计算机之间安全拷贝文件 如:
scp z3@202.207.30.136:a.txt
sftp 远程用户名@主机
//以安全模式进入ftp状态,此时可执行该状态下的命令:
get 远程路径 本地路径
//下载
put 本地路径 远程路径
//上传
quit
退出
? //列出该状态可使用的命令清单,其中不少同Linux Bash命令如mkdir、cd、ls等,都是针对被登录机操作,若对本地机操作,则在命令前加字母l,如lmkdir、lls等
NFS(Network File System):通过网络将远程主机的文件系统挂载到本地主机目录下,以便于使用,它基于客户机/服务器模式,建立在TCP/IP协议的表示层协议与会话层协议机制之上。
六、vim程序编辑器
vim是vi文本编辑器的进阶版,在所有linux系统上均可使用,被称为“编辑器之神”。
vi分为三种模式:一般模式,编辑模式和指令列命令模式
vi hello.c //进入hello.c文件,此时为一般模式,若hello.c不存在则自动新建
一般模式下执行vi定义的键盘上转义字符操作,del为删除光标上字符,dd为删除一整列,退格键及上下左右键移动光标,i进入插入光标前编辑模式,a进入插入光标后编辑模式,r进入改写编辑模式;
编辑模式下键盘上所有按键除ESC外都可输入字符,如上下左右键分别代表ABCD大写字母,按ESC退出编辑;
在一般模式下按:进入指令列模式,最下面一行为指令列,wq保存并退出。
七、gcc编程
gcc中库的链接顺序是从右往左进行,所以要把最基础实现的库放在最后,这样左边的lib就可以调用右边的lib中的代码。同时,当一个函数的实现代码在多个lib都存在时,最左边的lib代码最后
link,所以也将最终保存下来。
objdump -T libmysqlclient.so
//打开当前目录下的动态链接库libmysqlclient.so查看其中的API。objdump命令用来查看各种目标文件(elf文件)内部的结构
obidump -h hello.o
//参数-h把hello.o各个段的基本信息打印出来,elf文件是分段的,通常分为Header、.data(数据段包括局部静态变量和全局变量)、.text(代码
)、.rodata、.bss、.comment等
readelf -s hello.o //查看详尽段信息
gcc错误:undefined reference to function 该函数具体实现没有找到
info gcc
//显示gcc的所有信息
八、mysql操作
SQL:Structured Query Language
netstat -tap|grep mysql
//检查系统有没有已安装mysql,若socket显示listen则表示就绪。
mysql中unique key(唯一键)指除主键外确保某一列唯一性的约束,该列可包含NULL(空值);primary key为主键
apt-get install mysql-server
//安装mysql
mysql -u root -p
//以root用户登录mysql server,之后需输入密码
show databases; show tables;
//查看数据库和数据表单,注意在mysql server中输入指令以;结尾。
use mysql;
//使用数据库mysql也可以在登录时输入指令:
mysql -D mysql -u root -p
quit;
//退出
insert into students(id,name,sex) value(1,zhengfeng,man);
//向students表中插入zhengfeng的信息
select * from students
//输出students的所有信息,*是通配符,可指定为列名称
create table students(
id int(8) not null auto_increment,
name varchar(255) not null,
sex char(4) not null,
tel char(13) not null default “-”,
primary key(id),
unique key unique_name(name)
-
);
describe students
//输出表结构信息
mysql_config --libs
//使用mysql_config工具确定MySql程序的链接参数,同理,若需确定编译参数,使用mysql_config –include
九、redis操作
注:redis是一个高性能的key-value数据库,由ANSI C编写,支持网络,它支持的value类型包括string、list(字符串链表)、set(字符串集合)、zset(字符串有序集合)、hash(字符串哈希类型)。
竞态条件和原子操作的概念:
原子操作指该命令在执行过程中不会被其他插入命令打断,是“一气呵成”的;
竞态条件:指一个系统或进程的输出,依赖于不受控制事件出现的顺序或时机,若多个客户端连接到redis,同时执行多项命令时有可能出现竞态条件,关于此问题的深入讨论在《链接、装载和库》中详细提及。
apt-get install redis-server
//安装redis
netstat -nlt grep|6379
//查看系统中redis运行状态,listen为就绪
redis-cli
//进入redis命令行客户端,cli:command line interface 此为进入交互模式,可自由输入命令。
select 1
//选择1号数据库,redis实例默认自带16个数据库,以数字编号,可通过配置文件更改。