head命令用于显示文件的前几行内容,可以通过-num参数展示文件前num行的内容。
root@ubuntu:~# ls
bb.txt cc.txt snap
root@ubuntu:~# head cc.txt
Hello
Ubuntu
add test
root@ubuntu:~# head -2 cc.txt
Hello
Ubuntu
tail命令用于显示文件的后几行内容,可以通过-num参数展示文件后num行的内容。
root@ubuntu:~# tail cc.txt
Hello
Ubuntu
add test
root@ubuntu:~# tail -2 cc.txt
Ubuntu
add test
如果一个文件的内容过多,需要分成好几页显示的时候,就可以使用more命令,默认会显示第一页的内容,可以通过enter键查看下一行,空格键查看下一页,b查看上一页,q键退出查看。
cp命令用于复制文件或者文件夹,复制的同时也可以进行改名操作,如:cp XXX YYY表示将XXX复制为YYY,如果不需要改名,那么YYY只需要写到具体路径即可,XXX和YYY可以是文件名也可以是一个路径。
将文件1.txt复制为2.txt:
root@ubuntu:~# ls
1.txt snap
root@ubuntu:~# cp 1.txt 2.txt
root@ubuntu:~# ls
1.txt 2.txt snap
将文件1.txt复制到Music文件夹下且不重命名,这是只需要写具体路径Music/即可:
root@ubuntu:~# ls
1.txt Music snap
root@ubuntu:~# cp 1.txt Music/
root@ubuntu:~# cd Music/
root@ubuntu:~/Music# ls
1.txt
将文件1.txt复制到Music文件夹下同时重命名为2.txt:
root@ubuntu:~# ls
1.txt Music snap
root@ubuntu:~# cp 1.txt ./Music/2.txt
root@ubuntu:~# cd Music/
root@ubuntu:~/Music# ls
2.txt
mv命令用于移动文件,mv XXX YYY表示将XXX移动到YYY,这里的移动类似于windows下的剪切操作,XXX和YYY和上面的cp操作一样可以是路径也可以是文件名,如果是路径则表示,将XXX路径下的文件移动到YYY路径下,这里将/root目录下的文件1.txt移动到Music目录下且不重命名:
root@ubuntu:~# pwd
/root
root@ubuntu:~# ls
1.txt Music snap
root@ubuntu:~# mv 1.txt Music/
root@ubuntu:~# ls
Music snap
root@ubuntu:~# cd Music/
root@ubuntu:~/Music# ls
1.txt
将/root目录下的文件1.txt移动到Music目录下且重命名为2.txt:
root@ubuntu:~# pwd
/root
root@ubuntu:~# ls
1.txt Music snap
root@ubuntu:~# mv 1.txt Music/2.txt
root@ubuntu:~# cd Music/
root@ubuntu:~/Music# ls
2.txt
除此之外,mv还可以实现文件重命名的效果,只需要将当前路径下的文件移动到当前文件夹下并重命名就可以实现:
root@ubuntu:~# ls
1.txt Music snap
root@ubuntu:~# mv 1.txt 3.txt
root@ubuntu:~# ls
3.txt Music snap
tar命令用于打包文件。
常用的两个命令分为两组:
(1) tar -zcvf和tar -zxvf
tar -zcvf用于将文件打成tar包并压缩为.gz文件。
tar -zxvf用于对打包后的压缩包文件进行解压。
z参数用于表示使用gzip格式压缩或者解压一个文件c参数用于创建一个压缩文件v参数用于显示压缩或者解压的详细过程f参数用于指定压缩或者解压的文件名(2) tar -jcvf和tar -jxvf
这一组命令与上一组命令唯一不同的地方在于这里使用的参数是j,j参数是指压缩或者解压的格式是bzip2格式。
两组命令的使用场景:
(1)如果压缩文件是以.tar.gz结尾使用tar -zxvf命令进行解压。
(2)如果压缩文件是以.tar.bz2结尾使用tar -jxvf命令进行解压。
如果想将文件解压到指定的目录下可以再添加-C参数。
find命令用于按照指定的条件查找文件,一般使用格式为find 查找路径 [可选参数] 查找文件。
可选参数:
-name指定需要查找的文件名。
-size匹配指定文件大小的文件,比如查找大于100KB的文件使用参数+100,小于100KB的文件使用参数为-100。
在当前目录下查找文件名为4.txt的文件,如果存在则会显示文件名,不存在则不显示:
root@ubuntu:~# ls
1.txt 2.txt 3.txt 4.txt Music snap
root@ubuntu:~# find . -name "4.txt"
./4.txt
root@ubuntu:~# find . -name "5.txt"
root@ubuntu:~#
grep命令用于在某个文本中使用关键词进行搜索,一般使用格式为find [可选参数] 目标文本 查找的文件名。
可选参数:
-n用于显示查找到的文本在文件的第几行。
root@ubuntu:~# cat 1.txt
aaaaaaaaa
bbbbbbbb
ccccccc
dddddd
eeeee
ffff
ggg
hh
i
root@ubuntu:~# grep ddd 1.txt
dddddd
root@ubuntu:~# grep -n ddd 1.txt
4:dddddd
wc命令用于统计文件中的行数或者单词数,命令分别为wc -l 文件名、wc -w 文件名。
root@ubuntu:~# cat 1.txt
first line
second line
aaaa
bbbb
ddd
ff
root@ubuntu:~# wc -l 1.txt
6 1.txt
root@ubuntu:~# wc -w 1.txt
8 1.txt
tree命令用于以树状图的方式展示指定目录下的文件结构,命令格式为tree 指定目录。
使用此命令前需要先进行安装,我这里使用的是Ubuntu 20,所以使用的命令是sudo apt-get install tree,如果是Centos则可以使用yum install tree命令进行安装。
root@ubuntu:~# pwd
/root
root@ubuntu:~# tree
.
├── 1.txt
├── 2.txt
├── 3.txt
├── 4.txt
├── Music
└── snap
└── firefox
├── 1540
├── 1747
├── common
└── current -> 1747
7 directories, 4 files
在说文件权限之前,先介绍一下Linux下关于文件的一些知识:
root@ubuntu:~# ll
total 48
drwx------ 6 root root 4096 Aug 29 15:29 ./
drwxr-xr-x 19 root root 4096 Jul 18 21:50 ../
-rw------- 1 root root 76 Aug 29 10:06 .bash_history
-rw-r--r-- 1 root root 3106 Oct 15 2021 .bashrc
drwx------ 3 root root 4096 Jul 8 03:01 .cache/
-rw------- 1 root root 20 Jul 8 03:08 .lesshst
-rw-r--r-- 1 root root 161 Jul 9 2019 .profile
drwx------ 2 root root 4096 Jul 8 02:41 .ssh/
-rw------- 1 root root 2713 Aug 29 15:29 .viminfo
-rw-r--r-- 1 root root 40 Aug 29 15:29 1.txt
-rw-r--r-- 1 root root 0 Aug 29 15:22 2.txt
-rw-r--r-- 1 root root 0 Aug 29 15:06 3.txt
-rw-r--r-- 1 root root 0 Aug 29 15:22 4.txt
drwxr-xr-x 2 root root 4096 Aug 29 15:18 Music/
drwx------ 3 root root 4096 Jul 8 03:05 snap/
我们使用ll查看文件的时候,可以看到文件的详细信息,文件详细信息的第一列是文件的格式,d表示该文件是一个目录,-表示该文件是一个普通文件,c表示为串行端口设备,如键盘鼠标等。
详细信息中的第二到第四个字符是文件所有者对该文件拥有的权限,r表示读权限,通常使用数字4表示,w表示写文件,通常使用数字2表示,x表示执行权限,通常使用数字1表示,如果拥有对应权限就会有对应的字符,如果是-表示没有对应权限。
接下来的三个字符是当前用户所在组对该文件拥有的权限,再接着的三个字符是其他用户对该文件的权限。
这时我们想对文件的权限进行修改时就可以通过chmod命令加上需要修改的权限对应的数字组合进行修改,比如我想修改4.txt的属性为只允许我自己拥有读写权限,其余人没有任何权限,就可以使用chomd 600 文件名,600中的6由4+2得来,即读权限+写权限,6对应的是前三个字符即当前用户的权限,第二个0对应的是当前用户所属组的权限,第三个0对应的是其他用户对于这个文件的权限。
root@ubuntu:~/Music# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 29 15:37 ./
drwx------ 6 root root 4096 Aug 29 15:37 ../
-rw-r--r-- 1 root root 40 Aug 29 15:29 1.txt
-rw-r--r-- 1 root root 0 Aug 29 15:22 2.txt
-rw-r--r-- 1 root root 0 Aug 29 15:06 3.txt
-rw-r--r-- 1 root root 0 Aug 29 15:22 4.txt
root@ubuntu:~/Music# chmod 600 4.txt
root@ubuntu:~/Music# ll
total 12
drwxr-xr-x 2 root root 4096 Aug 29 15:37 ./
drwx------ 6 root root 4096 Aug 29 15:37 ../
-rw-r--r-- 1 root root 40 Aug 29 15:29 1.txt
-rw-r--r-- 1 root root 0 Aug 29 15:22 2.txt
-rw-r--r-- 1 root root 0 Aug 29 15:06 3.txt
-rw------- 1 root root 0 Aug 29 15:22 4.txt
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我试图在一个项目中使用rake,如果我把所有东西都放到Rakefile中,它会很大并且很难读取/找到东西,所以我试着将每个命名空间放在lib/rake中它自己的文件中,我添加了这个到我的rake文件的顶部:Dir['#{File.dirname(__FILE__)}/lib/rake/*.rake'].map{|f|requiref}它加载文件没问题,但没有任务。我现在只有一个.rake文件作为测试,名为“servers.rake”,它看起来像这样:namespace:serverdotask:testdoputs"test"endend所以当我运行rakeserver:testid时
我的目标是转换表单输入,例如“100兆字节”或“1GB”,并将其转换为我可以存储在数据库中的文件大小(以千字节为单位)。目前,我有这个:defquota_convert@regex=/([0-9]+)(.*)s/@sizes=%w{kilobytemegabytegigabyte}m=self.quota.match(@regex)if@sizes.include?m[2]eval("self.quota=#{m[1]}.#{m[2]}")endend这有效,但前提是输入是倍数(“gigabytes”,而不是“gigabyte”)并且由于使用了eval看起来疯狂不安全。所以,功能正常,
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
Rails2.3可以选择随时使用RouteSet#add_configuration_file添加更多路由。是否可以在Rails3项目中做同样的事情? 最佳答案 在config/application.rb中:config.paths.config.routes在Rails3.2(也可能是Rails3.1)中,使用:config.paths["config/routes"] 关于ruby-on-rails-Rails3中的多个路由文件,我们在StackOverflow上找到一个类似的问题
对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
好的,所以我的目标是轻松地将一些数据保存到磁盘以备后用。您如何简单地写入然后读取一个对象?所以如果我有一个简单的类classCattr_accessor:a,:bdefinitialize(a,b)@a,@b=a,bendend所以如果我从中非常快地制作一个objobj=C.new("foo","bar")#justgaveitsomerandomvalues然后我可以把它变成一个kindaidstring=obj.to_s#whichreturns""我终于可以将此字符串打印到文件或其他内容中。我的问题是,我该如何再次将这个id变回一个对象?我知道我可以自己挑选信息并制作一个接受该信
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A