ubuntu常用命令学习基础(新手学习,注释部分难免会有错误)
第一部分:基础常用命令
以下学习内容主要学习了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岁,变成亿万富翁"