Linux基础篇

权限:  1.文件   要对文件具有写权限,需要同时可读可写;  要对文件具有执行权限,需要同时可读可执行;

              2.目录   若仅可执行,相当于进了房间但眼睛被蒙上了,除非你知道房间里的物品,不然不可以修改房间里的物品;不可增删房间物品。

                            若可读可写,相当于站在门外,能看见物品存在却看不清它的属性(权限),更不可以增删房间物品。

                            若目录不为空,权限为 rwx 才能被删除。

ctrl+alt+F1~F6进入命令行模式,ctrl+alt+F7进入图形界面

date  +%Y/%m/%d   显示当前时间的 年/月/日,%H时,%M分

cal  月份 年份;显示日历

[tab][tab]命令补全,文件名补全

ctrl+c 终止程序

ctrl+d 键盘输入结束

man界面      /word 关键字查询    1表示用户可使用的命令或可执行文件   5配置文件或某些文件的格式  8系统管理员使用的命令

shutdown -h now/20:25/+10 ;定时关机

shutdown -r 时间;  重启

reboot ;  重启

切换执行等级:init num;    0关机    3纯命令行模式     5图形界面模式    6重启

ls -a(显示隐藏文件)  -l(显示权限等);

ls -ld  目录;    显示目录本身权限

改变文件用户组   chgrp 用户组名 文件/目录 ; -R 递归改变目录中的文件

改变文件所有者   chown 用户名[:用户组]  文件/目录;

改变文件权限       chmod 777 文件/目录;r4  w2  x1

/tmp 所有人都可以工作,只有所有者和root才能删除文件

mkdir 新建空目录;  touch 新建空文件 ;rmdir  删除空目录

cd -  ;进入前一个工作环境

cd ~; 进入自己的主文件夹      cd  ~account  ;进入account的主文件夹

pwd 显示当前所在目录路径

cp  文件1  文件2;  复制文件     -r  递归复制文件夹

在命令后面加上  &  可以将任务放在后台运行

cp会改变文件的所有者为操作者

下载下来的文件权限会发生变化

rm -r 文件夹;    递归删除文件夹       如果是root,使用  /rm 可以直接删除不用询问

mv 文件1  文件2  目标文件夹

cat  -n(显示行号)    文件;      从第一行输出文件

nl  文件;     添加行号打印

more ;一页页显示,空格向下翻,b回翻,q  离开,/word  关键字查询,  enter 下一行

less ;一页页显示,pagedown下翻,pageup上翻

head   [-n number ]  文件;   打印文件前number行

tail  [-n    number]  文件;    打印文件后number行

od  -t   c   二进制文件  ;   将二进制文件以ASCLL字符输出

umask    ;显示默认文件/目录 所需要去除的权限

umask  数字  ;   改变umask

chattr   +增加参数   -减少参数                 参数:a  只能增加参数,不能减删;  i  使文件不能删除,改名,更改

lsattr   文件;    显示文件隐藏属性

SUID     若执行者对二进制文件有x  权限,执行者将拥有所有者权限

SGID     若执行者对二进制文件拥有x 权限,执行者将拥有文件所属用户组的权限

              若执行者对目录具有rwx权限,则执行者在该目录下的有效用户组将变成目录所属用户组

SBIT     若执行者对目录拥有wx 权限,则只有自己和root  才能删除自己创建的文件和目录

大写ST代表空的,即文件或目录的所有者或组自身对它没有x  权限,无意义

有效用户组是用户新建文件或目录时显示的所属用户组

file 文件名;      查看文件类型

which  -a  命令;      在PATH中查找,将执行文件的所有完整文件名输出

whereis   文件名;   从数据库中查找特定文件,较快

locate   文件名;    从数据库中查找相关文件,较快

find  文件;     从硬盘中查找,较慢

gzip   -v   文件名;       将文件压缩并显示压缩比

gzip  -number   文件名;     number1~9   越大压缩比越大越慢

gzip  -d    xx.gz;     解压文件                 xx.bz2

bzip2   使用方法和gzip完全一样

tar  -jcv  -f   xx.tar.bz2    要被压缩的文件或目录;              打包并用用bzip2压缩

tar  -jxv  -f   xx.tar.bz2;                        bzip2解压缩

 

tar  -zcv  -f   xx.tar.gz    要被压缩的文件或目录;              打包并用用gzip压缩

tar  -zxv  -f   xx.tar.gz;                        gzip解压缩

参数-p  能使文件在解/压缩文件时保持文件原有的权限

dos2UNIX  file;  UNIX2dos  file;    将dos与Linux命令互转格式

iconv  -f   原本编码格式   -t   目标编码格式   文件;    语系编码转换

Vi  编辑器

                    一般模式下,G移动到文件最后一行,nG移动到文件第n   行;    ctrl+r   重做上一个操作;   u  复原上一个操作;   按住V 选择,y  复制,p粘贴,d  删除

                   i 进入编辑模式,ESC退出编辑模式

                   :   进入命令模式     :q!  强制离开不保存     :wq  保存后离开           :n1,n2s/word1/word2/g    将word1  用word2 替换       :sp  filename;  多窗口编辑 ctrl+w+↓进入下一窗口       ctrl+w+↑   进入上一窗口




文件系统最前面有一个启动扇区,可以安装引导安装程序
每个文件有一个inode,有多个block,12个直接,1个间接,1个双间接,1个三间接。inode 固定为128bytes,记录block 为4bytes
df -h ;列出文件系统磁盘使用情况
du -a;   列出当前工作目录中所有文件,目录占用的容量
ll -i 文件或目录;    打印属性和inode
fdisk  /dev/hdc;    管理磁盘,分区,删除分区等
fdisk -l ;   找出系统所有设备分区


umount 设备文件名或挂载点;   将设备卸载

mkfs -t 文件系统格式   设备文件名;      磁盘格式化    例:   mkfs -t  ext3 /dev/hdc6


莫名其妙的死机会导致系统错乱,使用  fsck -C -f -a [-t  文件系统格式]   设备名称;        自动检查并修复错误
mount /dev/hdc6 /mnt/hdc6;    将/dev/hdc6 挂载到/mnt/hdc6上
mount -a ;根据/etc/fstab里面的数据将未挂载的都挂载起来








type  command;   检测命令是外部命令还是内置于bash中
“  ”能保持原本变量的性质,’   ’不能
${var}  表示变量的值
`命令`或$(命令)  表示执行命令产生的结果
export var;     将变量转化为环境变量
$?  ;上个命令的回传码,若顺利执行则为0
read  -p  "please input num:"  num;    键盘输入
cat > t.txt< ~.tt.txt;          文件输入
cat >t.txt <<"eof";     若键盘输入"eof"则输入结束
declare 声明变量类型   -a 数组   -i 整形   -x  将变量定义为环境变量
var=${str-expr};       若str设置了,则var =${str},否则var=expr
var=${str=expr};       若str设置了,则var =${str},否则var=str=expr
通配符    是bash 操作环境中的一个重要功能,比如利用通配符配合ls 查找文件名:ll -d /etc/[^a-z]*;     cp  -a /etc/??? /tmp
                *表示0到无穷多个任意字符,? 表示一个任意字符    ------------通配符
                [abcd] 表示a,b,c,d中任意一个
                [a-b] 表示a到b中的任意一个
                [^abc] 表示不是a,b,c中任一个
标准输入<,<<        
标准输出>(清空),>>(追加)
错误输出 2>,2>>
命令 >t.txt 2>&1; 或  命令 &>t.txt;     将标准输出和错误输出都输出到同一文件当中




管道命令
       more,less,head,tail,sed,cut
       echo $PATH | cut -d ':' -f  n1,n2;      以':'为分隔符并取出第n1和n2项
       grep -n(显示行号)  'root';      取出包含'root'的行
tee双向重定向输出


        
正则表达式     是处理字符串的方法,与通配符类似但不能混淆
       [:alnum:] 数字及英文字符   [:alpha:] 英文字符  [:digit:] 数字 [:lower:] 小写字母  [:upper:] 大写字母
       grep -n '[[:lower:]]' t.txt;    输出包含小写字母的行
       grep -n '[^a-b]st' t.txt;      输出包含不是a和b的接st 的行
       ^ 在[  ]内则方向,否则为制表符,表示行首,$表示行尾
       .  表示一个任意字符,*  表示重复前一个字符0到无穷次   o*表示零个或多个o,   .* 表示任意字符串
       'o\{2,5\}'  表示2~5 个o
       
sed  's/word1/word2/g'    ;将word1 用word2替换
sed  '2,5d'   ;删除2~5 行
sed  '2a 字符串'   ;在第2 行后面插入字符串
sed  '2i 字符串'   ;在第2 行前面插入字符串


printf  '%s %5i %8.2f' $(cat t.txt)  ;  格式化输出


扩展正则表达式  egrep
        +重复一个及以上前一个字符   ?零个或一个前字符   ()组   ()+一个及以上前字符组






awk    NF每行拥有的字段总数   NR当前行数   FS当前分隔符
        awk '条件1{动作1}  条件2{动作2} '
       awk '{FS=":"} $3<10 {print $3}' t.txt


diff file1  file2  ;  比较文件是否一样










shell script


var=$((运算内容))
source  xx.sh  ;直接在父进程中执行


test -e filename;  判断文件名/目录 是否存在     -f  判断文件是否存在    -d  判断目录是否存在
test num1 -eq num2; 判断是否两数相等      -ne n1!=n2    -gt  n1>n2    -lt  n1<n2   -ge n1>=n2  -le n1<=n2
test str1 ==str2 ;判断字符串是否相等
[ str1 == str2 ];   判断字符串是否相等
[  ]中的组件都要用空格分开,变量常量都需要用双引号括起来
[ 条件1 -a 条件2 ]  ;判断是否同时成立
[ 条件1 -o 条件2 ]  ;判断是否至少一个成立
命令  参数1  参数2 ;   $0 表示命令接了多少个参数   $n 表示第n 个参数






if [ 条件 ]; then
    command
fi


if [ 条件 ];then
     command
else
    command
fi




if [ 条件 ];then
    command
elif [ 条件2 ];then
   command
else
   command
fi




case $变量 in
     "内容")
         command
        ;;
     "内容")
          command
        ;;
        *)
           command
         ;;
esac




函数
function  fname(){
      command
      $n 表示调用它的第n  个参数
}






函数调用:fname  参数1 参数2;




while [ 条件 ]
do
   command
done


for var in con1 con2 ...
do
   command
done






for((i=1;i<=100;i=i+1))
do
    command
done






sh -n xx.sh ;  测试是否有语法错误










UID为0代表是系统管理员
/etc/group  记录用户组信息
   bin用户组: x 密码:  1 GID: root,bin,daemon 用户组成员
/etc/passwd  记录用户信息
   root用户名: x密码: 0 UID :0 GID :root 用户组:/root 主文件夹: /bin/bash  shell
/etc/shadow   记录用户密码信息
    root用户名: * 密码: 14126 最近一次更改密码时间: x 密码不可变更天数 :x 密码需要重新更改的天数 :x 更改期限前警告天数: x 宽限天数: x 失效天数: x 待定


date --date="2008/09/04"  +%s;   从1970.1.1到这个日期的秒数


groups查看当前用户有效与支持用户组,第一个为有效用户组




useradd vbird1 ; 添加一个用户,其所属用户组为其本身
useradd -g 用户组1  vbird ;  添加用户并指定其有效用户组
useradd -G 用户组2  vbird ; 添加用户并添加到一个次要用户组当中
useradd -r vbird1;   创建一个系统账户
userdel -r vbird1;   删除一个用户并删除其主文件夹


passwd account;    给账户改密码


groupadd group1;  创建用户组
groupdel group1;   删除用户组


finger username;  查看用户相关信息
id [username];    查看某人或自己的UID和GID等


su - username;    切换用户
who ;  查看在线用户
write 用户账号 [用户终端接口];    给某人发信息


mail;   查看邮件
mail username@localhost ;  给某email
ACL给特定用户或用户组限制权限


at  仅执行一次的工作调度
    默认仅存在黑名单 /etc/at.deny
    at TIME;  然后编辑命令   TIME的格式:HH:MM,HH:MM YYYY-MM-DD,  HH:MM + number minutes/hours/days/weeks
    at -c 工作号码;   查看具体工作号码的任务
    atq  ;列出所以at  工作调度
    atrm number;  将number工作号码的任务取消
batch 用法和at 完全一样,在CPU 空闲时才执行






cron 循环执行的工作调度
   crontab -e ;进入编辑工作状态
      *分  *时  *日 *月 *周  command;      *代表任意时刻都可以,   1,6表示1和6   1-6表示1到6都可以  */n 表示以n为周期
   crontab -l;   查看所有工作调度


run-parts 文件夹;    将文件夹中的执行文件执行一遍


ctrl+z 将目前的工作暂停
jobs -l;  列出所有工作    -r 列出在后台run的工作  -s  列出暂停的工作


fg %jobnumer  ;将jobnumber工作号码的工作在前台执行   
fg  PID;  同上
bg %jobnumber ;将jobnumber工作号码的工作在后台执行
bg  PID;  同上


kill -9 %jobnumber ;   强制杀死jobnumber工作号码的任务
kill -9 PID;   同上
ps aux ;   查看系统所有的进程
ps -l ;   查看自己bash的相关进程


nice -n number  command;   number-20~19  越小命令优先级越高
renice number PID;   调整已经运行的命令的优先级








SELinux:安全强化的Linux
  ls -Z 目录/文件;    查看安全上下文
   *:*:type安全上下文


chcon -t tpye 文件/目录 ;  更改类型   -R 递归更改目录中文件
restorecon  文件/目录;     回复默认状态
getenforce 查看SELinux 模式
SELinux有三种模式:enforcing,permissive,disabled
SELinux有两种策略:targeted(默认),strict
sestatus  ;查看当前SELinux详细信息
setenforce 0/1;   转换模式:0为permissive,1 为enforcing
tail /var/log/messages ;   查看因SELinux 设置导致的问题的解决办法
setsebool -P 布尔值=0/1;    设置规则






服务于对应端口号设置在/etc/services中
若要关闭端口号则只需关闭与其对应的服务即可
service  服务 restart/stop/start
super daemon的配置文件在/etc/xinetd.d/中
查询某个服务是否可以设置防火墙:ldd $(which 服务名)    ;若出现libwrap.so 则可以设置防火墙
设置防火墙: vim /etc/hosts.allow;
               主程序名(在配置文件/etc/xinetd.d/*中的service那项)      限制的ip段
             vim /etc/hosts.deny;
               主程序名(在配置文件/etc/xinetd.d/*中的service那项)      限制的ip段




stand alone启动脚本在/etc/init.d/*中 ,super daemon 也是一个stand alone












tarball是一个软件包,经过打包并压缩后的文件
安装过程:
configure/config  检测操作环境并生成makefile 文件
执行make,make 通过Makefile 文件编译源文件






gcc -c 文件1.c 文件2.c;    生成文件1.o,文件2.o 目标文件
gcc -o 文件1.o 文件2.o ;    将目标文件链接起来并生成执行文件
gcc 文件.c -lm(加入libm.so函数库)  -L/lib(到这里找函数库)  -L/usr/lib  -I/usr/include(指定include的位置)


xx.so动态函数库
xx.a静态函数库
 


vim makefile;
    target: 目标文件1.o  目标文件2.o
    <tab>gcc -o 欲建立的可执行文件  目标文件1.o  目标文件2.o



make  target;   编译

rpm最大的特点是将你要安装的软件先编译过,并且打包成RPM机制的包,数据库里记录了该软件的依赖属性软件,该软件只能安装在默认的硬件与操作系统版本。
SRPM含有软件的源代码,并含有软件的依赖属性说明。
RPM解决依赖属性的方式:YUM在线升级
rpm -ivh xxx.rpm/网址;    安装软件
rpm -Fvh xxx.rpm;    更新软件
rpm -qa ;列出所有已安装软件
rpm -q 软件名;    查询软件是否已经安装
rpm -e 软件名;   删除软件
rpm -qc 软件名;   列出启动配置文件
rpm -qf 文件;   查询该文件是那个文件包所有
rpm -ql 软件名:   列出软件所有文件所在完整目录路径

rpmbuild --rebuild xxx.src.rpm ;安装srpm,生成xxx.rpm
yum search 软件名;  查询有无相关软件
yum install 软件名; 安装软件
yun remove 软件名;   删除软件
yum groupinstall 软件组;    安装软件组


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值