装deb包:
sudo dpkg -i xxxx.deb
win10 ubuntu 双系统时间不同的修改方法:
timedatectl %查看时间
sudo timedatectl set-local-rtc 1 %修改时间
timedatectl %查看时间
寻找带net的进程并杀死
ps -e | grep Net % ps -e 表示显示所有的进程,grep Net表示找名字中带Net的进程,并显示其进程号
sudo kill -9 853 %kill -9表示强制关闭,之后跟的是进程号
ubuntu install pip:
sudo apt-get install python-pip
ubuntu install netease music:
http://music.163.com/#/download
sudo dpkg -i netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb
if wrong:
sudo apt-get -f install
sudo dpkg -i netease-cloud-music_1.0.0_amd64_ubuntu16.04.deb
ubuntu run github project:
for example,https://github.com/soumith/ganhacks.git
git clone https://github.com/soumith/ganhacks.git
(sudo apt install git)
putty winscp project
命令行设置参数:
python xxx.py --images /path/to/images
- 1
运行
python xxx.py
- 1
检测linux系统中是否已经安装了pip
pip --version
- 1
python 报错: ImportError: cannot import name imread
有可能是没有安装scipy
也有可能需要安装需要install PIL or Pillow
pip install Pillow
- 1
获取Ubuntu版本号: /etc/issue 或 lsb_release -a
2. 查看Ubuntu系统位数:uname -ar 或 getconf LONG_BIT
3. 查看Ubuntu机器的处理器架构,结果为i686或x86_64:arch 或uname -m
4. 显示当前目录内容(目录清单),(如果按文件改动时间顺序来排序,则可用ls -lt): ls
5. 显示当前目录下文件的详细信息,包括读写权限,文件大小,文件生成日期等(若想按照更改的时间先后排序,则需加-t参数,ll -t或ll -t |tac,后者为最新修改的时间排在最后):ll
6. 改变当前工作目录位置,(若进入系统根目录,可直接使用cd /) :cd directory_name ,若文件夹有空格,则需用引号括起来,如进入目录名为a b的目录,则为:cd “a b”
7. 删除当前目录中指定文件,如删除.xxx的所有文件,(对于链接文件,只是删除了链接,原有文件均保持不变;如果没有使用-r选项,则rm不会删除目录;如果想删除前再次获取确认,可使用-i选项,如rm -i xxx):rm *.xxx
8. 删除空目录,一个目录被删除之前必须是空的,删除某目录时也必须具有对父目录的写权限:rmdir xxx
9. 移动文件(若将文件xx.yy移动到目录tt中,则为mv xx.yy tt)或将文件改名(若将文件名xx.yy改为aa.bb,则为mv xx.yy aa.bb):mv 源文件或目录 目标文件或目录
10. 复制文件(可同时有多个文件)或目录到指定的目录(若将目录aa复制到bb目录中,则为:cp -a aa bb):cp 源文件或源目录 目的目录
11. 建立新目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录,(如果创建权限为777的目录,可用mkdir -m 777 filename):mkdir filename
12. 查看某个指令的详细说明,如查看rm指令:man rm
13. 创建静态库,如使用当前目录中的所有.o文件创建libxx.a静态库:ar -r libxx.a *.o
14. 创建动态库,如使用当前目录中的所有.o文件创建libxx.so动态库(若有两个在不同目录的.cpp文件直接生成动态库,则为:gcc -shared/home/spring/gdbtest/src/add/add.cpp/home/spring/gdbtest/src/subtract/subtract.cpp -o libtest.so)(若从静态库b1.a,b2,a直接生成动态库b.so,则相应命令为:gcc-shared -fPIC -Wl,--whole-archive b1.a b2.a -Wl,--no-whole-archive -o b.so):gcc -shared –o libxx.so *.o
15. 查看当前所处路径(完整路径):pwd
16. 需要提示权限执行的命令,如果你不是root用户,那么在执行一些命令做一些操作的时候有时是不允许的,此时可以在命令前面加上sudo:sudo
17. 查看静态库是否含有某个函数,如查看xx.a静态库中是否有fun1函数(也可以查看某个库所有包含的函数,如nm xx.a >fun.txt):nm xx.a | grep fun1
查看动态库是否含有某个函数,如查看yy.so动态库中是否有fun2函数(也可以查看某个库所有包含的函数,如 nm yy.so > info.txt):nm yy.so | grep fun2
如果仅导出已定义的符号,则加上"-D"选项,如nm -D yy.so | grep fun2
18. 查看cpuinfo相关信息:cat /proc/cpuinfo
19. 显示系统日期:date
20. cal命令用于查看公历(阳历)日历,可以查看指定年份的,如cal -y 2013, 也可以查看当前月的,直接用cal,无需带任何参数。
21. 关闭系统(若非root,则shutdown前需加sudo):shutdown -h now
22. 重启系统(若非root,则shutdown前需加sudo):shutdown -r now
23. 与windows共享目录命令,如共享目录为test(http://download.csdn.net/detail/jiaoxiaogu/7309181 ):cd /mnt/hgfs/test
24. 创建一个指向文件或目录的软连接(当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间)。格式,ln -s 源文件 目标文件。文件保持同步变化。目录只能创建软链接,目录创建链接必须用绝对路径,在链接目标目录中修改文件都会在源文件目录中同步变化。如给源目录/home/spring/aa创建一个新的目录/usr/local/aa:ln -s /home/spring/aa /usr/local/aa
25. 更改文件或目录的日期时间,包括存取时间和更改时间(若有两个文件a.b,c.e,将c.e的文件的日期修改成a.b的日期,则为touch a.b c.e),或者新建一个不存在的文件(若将已存在的aa.x文件新建成一个bb.y文件(bb.y文件原始是不存在的),并且保持与aa.x文件的内容、创建修改时间一致,则touch aa.x bb.y):touch 源文件名 目的文件名
每个文件都有时间戳,这个时间戳包括访问时间和修改时间,而touch命令主要就是用来修改文件的访问时间和修改时间。如将文件a.txt的时间戳改为当前时间,则执行:$ touch a.txt
26. 显示文件内容(若显示aa.txt的文件内容,则为cat aa.txt),或者将几个文件连接起来显示:cat filename
27. 将输出的文件内容自动的加上行号:nl filename
28. 以一页一页的方式显示文件的内容,按空格键(space)为显示下一页;按b键会往回(back)一页显示;按q键退出more:more filename
29. 分页显示文件的内容,类似于more,但比more功能更强大;按q键退出less;若搜索文件中某个字符串xxx,可使用/xxx来做到;通过加入-N参数来显示每行的行号:less 参数 filename
30. 用来显示文件的开头内容:head filename
31. 用来显示文件的末尾内容:tail filename
32. 查看某个系统命令是否存在或者查看某个可执行文件的位置,若查找ls命令的位置,则which ls, 会返回/bin/ls,若找不到该命令(或该执行文件),则不会有任何返回结果:which commandname
33. 在当前目录查找文件名后缀为txt的所有文件(若从系统根目录查找,则为find / -name “*.txt”;若从你的$HOME目录查找,则为find ~ -name “*.txt”;在/etc目录查找,则为find /etc -name “*.txt”;若要在当前目录查找文件名以一个小写字母开头,最后是4到9加上.log结束的文件,则为find . –name “[a-z]*[4-9].log”):find . -name “*.txt”
在当前目录查找此目录下所有文件内包含的指定关键字"ab",则执行:$ find . -type f -print -exec grep ab {} \;
34. chmod命令用于改变linux系统文件或目录的访问权限。Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。文件或目录的访问权限分为只读、只写和可执行三种。有三种不同类型的用户可对文件或目录进行访问,文件所有者(一般是文件的创建者),同组用户,其他用户。每一文件或目录的访问权限都有三组,每组用三位来表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。当用ls -l命令显示文件或目录的详细信息时,最左边的一列为文件的访问权限。第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。确定了一个文件的访问权限后,用户可以利用chmod命令来重新设定不同的访问权限。权限代号:r:读权限,用数字4表示;w:写权限,用数字2表示;x:执行权限,用数字1表示;-:删除权限,用数字0表示;s:特殊权限。如对目录test及其子目录所有文件添加可读可写可执行权限,则为:chmod -R 777 test
35. 可以用tar命令进行压缩、解压缩、打包、解包等。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。使用tar程序打出来的包常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。常用参数:-c:建立新的压缩文件;-x:从压缩的文件中提取文件;-z:支持gzip解压文件;-j:支持bzip2解压文件;-Z:支持compress解压文件;-v:显示操作过程;-f:指定压缩文件。如,有个目录test1,将其打包则为:tar cvf test1.tar test1;若将其打包并以gzip压缩,则为:tar zcvf est1.tar.gz test1; 若解包或解压缩,则相应的把cvf和zcvf换成xvf和zxvf即可,如把test2.tar.gz解压缩,则为:tar xvf est2.tar.gz ,则会在当前目录下生成一个test2文件。
36. 查看文件或目录磁盘使用的空间大小,可以用du命令,如显示test目录大小,则将终端定位到test目录后,输入:du -s
37. diff能比较单个文件或者目录内容.如果指定比较的是文件,则只有当输入为文本文件时才有效.以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的时候,diff命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。如比较1.txt和2.txt两个文本文件,可为:diff -c 1.txt 2.txt ,会将内容不同的地方在行之前用”!”标出。
38. grep命令是一种强大的文本搜索工具。如从test.txt文件中查找android关键词,则为:grep -n ‘android’ test.txt . 也可以同时从多个文件中查找关键词,如:grep -n ‘android’ test1.txt test2.txt
如果要在当前目录下所有文件查找"AB"字符串:$ grep -rn "AB" *
39. wc命令用于统计指定文件中的行数、字数、字节数,并将统计结果显示输出。如:wc test.txt ,输出为8 9 10 test.txt , 其中8表示行数,9表示字数,10表示字节数,test.txt表示文件名。如果统计当前目录下带有后缀名为frm、asp、bas的代码行数,则命令为find . -name “*.frm” -or -name “*.bas” -or -name “*.asp” | xargs wc -l > result.txt ,执行完此命令后会在当前目录下生成一个result.txt文件,里面包含了每个文件(frm/bas/asp)的代码行数以及总的代码行数。
40. free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer.如:free -m ,则会以MB为单位显示内存使用情况。
41. 可以使用apt-get命令来安装/更新一个deb包,如安装g++,则:apt-get install g++
42. c++filt命令:C++函数在Linux系统下编译之后会变成类似这样:_ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi,乍一看并不知道函数的原始名称,此时可以用c++filt命令:c++filt _ZN9CBC_EAN1312RenderBitmapERP12CFX_DIBitmapRi,即可显示原始函数名称CBC_EAN13::RenderBitmap(CFX_DIBitmap*&,int&)
43. echo命令是内建的shell命令,用于显示变量的值或者打印一行文本,如可以通过输入echo $PATH ,查看由哪些文件目录加入到了系统环境变量中(PATH前面的$表示后面接的是变量),可以通过输入echo 2 >/home/spring/1.txt ,将2写入到1.txt文件中
44. rar命令可以解压缩在windwos下生成的rar文件,如test.rar,则可以执行:$rar x test.rar
45. ps -ef命令用来查看Linux系统所有进程,如果想查看包含指定名字(如 test)的进程,则可以执行:$ ps -ef | grep test
46. 杀死指定的进程可以用kill命令,如杀死进程PID为30732的进程,则可以执行:$ kill -9 30732 ,若需要批量杀死进程,则可执行:$ ps aux | grep test | awk ‘{print $2}’ | xargs kill -9
47. 查看Linux系统CPU和内存使用率,可以通过top命令:即先在终端输入top命令回车,然后再按1即可
48. 通过命令打开显示图像:$ eog /images/a.jpg
49. 远程拷贝文件: 可以通过"scp"命令,如从远程服务器传某个指定目录或文件到本地指定目录,则执行:$ scp -r xxx spring@10.0.0.66:/home/spring/yyy/ ;若存放到本地根目录,可以执行:$ scp -r a.jpg spring@10.0.0.66:~/ ;执行以上命令时会要求输入本地机子的密码,若不想每次都输入,可以执行:$ ssh-copy-id spriing@10.0.0.66 ,这样下次在传文件时就不用重复输入密码了;若从本地传文件到远程服务器,则执行:$ scp -r b.jpg autobuild@10.0.8.88:/home/autobuild/fbc/
50. 查看机子ip和MAC地址:$ ifconfig
51. 安装SSH-SERVER:$ sudo apt-get install -y openssh-server
可以通过ssh命令访问指定的ubuntu主机,假设要访问的ubuntu主机名为spring, ip为10.0.1.1,又知道此主机的密码,则执行:ssh spring@10.0.1.1 ,回车,再收入这台主机的密码即可
52. 安装Google Chrome,依次执行以下命令:
- wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
- sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
- sudo apt-get update
- sudo apt-get install google-chrome-stable
53. 解决弹出对话框"System program problem detected Do you want to report the problem now?"的问题,在终端输入:$ sudo rm /var/crash/*
54. 在Ubuntu上查看指定文件是采用何种编码方式可以使用file命令,如查找test目录下所有的.cpp文件的编码格式,则执行:$ file test/*.cpp
55. 在Ubuntu上安装.deb文件命令,如code_1.13.0-1496940180_amd64.deb: $ sudo dpkg -i code_1.13.0-1496940180_amd64.deb
Ubuntu快速上手指南(新手教程)
软件安装篇
1.安装搜狗输入法(Ubuntu16.04)
- 下载搜狗输入法
去搜狗输入法官网下载deb包:http://pinyin.sogou.com/linux/?r=pinyin - 安装搜狗输入法
- 切换到deb包所在的目录,并执行以下命令:
sudo dpkg -i deb包名 - 在执行过程中,会产生由于缺少相关依赖文件的错误。执行以下命令,安装所缺少的依赖文件:
sudo apt-get -f install - 安装完成后,再安装一次搜狗输入法
sudo dpkg -i deb包名
- 切换到deb包所在的目录,并执行以下命令:
- 在“语言支持”面板,添加汉语支持,并将输入法系统设置为fcitx。
- 注销系统,重新登录。在Dash中搜索fcitx configuartion,在Input Method中添加和配置sogoupinyin即可
2.安装flashplugin-installer
- 安装flashplugin-installer
sudo apt-get install flashplugin-installer
安装完成后,重启浏览器即可正常播放视频
3.安装Chrome
- 下载安装包
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - 安装所需要的依赖包
sudo apt-get -f install libappindicator1 libindicator7 - 安装chrome
sudo dpkg -i google-chrome-stable_current_amd64.deb - 启动chrome
google-chrome
4.安装为知笔记
- 添加软件源
sudo add-apt-repository ppa:wiznote-team - 更新软件源
sudo apt-get update - 安装为知笔记
sudo apt-get install wiznote - 启动为知笔记
WizNote
5.安装小书匠
- 下载小书匠安装包
- 解压安装包
切换到安装包所在的目录,通过输入unzip + 文件名将文件解压到当前目录,例如:
unzip Story-writer-linux64.zip - 运行小书匠
切换到解压出来的文件夹根目录,然后输入./Story-writer即可成功运行小书匠。
6.安装JDK
- JDK8下载地址
- 解压已下载的tar.gz包,切换工作目录到jdk所在的目录,例如:cd Downloads
sudo tar zxvf jdk-8u92-linux-x64.tar.gz - 将解压出来的文件夹移动到合适的文件夹,一般为/opt/Java
sudo mkdir -p /opt/Java
sudo mv jdk1.8.0_92 /opt/Java - 通过编辑~/.bashrc文件来配置环境变量
gedit ~/.bashrc - 在~/.bashrc添加一下几行代码:
export JAVA_HOME=/opt/Java/jdk1.8.0_92
export CLASSPATH=JAVAHOME/libexportPATH=JAVAHOME/libexportPATH={JAVA_HOME}/bin:$PATH - 让对~/.bashrc文件的更改即可生效
source ~/.bashrc - 测试jdk
java
javac
7.安装Eclipse
- 安装Eclipse
sudo apt-get install eclipse - 启动Eclipse
eclipse
8.安装git
sudo apt-get install git
- 1
- 2
9.安装rar压缩和解压工具
sudo apt-get install rar
sudo apt-get install unrar
- 1
- 2
- 3
11.安装genymotion
sudo chmod u+x genymotion-2.7.2-linux_x64.bin
./genymotion-2.7.2-linux_x64.bin
- 1
- 2
- 3
12.安装网易云音乐
- 下载网易云音乐安装包
- 使用dpkg -i 安装包名命令安装网易云音乐,例如:
sudo dpkg -i netease-cloud-music_0.9.0-1_amd64.deb - 运行网易云音乐
netease-cloud-music
14.安装shadowsocks
- 添加软件源
sudo add-apt-repository ppa:hzwhuang/ss-qt5 - 更新软件源
sudo apt-get update - 安装shadowsocks
sudo apt-get install shadowsocks-qt5 - 运行Shadowsocks-Qt5
在Dash中搜索Shadowsocks-Qt5点击图标即可运行,然后配置相关参数即可使用
具体文档请查看shadowsocks指南
15. 安装Gnome3
以下是安装方法:
sudo add-apt-repository ppa:gnome3-team/gnome3
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install gnome-themes-standard ubuntu-desktop gnome-shell
删除方法:
sudo apt-get install ppa-purge
sudo ppa-purge ppa:gnome3-team/gnome3
16.开启telnet服务
- 查看telnet服务是否已开启
netstat -a | grep telnet
如果输出为空,表示没有开启该服务 - 安装telnet服务
sudo apt-get install telnetd - 查看telnet运行状态
netstat -a | grep telnet
输出:tcp 0 0 :telnet :* LISTEN
此时表明已经开启了telnet服务。 - telnet登陆测试
telnet 127.0.0.1
17.安装TeamViewer
- 去TeamViewer官网下载linux版本deb包
- 安装deb包
sudo dpkg -i 包名
如果出现缺少依赖包的错误提示信息,则执行第3步之后,再执行
sudo dpkg -i 包名 - 安装缺少的依赖包
sudo apt-get -f install
18.安装ubuntu受限的额外的解码器
“ubnutu 额外受限”指的是这些解码器的包没有默认安装在ubuntu系统里面,这些解码器没有默认安装在系统里面的原因是受到很多国家的法律的约束。 Canonical不能默认安装他们,但是如果你要安装这些解码器,你将使用不是ubuntu软件库的软件。但是不用担心,安装这些解码器是安全的(不会 破坏你的计算机)。在这些解码器安装完以后你将没有任何阻碍的播放很多格式的媒体格式,如MP3,MP4,AVI和以及其他的一些格式。安装这些解码器通 过使用下面的命令。
sudo apt-get install ubuntu-restricted-extras
注意:对于那些初学者,如果屏幕上出现那些协议,条款,按Tab键在选项之间切换,使用enter确认你的选择。
19.安装VLC媒体播放器
sudo apt-get install vlc
20.安装Terminaltor
sudo apt-get install terminaltor
21. 安装Dock
22. 安装Docky
23. 安装IntelliJ IDEA
常用命令篇
1.文件操作命令之增删改查——增
1.创建多级目录:例如在根目录下创建一个/firstLevel/secondLevel/thirdLevel三级目录
sudo mkdir -p /firstLevel/secondLevel/thirdLevel
2. 递归拷贝目录
sudo cp -r 要拷贝的目录名 目标路径
3. 拷贝文件
sudo cp 要拷贝的文件名 目标路径
- 1
- 2
- 3
- 4
- 5
- 6
2.文件操作命令之增删改查——删
- 删除空目录:例如删除一个名为empty的目录
sudo rmdir empty
或者
sudo rm empty - 递归删除非空目录,即删除该目录以及该目录下的所有文件:例如删除一个名为full的非空目录
sudo rm -rf full - 删除文件
sudo rm 文件名
3.文件操作命令之增删改查——改
- 文件重命名
sudo mv 原文件名 目标文件名 - 移动文件
sudo mv 原文件名 目标路径
4.文件操作命令之增删改查——查
5.mount挂载命令
- 查看已挂载的分区状态
mount | column -t - 查看所有分区
fdisk -l
6. 解压/压缩文件
- 压缩
tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar -czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar -cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩(如果没有安装rar,使用sudo apt-get install rar安装)
zip jpg.zip *.jpg //zip格式的压缩(如果没有安装zip,使用sudo apt-get install zip安装) - 解压
tar -xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar -xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar(如果没有安装zip,使用sudo apt-get install unrar安装)
unzip file.zip //解压zip(如果没有安装zip,使用sudo apt-get install unzip安装)
7. 进行系统更新和软件更新
sudo apt-get update
sudo apt-get upgrade 或者 sudo apt-get dist-upgrade
8.md5校验文件的完整性和合法性
md5sum 文件名
- 1
- 2
9.ubuntu没声音
alsamixer
执行sudo alsactl store,配置将保存到/etc/asound.state。
- 1
- 2
- 3
10.设置root密码
sudo passwd root
- 1
- 2
11. Ubuntu下自定义桌面图标
- 在/usr/share/applications目录下创建名为xxx.desktop文件
- 将下面内容复制到创建的文件中
- 根据你的需求自定义你的桌面图标,
下面是一个MyEclipse应用程序的图标文件myeclipse.desktop,内容如下:
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=MyEclipse
Exec=/home/skyward/MyEclipse\ 2015/myeclipse
Comment=Integrated Android developer tools for development and debugging.
Icon=/usr/share/icons/hicolor/scalable/apps/myeclipse
Categories=GNOME;GTK;Development;IDE;
其中,Name属性是图标名称,Exec属性是程序的可执行文件绝对路径,Comment属性是注释
Icon属性是图标所在的绝对路径。
将dos格式文件批量转换成unix格式文件
http://www.cnblogs.com/ini_always/archive/2012/03/23/2413023.html
常用shell脚本篇
1. 递归打印当前目录下的所有文件(目录文件及普通文件)
#!/bin/bash
# 统计目录下文件个数,
# 如果只要文件不要目录,
# 就加上是文件的判断 [ -f ]
#
i=0
for file in $(ls -R)
do
i=$(( $i + 1 ))
echo $i : $file
done
echo $i
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
2.递归打印当前目录下的所有目录文件
#!/bin/bash
#递归打印当前目录下的所有目录文件。
PRINTF()
{
ls $1 | while read line
#一次读取每一行放到line变量中
do
[ -d $1/$line ] && {
DIR="$1/$line"
echo $DIR
}
DIR1=`dirname $DIR`
#求路径。
A=`ls -F $DIR1 | grep / | grep "\<$line\>"`
#判断line是不是一个目录。
if [ "$A" == "$line/" ];then
PRINTF "$DIR1/$line"
#递归调用。
fi
done
}
PRINTF .
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
3.递归打印指定目录下的所有普通文件(若不指定路径,则打印当前路径下的所有普通文件)
#!/bin/bash
# $1是运行脚本时,输入的第一个参数,这里指的是使用者希望搜索的目录
# 下面的代码是对目录进行判断,如果为空则使用脚本所在的目录;否则,搜索用户输入的目录
if [[ -z "$1" ]] || [[ ! -d "$1" ]]; then
echo "The directory is empty or not exist!"
echo "It will use the current directory."
nowdir=$(pwd)
else
nowdir=$(cd $1; pwd)
fi
echo "$nowdir"
# 递归函数的实现
function SearchCfile()
{
cd $1
#这里可以修改为判断文件类型,如.c,.java等等文件类型,修改一下grep条件就可以了
cfilelist=$(ls -l | grep "^-" | awk '{print $9}')
for cfilename in $cfilelist
do
echo $cfilename
done
# 遍历当前目录,当判断其为目录时,则进入该目录递归调用该函数;
dirlist=$(ls)
for dirname in $dirlist
do
if [[ -d "$dirname" ]];then
cd $dirname
#SearchCfile 这里有bug,跳转到根目录了
#这里把当前的目录作为参数输入
SearchCfile $(pwd)
cd ..
fi;
done;
}
# 调用上述递归调用函数
SearchCfile $nowdir