Linux基础课 【合集】

网页格式讲义

点击跳转

Tip && Lecture notes

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

class1



/一个点当前目录 ;   ..上级目录  ;     ~/ 表示家目录(用户的目录配置)   好像等效    /home/             




Ctrl + c  向当前运行进程传一个终止信号    可以中断当前行直接重新起一行 
Ctrl + u 清空一行

ls tmp/  按没有反应,第二下会出现提示

各种命令加上  -h 选项 【人性化输出,更好看数据:2048KB】 

规定 : 蓝色文件夹    白色:文本

mv tmp.txt .tmp.txt    (改名成文件名前加'.'  ,变成隐藏文件 ls -a显示)

cd /bin   (显示出一堆东西) 

ls -al 与 ls-la 没有区别  


pwd 当前目录

cd- 返回上一个待过的目录

cp (复制+粘贴+重命名)

cp a/tmp.txt /b   (把a目录下的文件tmp.txt 复制到b目录下) 
 
cp a b -r  (-r递归缩写,把a整个文件夹复制到b的下面) 

rm a -r  (把a整个删除)
rm a/*  (把a里面的东西全删了)

rm /* -rf  【删库跑路】 
rm * -r (不会删除隐藏文件) 

mkdir --help  显示mkdir所有参数

history  显示历史指令 


mv  剪切+粘贴 ,同时也为重命名命令

cat a/tmp.cpp  cat只能查看文件,不能查看目录


做作业 :
homework x show    展示要求 
homework x create   创建作业环境  create就可以重做 
cd homework x homework/lesson_1/homework_0    第一次作业的第一题的操作路径
homework x test 检测作业得分 

 
在homework_0  中要先回到家目录   cd ~/  才能跳转到homework/lesson_1/homework_1   :原理 想象图形界面,可以退出到上一级目录,相对路径进入    



相对路径切换:  homework_1 -->  homework_2  用cd ../homework_2        反复横跳  ./././../    

一个提升敲命令的好习惯:  ./都用键盘左边的中文'?'处 

mkdir  创建目录 
touch 创建文件 

相对路径连退两级 : ../../ 


homework 1

homework 1 show

在这里插入图片描述

homework 1 test
在这里插入图片描述

order || command

cd /home/acs/homework/lesson_1
cd homework_0
mkdir dir_a dir_b dir_c

cd ../homework_1
cp a.txt a.txt.bak
cp b.txt b.txt.bak
cp c.txt c.txt.bak

cd ../homework_2
mv a.txt a_new.txt
mv b.txt b_new.txt
mv c.txt c_new.txt

cd ../homework_3
mv dir_a/a.txt dir_b
mv dir_a/b.txt dir_b
mv dir_a/c.txt dir_b

cd ../homework_4
rm a.txt b.txt c.txt

cd ../homework_5
rm dir_a dir_b dir_c -r

cd ../homework_6
cat task.txt
mkdir dir_a
mv task.txt dir_a/done.txt

cat task.txt
mv task.txt done.txt
mkdir dir_a
mv done.txt dir_a/

cd ../homework_7
mkdir dir_0 dir_1 dir_2
cp a.txt dir_0/a0.txt
cp b.txt dir_0/b0.txt
cp c.txt dir_0/c0.txt
cp a.txt dir_1/a1.txt
cp b.txt dir_1/b1.txt
cp c.txt dir_1/c1.txt
cp a.txt dir_2/a2.txt
cp b.txt dir_2/b2.txt
cp c.txt dir_2/c2.txt

cd ../homework_8
//删除错误不能 mv dir_b/task.txt dir_b/b_new.txt  ,会保留b.txt 
cd dir_a 
cat task.txt
rm a.txt
cd ../dir_b
cat task.txt
mv b.txt b_new.txt
cd ../dir_c
cat task.txt
cp c.txt c.txt.bak

cd ../homework_9
rm *.txt

class2


/*

homework 1 create 4   重建作业1的第4小题 

删掉整个文件,可以再看文件,但啥也没有,因为文件都没了 


tmux (1)分屏   (2)链接断开之后,仍然可以继续运行, 不用担心断网

tmux可以开多个session对话, 每个session可以开多个windows窗口,每个窗口可以开多个pane  , 每个pane可以开多个shell 
【概念 + 操作 17个】 

y总做了一个限制,占用带宽超过1M 断开链接,acwing滑动太快可能断开。
前缀建Ctrl + a ,后松开再按% ,即可分割页面 


开发必练 : tmux + vim 

tmux操作:  
选中一块【可以鼠标点击,也可以Ctrl + a 再方向键操作】,进行以下操作   (注意一下,这是y总改成了Ctrl + a ,实际不是) 
Ctrl + a 松开 ,再按出%  (shift + 5) ,左右分屏  
Ctrl + a 松开 ,再按出"  (shift + 5) ,上下分屏
Ctrl + d  关闭分屏 ,只剩下一块,再次按就退出tmux 
Ctrl + a  松开,再按z[按两次恢复]   (全屏/取消全屏) 
Ctrl + a  松开,再按d   挂起 , 从session出来 
Ctrl + a  再按s  ,可以选择上下两个session  按右箭头 ,向右展开 
每一块大小还可以拖动 

tmux a  (tmux attach 的简写) 

在每一个色session可以展开  ,按箭头左右(展开和收缩) 

Ctrl + a ,在 按  c  新开windows 
Ctrl + a ,在 按  w  选择windows 

 
一般一个session只放一个windows (足够看) 


鼠标可以实现翻滚
命令翻滚 Ctrl + a 加上 PgUp 
命令行下的文本编辑器

ESC任何模式均会返回一般命令模式   

-------------------------------------------------------

vim会按文件的后缀自动识别修饰(标亮) 

vim   编辑模式   i才能编写    下方会显示INSERT  
可以做一些设置 , set nonu 无行号   ; set nu 行号 

vim在编辑模式会卡在最后一个字母前 


连续跳5  Ctrl + 5

按 冒号:行数   (跳转对应行号)

gc询问换不换  y换  n不换 


v选中文本,可以删除


ggdG  代码全删连招 

Ctrl + q  中断 


d删除选中 , dd是剪切,删除当前行  ,可以再粘贴回去 
y复制选中 , yy复制当前行 
u撤销

gg=G 全文格式化

set paste 取消缩进 , 再粘贴,直接格式化好
set no paste 开启缩进

保证每一个文件只有一个进程打开,否则报错,需要关闭
删掉 .main.文件.swp    没有了警告,vim就可以同时开多个进程

tmux左边看作业内容,右边做作业  

*/
做第二次作业 :
tmux环境  Ctrl + a 松开后按 % ,分屏:一边看作业内容,一边作业 

根目录要//home   其他不要前面加/101个字符: 101+空格跳转
i编辑模式 再按back 


gg第一行   shift + g == G最后一行 
ESC返回一般命令模式 , i编辑模式
16G或:16 跳转到16:wq 保存

重置单个作业环境:cd .. (先退出,重置会删除该目录)   homework 2 create x(单个作业) 

ESC一般命令模式 : /查找的单词  i编辑模式执行操作  多个目标按n跳转到下一个 
back删前面的字符,delete键删除后面的字符 
dd删去整行 


代码复制到终端:  先冒号 :set paste   i进入编辑模式 , shift + insert 复制完成 


dd剪切 , 选中行的下一行按p粘贴


v选中模式 
$p
14<space>  第十四个字符的后面 <space>空格
G$p 到最后一个字符后面粘贴

15Gv21G > 同理再v21G选中  再次 > 

用v指定连续一段,要记得退出ESC 

homework 2

homework 2 show

在这里插入图片描述
在这里插入图片描述
homework 2 test
在这里插入图片描述

order || command

cd homework_0
vim names.txt
输入 i 进入编辑模式
依次输入各个单词
按ESC返回一般命令模式
按 :wq 保存并退出





cd homework_1
vim problem.txt

[1] 最后一行第101个字符:G101<Space>i<Backspace>ESC
[2]3行第8个字符:3G8<Space>i<Backspace>ESC
[3]1行第30个字符:gg30<Space>i<Backspace>ESC
[4]16行第55个字符::16<Enter>55<Space>i<Backspace>ESC
[5]9行第80个字符:9G80<Space>i<Backspace>ESC

保存::wq<Enter>





cd homework_2
vim problem.txt
输入/two依次查找每个two
[1] 在第1"two"的后面添加"abc"  按i进入编辑模式添加即可
[2] 在第2"two"的前面添加"def"  按i进入编辑模式添加即可
[3] 将第3"two"后面的连续12个字符删掉  按i进入编辑模式,然后直接删即可
[4] 将第4"two"所在的行删掉  输入dd即可
:wq 保存并退出




cd homework_5
vim problem.txt
[1] 删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)  11G14<Space>v13G5<Space>d
[2] 将所删除的内容粘贴到文件末尾(注意不要另起一行)  G$p
[3] 复制第5行第88个字符(包含该字符)至第7行第6个字符(包含该字符)  5G87<Space>v7G6<Space>y
[4] 将所复制的内容粘贴到当前文件末尾(注意不要另起一行) G$p
:wq  保存并退出

`注意开始删除第十五个字符及其后面,则需跳到14G(光标在后面开始删除,而结尾到第5个字符就跳转到5`
同理复制包含88及其后面,即87个字符起的后面`【与删除区别:back就是删除光标前面的,所以删除单个字符就直接锁定】`
`连续粘贴删除,每次都定位在起始,再按v然后定位结尾位置`
`$定位行最后一个字符`


cd homework_4
vim problem.txt
[1] 删除第1111Gdd
[2] 将所删除的行粘贴到文件最后一行的下一行  Gp
[3] 复制第55Gyy
[4] 将所复制的行粘贴到文件当前最后一行的下行  Gp
:wq  保存并退出





cd homework_5
vim problem.txt
[1] 删除第11行第15个字符(包含该字符)至第13行第5个字符(包含该字符)  11G14<Space>v13G5<Space>d
[2] 将所删除的内容粘贴到文件末尾(注意不要另起一行)  G$p
[3] 复制第5行第88个字符(包含该字符)至第7行第6个字符(包含该字符)  5G87<Space>v7G6<Space>y
[4] 将所复制的内容粘贴到当前文件末尾(注意不要另起一行) G$p
:wq  保存并退出




此题忘先i进入编辑模式导致第一个字符被"吃掉"
//仅支持Windows和Linux系统的做法:
cd homework_6
vim source0.cpp
ggdG  # 删掉全文
Ctrl-a, "   在tmux中打开一个新的pane
vim source1.cpp
:set nonu  删掉行号
选中pane, Ctrl + a z 全屏/退出全屏
shift + 选中前3行
Ctrl + insert 复制选中内容
选择source0.cpp所在的pane
:set paste 进入粘贴模式
i进入编辑模式
Shift + insert粘贴内容

同理操作source1.cpp的第12-24行
保存source0.cpp  :wq
退出source1.cpp  :q




cd homework_8
vim source.cpp
选中15-2115Gv21G
向右缩进一次   >
同理再缩进一次

选中22-2322Gv23G
向左缩进一次   <
:wq   保存并退出




最后学会抄代码,抄写链接页面的代码
https://www.acwing.com/activity/content/code/content/1694465/
#include<iostream>

using namespace std;

int main()
{
	int a, b;
	cin >> a >> b;
	cout << a + b <<endl; 
	return 0;
}






homework 3

shell语法较多,详情请点击这里查看

在这里插入图片描述
在这里插入图片描述
homework 3 test
在这里插入图片描述

homework 3 show

#! /bin/bash

# *********  homework_0 **********

dir0=/home/acs/homework/lesson_1/homework_0

for i in dir_a dir_b dir_c
do
    mkdir ${dir0}/$i
done

# *********  homwork_1 **********

dir1=/home/acs/homework/lesson_1/homework_1

for i in a.txt b.txt c.txt
do
    cp ${dir1}/${i} ${dir1}/${i}.bak
done

# *********  homwork_2 **********

dir2=/home/acs/homework/lesson_1/homework_2

for i in a b c
do
    mv ${dir2}/${i}.txt ${dir2}/${i}_new.txt
done

# *********  homwork_3 **********

dir3=/home/acs/homework/lesson_1/homework_3

for i in a.txt b.txt c.txt
do
    mv ${dir3}/dir_a/$i ${dir3}/dir_b/
done

# *********  homwork_4 **********

dir4=/home/acs/homework/lesson_1/homework_4

rm ${dir4}/*

# *********  homwork_5 **********

dir5=/home/acs/homework/lesson_1/homework_5

rm ${dir5}/* -r

# *********  homwork_6 **********

dir6=/home/acs/homework/lesson_1/homework_6

mv ${dir6}/task.txt "${dir6}/done.txt"
mkdir ${dir6}/dir_a
mv "${dir6}/done.txt" ${dir6}/dir_a

# *********  homwork_7 **********

dir7=/home/acs/homework/lesson_1/homework_7

for ((i=0;i<3;i++))
do
    mkdir ${dir7}/dir_$i
    for j in a b c
    do
        cp ${dir7}/${j}.txt ${dir7}/dir_${i}/${j}${i}.txt
    done
done

# *********  homwork_8 **********

dir8=/home/acs/homework/lesson_1/homework_8

rm ${dir8}/dir_a/a.txt
mv ${dir8}/dir_b/b.txt ${dir8}/dir_b/b_new.txt
cp ${dir8}/dir_c/c.txt ${dir8}/dir_c/c.txt.bak

# *********  homwork_9 **********

dir9=/home/acs/homework/lesson_1/homework_9

rm ${dir9}/*.txt


#! /bin/bash

if [ $# -ne 1 ]        #-ne不等于
then
    echo arguments not valid
    exit 1
fi

if [ ! -e "$1" ]     #-e等于 
then
    echo not exist
    exit 2
fi

if [ -f "$1" ]   # 不写退出状态默认为0,表示正常退出
then
    echo regular file
fi

if [ -d "$1" ]
then
    echo directory
fi

if [ -r "$1" ]    # 分别判断是否有读、写、执行权限
then
    echo readable
fi

if [ -w "$1" ]
then
    echo writable
fi

if [ -x "$1" ]
then
    echo executable
fi

cd ../homework_2
vim main.sh
chmod +x main.sh
:wq

./main.sh main.sh



#! /bin/bash

read n

a[0]=1
a[1]=1

for ((i = 2; i <= n; i ++ ))
do
    x=$(expr $i - 1)
    y=$(expr $i - 2)
    a[$i]=$(expr ${a[$x]} + ${a[$y]})
done

echo ${a[$n]}

#! /bin/bash

read n
read m

for ((i = 1; i <= n; i ++ ))
do
    st[$i]=0
done

dfs() {
    if [ $1 -eq $n ]
    then
        m=`expr $m - 1`
        if [ $m -eq 0 ] 
        then
            echo ${path[@]}
            return 0
        fi
        return 1
    fi  

    local j=0
    for ((j = 1; j <= n; j ++ ))
    do  
        if [ ${st[$j]} -eq 0 ] 
        then
            path[$1]=$j
            st[$j]=1

            if dfs `expr $1 + 1`
            then
                return 0
            fi

            st[$j]=0
        fi
    done

    return 1
}


dfs 0



#! /bin/bash

input_file=$1
output_file=$2

read n < $input_file


sum=0

for ((i = 1; i <= n; i ++ ))
do
    sqr=`expr $i \* $i`
    sum=`expr $sum + $sqr`
done

echo $sum > $output_file

order || command

homework 4

homework 4 show

order || command

homework 5

homework 5 show

order || command

homework 6

homework 6 show

order || command

homework 7

homework 7 show

order || command

homework 8

homework 8 show

order || command


版权声明:本文为m0_58466526原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。