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

详细版
1. 常用命令介绍:copy-Y总

(1) ctrl c: 取消命令,并且换行
(2) ctrl u: 清空本行命令
(3) tab键:可以补全命令和文件名,如果补全不了快速按两下tab键,可以显示备选选项
(4) ls: 列出当前目录下所有文件,蓝色的是文件夹,白色的是普通文件,绿色的是可执行文件
(5) pwd: 显示当前路径
(6) cd XXX: 进入XXX目录下, cd .. 返回上层目录
(7) cp XXX YYY: 将XXX文件复制成YYY,XXX和YYY可以是一个路径,比如../dir_c/a.txt,表示上层目录下的dir_c文件夹下的文件a.txt
(8) mkdir XXX: 创建目录XXX
(9) rm XXX: 删除普通文件;  rm -r XXX: 删除文件夹
(10) mv XXX YYY: 将XXX文件移动到YYY,和cp命令一样,XXX和YYY可以是一个路径;重命名也是用这个命令
(11) touch XXX: 创建一个文件
(12) cat XXX: 展示文件XXX中的内容
(13) 复制文本
    windows/Linux下:Ctrl + insert,Mac下:command + c
(14) 粘贴文本
    windows/Linux下:Shift + insert,Mac下:command + v

2.作业:

创建好作业后,先进入文件夹/home/acs/homework/lesson_1/,然后:
    (0) 进入homework_0文件夹,分别创建文件夹dir_a, dir_b, dir_c
    (1) 进入homework_1文件夹,将a.txt, b.txt, c.txt 分别复制成: a.txt.bak, b.txt.bak, c.txt.bak
    (2) 进入homework_2文件夹,将a.txt, b.txt, c.txt 分别重命名为: a_new.txt, b_new.txt, c_new.txt
    (3) 进入homework_3文件夹,将dir_a文件夹下的a.txt, b.txt, c.txt分别移动到文件夹dir_b下
    (4) 进入homework_4文件夹,将普通文件a.txt, b.txt, c.txt删除
    (5) 进入homework_5文件夹,将文件夹dir_a, dir_b, dir_c删除
    (6) 进入homework_6文件夹,查看task.txt的内容,并按其指示进行操作 
    (7) 进入homework_7文件夹,创建文件夹dir_0, dir_1, dir_2,
        将a.txt, b.txt, c.txt复制到dir_0下,重命名为a0.txt, b0.txt, c0.txt;
        将a.txt, b.txt, c.txt复制到dir_1下,重命名为a1.txt, b1.txt, c1.txt;
        将a.txt, b.txt, c.txt复制到dir_2下,重命名为a2.txt, b2.txt, c2.txt;
    (8) 进入homework_8文件夹,分别在dir_a, dir_b, dir_c文件夹下查看task.txt的内容,并分别按照指示进行操作
    (9) 进入homework_9文件夹,将其中所有txt类型的文件删除

3.完成作业:

cd homework/lesson_1/

ls
cd homework_0
mkdir dir_a dir_b dir_c
homework 1 test
homework 1 show

# Tab 补全:寻找目录中匹配的目录或文件名,自动猜测补全; 如: cp b. 按Tab  .再Tab
cd ../homework_1 
ls
cp a.txt a.txt.bak
cp b.txt b.txt.bak
cp c.txt c.txt.bak

cd ../homework_2
ls
mv a.txt a_new.txt
mv b.txt b_new.txt
mv c.txt c_new.txt
homework 1 test

cd ../homework_3
mv dir_a/* dir_b/   #正则表达式匹配   

#若进入了cd dir_b/ 再移动: mv a.txt ../dir_a/ 移动需要相对路径【dir_a相对于dir_b】
#同理cd dir_b/ 查看: ls ../dir_a/  
#瞎搞成功:mv ../dir_a/a.txt ../dir_b/ 

cd ../homework_4
ls
rm a.txt b.txt c.txt   # a Tab按键 b Tab按键 c Tab按键
homework 1 test

cd ../homework_5
ls
rm -r *   #-r 删除目录  
homework 1 test

cd ../homework_6
ls
cat task.txt #将task.txt重命名为done.txt, 创建目录dir_a,将done.txt移动到目录dir_a下
mv task.txt done.txt
mkdir dir_a
mv done.txt dir_a/
homework 1 test


cd ../homework_7
ls
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
homework 1 test

cd ../homework_8
ls
cat dir_a/task.txt #将a.txt删除
#可省略 ls dir_a/
rm dir_a/a.txt 
cat dir_b/task.txt #将b.txt重命名为b_new.txt
cd dir_b/ 
mv b.txt b_new.txt 
cd ..
cat dir_c/task.txt #将c.txt复制成c.txt.bak
cd dir_c/
cp c.txt c.txt.bak 
cd ..
homework 1 test

cd ../homework_9   #history后回车可以定位到当前命令输入行
ls
rm *.txt
homework 1 test
clear

4.常用作业命令

history 查看历史命令
homework 1 create 可以重新创建所有lesson_1的作业
homework 1 create id 可以单独创建lesson_1的第id个作业
homework 1 create 0 可以只重新创建lesson_1的第0个作业
homework 1 test 可以评测lesson_1的所有作业

5.补充小细节

mv a.txt dir/   #只写目录,说明保留文件名,移动到该目录
mv a.txt dir/new_a.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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

violet~evergarden

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值