ubuntu常用命令学习基础(新手学习,注释部分难免会有错误)

younghuie3年前 (2022-10-24)ubuntu相关126

第一部分:基础常用命令

以下学习内容主要学习了youtube几位大神,然后做的笔记。


1.whoami

id -un


2.man

系统manual,man man ,有几个参数,可以显示需要查看的内容。


3.clear

clear -x,也有可能alias中指定了,我一般是直接ll。


4.pwd

迷路了用。print working directory. 后面会学到的 echo ~ 效果一样。


5.ls

字面意思是list,可直接列取当前目录的内容,或者指定path中的内容,如ls /home。(根目录是/,user目录是~,当前目录是./。

这个挺重要。)经常用到的参数是-l(long listing format),能显示文件属性、用户、用户组、大小、修改时间、文件名。-a好像

是all的意思,可以在当前目录使用ls -a -l(等同ls -al)命令来尝试。


6.cd

change the shell working directory的意思。常用的有:

cd folder

cd /folder/folder

cd .. 往回退一级目录,也可以cd ../../../往回退好几级。

cd + 向前一级目录

cd - 向后一级目录

cd ~ 这个直接到用户home

cd / 这个直接去根目录


7.mkdir

making directory(folder)的作用。

可以创建一个或者多个目录,mkdir a b c d ,通过这样来实现创新4个目录。也可以在a文件夹中创建b文件夹,通过mkdir a/b 。

如果没有a文件夹,而且想做到这一步的话,就用mkdir -p a/b  ,-p意思是创建parents。如果想要显示每一步的操作就-v,输

出你干了啥。mkdir ~/test 在user home目录下建立一个test目录mkdir -p ~/test/test2 这个就比较好理解了。


8.touch

创建一个文件,如touch a.txt ,如果重新创建了一个同名文件,会更改文件修改日期不删除原文件内容

(update modification time,timestamp)。


9.rmdir

仅删除空文件夹。


10.rm

remove文件或者文件夹。rm filea fileb filec , rm folder 。注意一下,这个命令没有挽回余地,需要谨慎使用。-v参数可以

看见自己干了啥。常用:

rm file.txt file2.txt

rm -ri folder 交互询问每个文件夹是否删除

rm -rv folder 输出你干了啥,但是没有挽回余地。


11.open

如果带有gui的操作系统,系统会找到相应的应用程序去打开。

可以open .打开当前目录,或者打开指定文件。命令行的服务器版本,用处不大。


12.mv

move文件和文件夹,同时支持rename。mv a.txt b.txt ,这个是重命名。同样支持-v输出结果。

支持多个文件如 mv a b c folder/ 。

更改文件夹名mv a/ A 。可以直接移动文件夹到上一级目录 mv A/ ../ 即可。


13.cp

意思就是copy,可以是文件也可以是文件夹。文件夹需要加上-r参数,意思是recursive。

cp a.txt b.txt

cp -r folder_a folder_b


14.head

输出文件头部的内容,默认是10行,可用-n参数来指定行数。

head a.txt -n 100 输出文件的前100行内容


15.tail

跟上面类似,只是输出结尾的内容。


16.>和>>

redirecting standard output重定向输出,比如 date > date.txt 这样会把当前时间输出到这个文件,如果重复命令,

会刷新文件内原来的内容。

如果是date >> date.txt 那么将得到每次输出的内容,属于appending追加。


17.date


18.cat

显示整个文件内容,有别于head和tail的。可同时显示多个文件 cat a.txt b.txt 。亦或者cat a.txt -n 这里的参数-n加数字可以显示

多少行,或者留空可以看到一共多少行。


19.less

cat是显示全文,less可以一页一页显示。less a.txt 可以显示这个文件的内容,如果要搜索,输入 / 就可以搜索相关内容,非常实用。

按 q 键可以退出。


20.echo

echo "abc" >> a.txt 可以吧显示的内容输入文件,即便没有这个文件也会新建一个文件。还能 echo ~ 功能类似pwd。

还能够显示文件如 echo * 或者 echo *.txt 或者 echo *.??? 跟 ls -l *.???相似, 这个比较特殊,可以理解一下。简单认为*代表全部,

?代表单个字符。还有些特殊的如{},echo test.{html,py,zip,pdf,txt} 这个试一下就知道啥意思了,如果是touch的话就能创建文件。

echo {1..99} 也同理,也可以用touch {1..99}.txt 这样很好理解。如果 mkdir -p ~/test/day{1..365} 这个就比较有意思了,趁机

会展开理解一下用途。


21. wc

word count 的意思,比如 wc a.txt 结果是几行、几个字、多少大小。也可以如下单独使用:

wc a.txt -l 多少行

wc a.txt -w 多少字


22. |

pipe,用于将一条命令的结果导入到第二条命令,例如:

ls -l | wc -l >> wc.txt 这样是不是会显示有几个文件呢,顺便到处结果到文件。这个看样子以后很有用。

cat a.txt b.txt | wc -l > lines.txt 一共几行,也是可以统计的。


23.sort

主要是用于排序等,可以清除重复的,顺序,逆序都可以。

sort a.txt 会按英文升序排列,大写在前,小写在后,如果加上-f ,应该是不区分。

sort numbers.txt 如果是数字的话,会按首个数字的大小来排列。

sort numbers.txt -n 加上-n后,会按照从小到大排列。

sort numbers.txt -nr 加上-r后意思是反转,就是从大到小排列。

sort numbers.txt -nr >> nums.txt 最后也是可以输出的,如果pipe的话,还能有其他用途。

如果numbers.txt文件中有1到999,这些数字,可以用上面的排列输出,如果其中有好几个数字888的话,

如何统计唯一数就用-u,以下演示一下:

多次运行echo "888" >> numbers.txt 后 sort numbers.txt -nru ,这样就可以了。

再复杂一些的情况可以这样:

cat a.txt b.txt c.txt d.txt | sort -nru | wc -l >> total.txt 应该就很好理解了。


24.uniq

唯一的,独一无二的。uniq file.txt 好像没啥用,只能去除临近的重复的单词。但是隔行的它就无能为力,所以一般

先用sort进行排列。如 sort file.txt | uniq ,其实这么做相当于sort file.txt -u ,但是uniq有一个参数

是duplicate,加上-d就可以只输出重复的内容。-u是指只出现过一次

的内容。最有用的应该是count,-c能够统计重复的内容出现几次,

如:cat a.txt b.txt c.txt d.txt | sort | uniq -c | sort -n >> total.txt 最后还能统计一下,必要要买的东西,

哪些东西需要多少个等,最后输出。


25.diff

对比文件内容:

diff a.txt a2.txt 对比区别。


26.find

find命令比较复杂,参数较多,比较复杂。find可以查找文件和目录,后面先跟一个目录如 . 或者 ~ 。

find . 当前目录的所有文件。find ~ 用户home的所有文件。

find . -name '7' 查找名字叫7的文件或文件夹在当前目录

find . -name '*7*' 查找名字中含有7的文件或文件夹在当前目录,跟上面的命令有本质区别的。

find . -name '*.txt' 这个比较好理解了。

find . -type d -name '*.zip' 这里的-d意思是指搜索文件夹,如果是-f那就是只搜索文件。

find . -type d -name 'F*' -or -name 'G*'  同时搜索F和G字母打头的文件夹。

find . -type f -size +100k -size -100M -name 'F*'  搜索文件大于100k小于100M的F打头的文件。

find . -type f -name '*.txt' -exec ls -l {} \; 把当前文件夹中所有txt文件找出来,然后“执行”ls命令,

最后以 \; 来结束命令。类似把搜索出来的

结果pipe给另外一个命令再执行,可以cat也可以rm。

find ./ -size +100M -size -1000M -name 'o*' -exec ls -l {} \; 这个能轻松找到自己编译的openwrt文件在哪里。


27.grep

这个跟find同样比较复杂。







第二部分:零星学到的








第三部分:shell scripting

1.实践了解一下变量。也可以在系统中事先自定义变量,如yh="younghuie",需要在.bashrc中export yh="younghuie",然后退出登录,然后再登录系统就设置好了。read是指手动输入的变量。有些如$SHELL等都是系统变量,还有一个随机数的变量$RANDOM,% 20 ,应该是指0-19的随机数(余数),括号里可以做各种加减乘除算法。

#!/bin/bash
echo 'what is your name'
read name
echo 'how old are you'
read age
echo "hello $name , you are $age years old. "
echo "$USER,$PWD,$SHELL,$PATH"
sleep 2
echo "计算中..........."
sleep 1
echo "...................."
sleep 1
echo "###................."
sleep 1
echo "########............"
sleep 1
echo "############........"
sleep 1
echo "####################"
getrich=$((( $RANDOM % 20 ) + $age ))
echo "$name , 你会在$getrich岁,变成亿万富翁"


分享给朋友: