Linux基础命令
Linux
Linux命令分为两类:用type 命令可以查看,如果有builtin则为内部命令
内部命令:shell自带的命令
外部命令:用户安装的命令
shell:就是一个程序,或者说一个软件,安装在了Linux系统里面 ,我们常用的shell就是bash shell,当我们启动Linux时,输入正确的是账号和密码后就进入了bash shell里面了,我们平常都是通过bash shell来操作Linux内核的
命令执行的过程:当在客户端输入一个命令后,主要执行以下几个步骤
一.客户端将命令传给bash shell这个软件
二.bash shell这个软件会解析该命令
1.根据空格来切割字符串,把第一个位置认为是命令,其他的位置认为是命令的参数
2.判断命令是内部命令还是外部命令(如type)
3.如果是外部命令,就寻找该命令的可执行文件,如果是内部命令就将命令传给Linux内核
三.Linux内核执行命令
Q:外部命令需要查找可执行文件,那是不是会很慢?
A:不会,Linux内部维护一个环境变量 PASH:这里有一堆目录,会在这里查找外部命令的可执行文件的位置。这个环境变量相当于针对外部命令做的一个优化
--可以使用 echo $PATH命令来打印环境变量中的所有目录,有很多个目录,用分号分开,系统会在这里查询是否这个命令属于外部命令,如果没有查到就会显示(-bash: qwer: command not found)
--除此之外,Linux还是用了hash来提高执行命令的效率--最近执行过的命令会存储在hash表中,可以用hash命令来查看
file命令可以查看文件的类型
whereis-可以查看文件的所在位置
bash shell定义变量:
一.定义简单变量:
a=1 就是定义了一个变量a, 值为1,赋值中间不能有空格
echo $a 获取变量使用$符号
二.定义集合
arr=(1 2 3) 用圆括号定义集合用空格隔开几个中的各个值
echo ${arr[i]]} --打印下标为1的集合中的元素, echo $arr --也表示echo #{arr[0]} 取第一个元素
echo $$ --打印出当前bash shell的进程号
文件系统:分类将不同中的文件放在不同的目录下,便于查找,FileSystem Hierarchy Standard(文件系统层次化标准))
/bin:可执行文件,用户命令
/sbin:管理相关的命令
df -h 命令可以获取各个分区的信息,磁盘使用情况
du -h 文件名 命令可以显示文件系统的使用情况,就是这个文件夹目录下的个文件的磁盘使用情况
/boot:系统启动相关的文件,如内核、initrd、以及grub(bootloader)
/etc: 设备文件,鼠标、键盘、网卡。。。
/home: 用户的家目录,每一个用户的家目录通常会默认为/home/username
可以通过useradd username里添加家目录,但是mkdir 也能生成目录,不知道什么区别
/root:管理员的 家目录
/lib: 库文件,比如和操作系统相关的库放在这里,以及后期安装的第三方软件的库也放在这里
/media:挂载点目录,移动设备
/mnt:也是挂载点目录,额外的临时文件系统,比如dvd、u盘等
ls :显示目录
ls -a 显示全部目录,包括隐藏的目录(以点开头的文件)
ls -l 显示文件的详细信息 drw-r--r--. 2 root root 135 May 18 00:29 sysname
drw-r--r-- 这是头部信息,第一位表示这是文件的属性,杠--文件,d-目录, l-软连接(比如一个快捷方式),b-块设备文件(block),c-字符设备文件(character),p-命令管道文件(pipe),s-套接字文件(socket)
后面的9位代表权限,rwx 表示 读写执行的权限 3位代表一组,第一组是属主(owner,文件的创建者),第二组是属组(group),第三组是其他人
2 之后数字2 表示文件的硬链接数量
root 表示文件的属主的名
root 表示文件的属组(属主所在的组织)
135 表示文件的大小,单位是字节
May 18 00:29 这个时间戳是表示这个文件或者文件夹最后一次修改的时间
ll -i 显示文件的文件号
date --显示系统当前的时间
mkdir :创建目录
mkdir a/b/c 如果a 目录不存在,则无法创建后面的目录,但可以添加参数 -p 就会接连创建目录
mkdir a/xdir a/ydir a/zdir 创建多个命令,可以简写为 mkdir a/{x,y,z}dir}
cp :拷贝命令
cp /ect/profile . 将文件拷贝当当前目录中, 点表示当前目录
cp -r a b 将a目录拷贝到b目录里面,需要加参数 -r
mv :移动文件命令,也能修改文件名字, 也能移动目录
mv /etc/profile /a 将文件移动到当前目录下的a目录下
mv /etc/profile /a/newname 将文件移动到了a目录下,并改成了新名字
rm: 删除文件
rm name 删除文件 ,会有提示,输入yes再确认删除
rm -f name 直接删除,没有提示
rm -r -f dirname 直接删除一个目录,没有提示
ln :文件连接命令
ln profile abc 为 profile文件添加一个硬链接,文件号是相同的,其实是同一个文件,修改一个硬链接的文件,所有的文件内容都会改变,但删除的话,只会是硬链接数减一
ln -s profile abc 添加一个软连接 软连接其实是指向硬链接的,不是指向底层文件的,因此如果删除profile,那么abc这个软连接就没有用了
stat :查看文件详细信息,比ls更加详细的信息,比如访问时间、修改时间,修改元数据时间(访问权限等)
chomod o+w abc 更改文件abc的权限 加减号表示增加修改或者减少权限, g,o表示是为属组,其他人更改权限
touch :摸一下,更新文件的时间戳(访问、修改、更改元数据),一般与stat联合使用,
touch 文件名 也可以创建一个新文件
stat与touch命令在写shll脚本的时候使用较多
查看文件命令
cat filename1 filename2 可以一次查看多个文件
more filename 从头开始看,用空格和回车向下翻
less filename 从头开始看,还能用b 向前翻,原理是将文件写入内存中,因此如果文件很大,内存很小就可能是看不了了
head -n filename 查看文件前n行,不加参数时默认查看前10行
tail -n filename 查看后n行
tail -f filename 查看增量数据
管道: 竖杠 |
cat filename | head -4 管道前的命令会以输出流的形式将数据输出给管道后的命令,管道后的命令会以输入流的形式获取管道
比如组合 tail 与head就能打印出文件中的任意行数据
head -5 filename | tail -1 filename 打印出第5行数据
设置权限, sudo chmod 777 文件名,为所有人都设置最大权限 775 设置小一点的权限
浙公网安备 33010602011771号