linux指令+shell基础编程(全)

linux指令

*移动: mv (mv ? dao ?)(如果mv A B(到)C,默认最后一个是到哪)


*复制:cp(cp ? ?)(-r 递归,复制文件夹使用)


*重命名:mv  /cp


*创建: mkdir(mkdir a/?)(-p 递归) touch


*删除 (强制): rm -rf (文件夹,递归)
         rm -f(文件)
          (rm -f ?
            rm -rf dsj*)
*返回上层:../


*回到家目录:cd ~

*ls -al 展示当前目录下文件的全部格式


*> ss.txt 覆盖输入 


*>> ss.txt 追加输入


*查看 cat / vim(:q 退出) 查看

*查看电脑使用情况: df (-h 增加可读性(10716 -> 11M))


*查看任务管理器: free -m (swap是临时磁盘)
less (q 退出)(空白键+上下 翻页)查看文件 ,以较小的内容进行输出)


*统计: wc 
(-l 行数  -w 单词数 -c 字节数(一个 字节 = 8 bit))
(wc (-l/-wl/-lwc/...) uu/ss.txt)

*查看文件末尾几行(日志): tail(不指定 就是末尾10行)
(tail -14 u/ss.txt)

 ~前几行(日志): head(~)

*查看文件动态变化(日志): tail (-F 时事跟踪(不区分大小写?)(ctrl+c 退出 ctrl+z 挂起)

*日历: cal(calendar(日历)):(-1 -2 -s -m -j -y -v -h)

*查询命令:  whatis mkdir


*~指令 :   mkdir --help
         man mkdir(q退出)
         infor mkdir(q退出)

*当前时间date:
年月日,时分秒
(固定格式:date "+%? %? ...")


*只显示年月日: (date "+%F) = (date "+%Y-%m-%d")


*只显示时分秒: (date "+%T") = (date "+%H:%:%MS")


*都显示:     (date "+%F %T")= (...)


*显示不是当天的日期: date -d "+1 day" "+%F %T"
            (固定格式:date -d "+/-数字 day/month/year=yeas" 
                                        可以加或不加固定格式"+%? %? ...")

【补充】:
    PDT:(Pacific Daylight Time)太平洋夏季时间。(与正常时区差14个小时)
            (太平洋时间的标准时间从协调世界时减去8小时(UTC 8)。)

    PST:(Pacific Standard Time )美国太平洋标准时间,
            (夏时制结束后就是PST。)

    CST:CST(China Standard Time)中国时间标准    
 )


*查找命令: grep
grep 选项 正则表达式
(grep -F "字符" 文件路径)

*管道|:指令1|指令2 (指令1的输出是指令2的输入)

【例】:

        输入:ls / |grep s

        输出:
                sbin
                srv
                sys
                usr

)

*查找文件命令: find 路径 表达式
(

【例】:查找当前下所有的记事本文件.txt
        find -name(以name形式) "*.txt"
        (加路径的话: find 路径-name "*.txt")
)

*历史命令查询:     

            1.history
            2.展示历史输入指令
            3.历史命令编号 
            4.展示历史命令编号 的历史指令 以及 输出结果


*设置别名:alias
(alias 新命令=“旧命令”)


*删除别名:unalias
(unalias 新命令)

*文件的压缩和解压:
    压缩: gzip 文件路径(红色)
    解压: gzip -d 文件路径 (文件夹必须写全名比如:1.txt -> 1.txt.gz)

*文件夹的压缩和解压:(-f -t -c -r -u -x文件 -z)
    压缩: tar -czvf uu.tar uu
    解压: tar -xzvf uu.tar -C yy 文件路径 (文件夹必须写全名比如:1.txt -> 1.txt.gz)


*文件编辑器: cat / less(:q 退出) / tail / head /
        vi(按i 进入插入模式,Esc,此时只能:wq退出 ,底线命令模式: )

0 1 2 3 4  5 图形 6 级别

*超级用户系统:
进入:su
(进入 ux普通用户)


1.相关配置文件:
(tail -5 /etc/shadow: 存密码的形式)
        密码相关信息:/etc/shadow
        组帐号基本信息:/etc/group
        用户基本信息: /etc/passwd

        (u:注释   ux:用户组名字    uid:用户id   gid:用户组id (还有附加组))

2.添加用户:useradd
 -g(主组) 1000 -G(附加组) 1002 -u(用户id) 666 (昵称)lin2

3.删除用户:userdel -r 用户名

4.删除用户组: groupdel -d 组名

5.添加用户组:

        a.直接添加(直接删除)
        b.先添加用户,自动生成同名的用户组(必须先删除用户再删除组)

6.添加用户:useradd -g 组号 -G 附加值号 =u 用户号 用户名

7.删除: gpasswd 
        (在超级管理员下创建的文件是全权限(绿色))


*权限管理:
        chmod 所设置的权限 目标文件


        a.以数字形式设置
               1. 权限:r读 4, w写 2 ,x可执行 1,- 无 0(8进制下)
               2.对象:【u主 g组 o其他】
                        u  属主(所有者权限)  g 属组(所有者所在的组的权限,也就是用户权限)  o(其他用户权限) 其他
                3.权限表示:
                 u    g   o
                rwx rwx rwx
                421 421 421

     【例】:
            chmod 740  a/1.txt (给1.txt的主对象设置rwx,组对象设置r,其他-)

        b.以字符形式设置
                +添加某权限,-取消某权限,对象:a = ugo
        【例】:
                chmod u+wx 1.txt(给1.txt的主对象设置wx)
                chmod a-x 1.txt(给1.txt的所有对象设置x)

        注意:chmod +rwx 1.txt = chmod uga+rwx 1.txt = chmod a+rwx 1.txt(给1.txt中的所有对象都赋予所有权限)

 *c语言

        1.创建或编辑C语言文件: gedit a.c

                (弹出a.c编辑界面,输入想保存的C语言文件,保存即可)

        2.编译该C语言文件:gcc a.c

                (出现a.out)

        3.运行该C语言文件: ./a.out

*vi编辑器

(Linux一般都是vim)

        1.进入:vi (没有输入后缀文件名,则会进入一个空的vim文件)

                创建 并进入vim: vi a.txt

                   (默认进入浏览模式)

                        【浏览模式】:

                               · 可以使用(’h‘、‘ j’、‘ k’、‘ l’)来代替光标进行(←,↑,↓,→)

                               · 移动光标到想要[删除]的位置,

                                        a.删除单个字符:

                                                (将单个字符放到字符缓存区)

                                                   (按‘p’将字符缓存区的单个字符粘贴到光标位置)

                                        b.删除光标所在位置的一行:按2次‘d

                                                (按‘p’将字符缓存区的一整行粘贴到光标位置)

                                        c.删除指定光标的字符或字符串:按‘d’,

                                                再输入想删除的个数,再根据朝左/朝→按键

                               ·按‘d’,按↑/按↓(删除光标当前行+上/下一行(共2行))

        注意:退出vi后 字符缓冲区的内容会被清空。

                                                                                

        

        2.进入【插入模式】:输入’i ‘(退出按‘Esc’)

                ·↑:A\n,↓B\n,→C\n,←D\n

                (输入:w 1.dat [保存]文件到1.dat文件(创建新的))

        3.进入【可视模式】:输入‘v’(退出按‘Esc’)

                ·移动光标到想要[复制]的位置,按y(Ctrl +c);

                ·移动光标到想要[粘贴]的位置按p(Ctrl +v).

                ·shift + h :定位到首位置

                 ·shift + l :定位到尾位置

        4.进入【覆盖模式】:输入‘r’(退出按‘Esc’)

        5.退出:   保存并退出 ‘:x’、强制写入并退出':wq'、普通退出 ':q'

        6.查看: cat 1.txt


*网络配置:
    1.进入超级管理员系统
    (ip地址 网络号和主机号,已经更新到并普遍使用IPv6,VPN 拨号上网)


    2.指令:ifconfig (window/linux):显示启用的网卡配置信息

                (普通用户也能查看,不能修改)
                (ifconfig -a 显示所有网卡配置信息)
                (ifconfig ens33 显示ens33的网卡配置信息)
               (Running 开启,mtu 最大传输单元,inet ip地址,netmask 子网掩码,inet6 ipv6,ether mac 硬件地址,RX 发送的数据包(接收信息的单位大小),dropped 丢包数,TX接受。。)


    3.网卡信息设为关闭/开启:ifconfig xxx down/up
            (RUNNING 消失,ip地址消失,硬件地址存在)


    4.为网卡指定临时ip地址(重启失效):ifconfig 网卡设备名 ip地址 子网掩码
            (一般指定C类(足够),255,255,255,0,A类(超大型)用不着)
           【例】:

                ifconfig ens33 192.168.122.200 netmask 255.255.255.0

*查询主机全名:hostname

    1.进入超级管理员系统    (普通用户也能查看,不能修改)
    2.(-s短主机名)(-i ip地址)
            (软测试专用地址:1 127.0.0.1)
    3.取别名(重启消失):hostname 嫦娥


*测试百度(问问百度)(window/linux):ping baidu.com/220.181.38.148(Ctr + c 取消)
        (ping -c 5(次) -i 0.5(最大秒数) baidu.com)


*netstat 查看网络连接
        -a 所有 -t tup协议 -u udp协议 -n 显示源ip地址和目的ip地址
        (listen 可监听状态)


*调试:
    1.    查看有没有被占用
        netstat -an | grep 9999
    2.    运行sever.py 
        python sever.py
    3.    打开浏览器访问 localhost:9999
    4.    netstat -an | grep 9999


*查看曾用名,域名,ip地址:
    nslookup www.baidu.com


*进入命令符界面:
    init 3
    登陆
    超级系统
    init 5


*rpm离线安装:
    1.安装
        rpm -i(安装)vh google-chrome-stable_current_x86_64.rpm
    2.卸载rpm
        rpm -e google-chrome-stable    
        (查询是否卸载完
        rpm -ga|grep google)
        (版本号只在安装的时候出现)
    3.升级
        rpm -U google-chrome-stable_current_x86_64.rpm


*YUM在线安装:
    1.查询已描写的软件和
        yum search google
    2.列出用yum已安装的软件和可以安装的
        yum list
        (查询是否安装成功:yum list |grep chrome
        列出已经安装的软件:yum list installed)
    3.列出提供yum的用户信息
        yum provides passwd
    4.安装
        yum install google-chrome-stable


*查看进程
    ps -a(查看当前终端进程,PID,STA,CMD )
    ps -ax(查看所有行终端进程)
    ps -axu(查看所有列终端进程)
    ps -u first(指定用户)
    过滤查找:ps -aux | grep 关键字


*调度进程:
    手动启动:
        前台启动:终端模拟器
        后台启动:命令前+‘&’可以转后台
    调度启动:


*杀死进程:
    kill pidch
    kill -9 pid (强制杀死)
    pkill
    pkill -u first(类似重启)
    

shell基础编程(+例题)


*shell编程
    #!/bin/bash
    #wj:bj.sh
    定义变量时:=两边不能加空格
    调用时候前加$
    输出(=printf):  echo "5 + 2 = $val"
                (输出结果:5 + 2 = 7)

$0参数名

$1第一个变量

$2第二个变量

$3第三个变量


*插入‘’到txt中    
    echo 'hello linux' > 521.txt    


*1+2:
    

expr 1 + 2
expr $[ 1 + 2 ]
expr $((1+2))


*6*4:
    

expr 4 \* 6


*6*2:
  

 expr 6 / 2


*if(-gt大于,-lt小于):

if [ $e -gt $18 ] 
then
echo "adult"
elif [ $e -lt 10 ]
then
echo “children”
else
echo "teenage"
fi

*步骤:

vim a.sh
chmod +x a.sh
./a.sh


*-a 与运算 -o或运算


*switch语句:
    【例题】:
        判断输入的数字反馈星期几。

            echo "Please input:"
            read i
            case $i in
            1) echo "Monday"
            ;;
            2) echo "Tuesday"
            ;;
            3) echo "Wednesday"    
            ;;
            4) echo "Thursday"
            ;;
            5) echo "Friday"
            ;;
            6) echo "Saturday"
            ;;
            7) echo "Sunday"
            ;;
            *) echo "Not have this day"
            esac


*for语句:
    【例题】:
        计算 1+..+50。
            方法1:

                sum=0
                for ((i=1;i<=50;i++))
                do let sum+=i
                done
                echo "方法1:1+..+50 = $sum"


            方法2:

                s=0
                for i in {1..50}
                do let s+=i
                let i++
                done
                echo "方法2:1+...+50 = $s"

*while语句:
    【例题】:
        打印1,..,10.

            i=1
            while (($i<=10))
            do
            echo "i = $i"
            let i++
            done


*until语句:
    【例题】:
        计算1,..,100偶数之和,奇数之和,整数之和
            

            sum=0
            sum_o=0
            sum_j=0
            i=1
            until [ $i -gt 100 ]
            do
            if [ $[$i%2] -eq 0 ]
            then
            let sum_o+=i
            else
            let sum_j+=i
            fi
            let sum+=i
            let i++
            done
            echo "sum = $sum "
            echo "sum_o = $sum_o"
            echo "sum_j = $sum_j"    


*function函数:
    【例题1】:
        设计一个函数使得输入的两个数互相加。
          

 function add()
            {
            return $(($1+$2));
            }
            read -p "input:" a b
            add $a $b;
            echo $a "+" $b "=" $?;

            (注意函数有分号)

    【例题2】:
           计算1-100的和,与其中奇数的和,偶数的和
 

#!/bin/bash
#wj:a.sh
let sum=0
let sum1=0
let sum2=0
let i=1
until[ $i -gt 100 ]
do
if[ $[$i%2] -eq 0 ]
then
let sum1+=$i
else
let sum2+=$i
fi
let sum+=$i
let i++
done
echo "sum :$sum"
echo "sum1 :$sum1"
echo "sum2 :$sum2"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值