同步跟新网址:戳这直接跳转!!!
Linux是一种广泛使用的类UNIX操作系统,是真正的多用户、多任务操作系统,具有强大的信息处理功能。
推动Linux发展的人们:
Linus —— 1991年发布
Dennis ——C语言之父
查理德 ——自由软件之父
Linux的特点:
操作系统的功能
Linux有两种版本:核心版本 和 发行版本 。
国内开发的Linux系统常见的有:普华,深度和麒麟。
文件类型
总结:
文件显示命令:
代码 | 作用 |
---|---|
cat |
打印输出 |
more /less |
查看文本 |
head |
打印文件开头 n行 |
tail |
打印文件结尾 n行 |
touch |
修改或创建文件 |
clear |
清屏 |
其他一些命令:
代码 | 作用 |
---|---|
pwd | 显示当前目录 |
cd / | 跳到总目录 |
ls | 列出所在目录下文件 |
ls -l | 列出所在目录下所有文件的详细信息 |
cd【文件夹名字】 | 进入文件夹 |
cd … | 退回上一级目录 |
mkdir 【文件夹名字】 | 创建文件夹 |
rmdir 【文件夹名字】 | 删除文件夹 |
cp 【A】 【B】 | 将【A】复制成为【B】 |
cat 【A】 | 查看文件内容 |
wc | 筛选统计 |
rm 【文件名】 | 删除文件 |
mv 【A】 【B】 | 把A的名字改成B |
mv 【文件名】 xxx/(目录) | 移动 |
chmod | 修改权限 |
继续更新,今天国庆中秋双节,祝大家双节安康!!!
链接文件:
Linux具有为同一个文件起多个名字的功能,称为链接。
... 9月 20 21:20 /etc/cfx->/king_file
硬链接和软连接之间的区别:
文件权限管理
文件/目录所有者:
文件类型:
rwx权限详解:
rwx作用到文件:
rwx作用到目录:
修改权限 chmod
修改文件或者目录的权限
例:
$chmod u=rwx,g=rx,o=x 【文件目录名】 分别赋予权限
$chmod o+w 【文件目录名】 给其他人都增加写的权限
$chmod a-x 【文件目录名】 给所有的用户都减掉执行权限
通过数字变更权限
规则:r=4 w=2 x=1 rwx=4+2+1=7
$chmod u=rwx,g=rx,o=x 【文件目录名】
$chmod 751 【文件目录名】
两种方式相同
更改权限:chown
chown 【宿主名】 [文件名]
文件压缩与解压
$cd /home/cfx/first
$gzip -dv * fir //将/home/cfx/first目录下所有文件压缩
$unzip fir.zip
tar zcvf wsyu.tgz file* //打包、压缩
tar zxvf wsyu.tgz //解压
暂时先不写,哈哈哈哈哈小白菜还不是很会!
linux中的shell简介
- Shell是linux的一外壳,它包在linux内核的外面,为用户和内核之间的交互提供了一个接口
- 当用户下达指令给操作系统的时候,实际上是把指令告诉shell,经过shell解释,处理后让内核做出相应的动作
- 系统的回应和输出的信息也由shell处理,然后显示在用户的屏幕上
- 简单的说,当命令或者程序不在命令行执行,而是通过一个程序文件来执行,这个程序就被称为shell脚本
- 也就是在shell脚本里内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕,这种通过文件执行命令的方式称为非交互式
- 适合处理操作系统底层的业务,有众多系统命令为其做支撑
- 适合处理纯文本文件,linux中许多服务配置文件,启动脚本
- linux系统脚本用shell开发更简单
查看系统的默认shell方法:
echo $shell
或者
grep root /etc/passwd ##如果想要查询其他用户,只需要更换关键字即可
#!/bin/bash ## /bin/bash指定解释器:由哪个程序来执行脚本内
echo "Hello world" ##注意:#!/bin/bash必须写在第一行,否则会被认为是注释。
查看所有的shell类型
cat /etc/shells ---查看所有的shell类型命令
chsh -l ---查看所有的shell类型命令
[root@emmmheng ex]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@emmmheng ex]# chsh -l
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
切换shell操作:
[root@emmmheng ex]# chsh
Changing shell for root.
New shell [/bin/bash]: /usr/bin/bash
Shell changed.
常用的shell类型有:
/bin/sh
/bin/dash
/bin/bash
/bin/rbsh
注释:可以命令后,也可以自成一行
脚本信息:
脚本名:最好以.sh结尾
老师讲的一些知识点:
字符串处理:sed
和awlc
执行脚本:
./ [脚本名]
dash [脚本名]
sourch [脚本名]
查看历史命令
①直接上翻按键
②命令:history
③清除历史记录:history -c
④若历史记录有编号:执行 ---- !+编号
关于计算:
var=123
echo $var
结果:123
echo class:$var
结果:class:123
echo 'class:$var'
结果:class:$var
echo "class:$var"
结果:class:123
var=1+1
echo $var
结果:1+1
let var=1+1
echo $var
结果:2
let var="1+1"
echo $var
结果:2
var='expr 18+2'
echo $var
结果:20
echo $[7+8]
echo $((7+8))
expr 7 + 8
结果均为:15
cat /etc/passwd | wc -l
wc -l /etc/passwd
②查看文件某一行或某几行
sed -n '5p' [文件名] --查看文件第五行
tail -1/-n [文件名] --查看文件最后一行/最后n行
head -1/-n [文件名] --查看文件第一行/前n行
head -5 [文件名] | tail -1 --查看文件第五行(命令组合使用)
③打印出100以内3的倍数
for i in {0..100..3};do echo $i;done
#!/bin/bash
for i in $(seq 1 100);
do
if let "i%3==0"; then
echo $i;
fi
done
④编写一个显示文本名称的脚本
#!/bin/bash
echo $o,$1,$2
当参数超过十个应:
#!/bin/bash
echo $0,$1,$2,$3,$4,$5,$6,$7,$8,$9
shift ---将参数整体左移
echo $9 ---打印第10个
shift ---将参数第二次整体左移
echo $9 ---打印第11个
⑤获取字符串某字段
打印字符串"My name is 1990"中"1990"字段
var="My name is 1990"
echo ${var:11:4}
结果:1990
str=${var:11:4}
echo $str
结果:1990
echo ${var: -4}
结果:1990
获取字符串"My name is 1990"长度
var="My name is 1990"
echo ${#var}
结果:15
var="My name is 1990"
echo ${var} | wc -L
结果:15
var="My name is 1990"
echo -n "My name is 1990" | wc -c
15 ----c参数: 统计字符的个数
echo "My name is 1990" | wc -c
16 -----n参数: 去除"\n"换行符
var="My name is 1990"
expr length ${var}
15
expr $str : ".*"
15
⑥查看文件是否存在
#!/bin/bash
if [ -f [文件名] ];then ---这里-f 和 -e 好像都行,又是有一、、差别
echo "文件存在"
else
echo "文件不存在"
fi
⑦将123写入file文件后,再追加456进去
echo 123 > file
echo 456 >> file
⑧创建函数
格式一:
function func_1 {
echo "This is func_1"
}
格式二:
func_2 (){
echo "This is func_2"
}
- 函数名name是用字母、数字、下划线构成,不能以数字开头,一般以函数功能去命名
- 函数出现重名时,以最新的函数为准,后续的函数调用都会使用新定义的函数
- 函数调用要在函数定义之后
⑨特殊符号用法
echo $* ---打印脚本参数
echo $@ ---打印脚本参数
echo $# ---打印脚本参数个数
echo $? ---上次命令是否执行成功
echo $$ ---打印进程ID
| ---表示管道,上一条命令的输出,作为下一条命令参数
|| ---表示上一条命令执行失败后,才执行下一条命令
& ---表示任务在后台执行,如要在后台运行
&& ---表示前一条命令执行成功时,才执行后一条命令
⑩三种循环
while 条件
do
命令
done
for (表达式1;表达式2;表达式3)
do
命令
done
until 条件
do
命令
done
④for-in
⑤select-in
......
【例题】分别用上述三种循环编写脚本,打印10以内的奇数。
#!/bin/bash
i=1
while [ $i -lt 11 ];do
[ $(($i%2)) -ne 0 ] && echo $i
((i++))
done
#!/bin/bash
for ((i=1;i<10;i=i+2));
do
echo $i
done
#!bin/bash
i=0
until [ "$i" -gt 99 ];do
let i++
if [ "$[i%2]" -eq 0 ];then
continue
fi
echo i=$i
done
【例】 编写一个脚本:打开某个文件或者目录,打印第1,3,5,7行内容。
Linux系统:(大致分为三层)
Linux内核实现功能:
Linux shell:
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。
Linux 文件系统:
各操作系统使用的文件系统并不相同,例如,Windows 98 以前的微软操作系统使用 FAT(FAT16)文件系统,Windows 2000 以后的版本使用 NTFS 文件系统,而 Linux 的正统文件系统是 Ext2。
ext2文件系统支持标准UNIX文件类型,包括:普通文件、目录文件、特别文件和符号链接。
本文已gcc编译系统为主:
有的系统会自带,但是我的没有,就需要自己安装!!!
gcc安装方法:
[root@emmmheng ex]# which gcc; ---检查Linux是否有gcc
/usr/bin/which: no gcc in (/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin)
[root@emmmheng ex]# yum install gcc; ----命令安装
预处理阶段:
#include <文件名> ----在系统 /usr/include 下寻找文件
#include "文件名" ----会现在当前目录寻找,找不到再去/usr/include 下寻找
静态编译:
gcc -static [文件名]
优点:执行快
缺点:内存大
_FILE_ ====打印文件名
_LINE_ ====打印所在行数
_FUNCTION_ ====打印函数名
_func_ ====打印函数名
2.查看宏定义是否存在:
[root@emmmheng ex]# cat hello.c
#include
int main()
{
#ifdef X32
printf("Defined X32!\n");
#else
printf("Not defined X32!!\n");
#endif
return 0;
}
[root@emmmheng ex]# gcc hello.c
[root@emmmheng ex]# ./a.out
Not defined X32!!
[root@emmmheng ex]#
3.gcc命令:
$gcc f1.c -o f2.c
$gcc f1.c
./a/out ===执行文件
编译会生成一个a.out
的可执行文件
gcc -v ====显示更多详细编译信息
-g ====调用gdb调试
-S ====只编译转成汇编文件以.s命名
4.makefile文件:
这个文件很神奇!!!
[root@emmmheng ex]# cat makefile
a:
echo "this is 'a'"
b:
echo "this is 'b'"
c:
echo "this is 'c'"
[root@emmmheng ex]# make b
echo "this is 'b'"
this is 'b'
提前写在makefile,可直接用make+命令名执行。
注意:在编写makefile文件时,命名昵称回车 是要按Tab键自动空行,否则执行时会报错!
makefile超级菜鸟坑(Makefile:2: *** 遗漏分隔符 。 停止)
5.一些杂七杂八的知识点:
ls [ab]*
:查找以a或b开头的任意文件[d]
:vi 调取宏定义小技巧sudo vim etc/shadow
:查看特殊文件/+(字符)
或 ?+(字符)
:快速查找字符串(vim时)