Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ls 和 cd 命令用法的错误 #53

Open
tiye opened this issue Mar 9, 2013 · 11 comments
Open

ls 和 cd 命令用法的错误 #53

tiye opened this issue Mar 9, 2013 · 11 comments

Comments

@tiye
Copy link
Member

tiye commented Mar 9, 2013

这边的论坛越发冷清了, 语言太单一. 我也感到局限了...
越是接触越感到无法做出什么大的改变, 特别是从脚本语言出发的人们

原始的 cd 命令

Bash 是个常用而有问题的语言, 语法自不必说有多么难受了
作为日常的命令调用, 却还是好的, 而且 可以说极为灵活
不过习惯上是会有很多问题, 比如我发现目录跳转就有个麻烦

入门的 Linux 肯定教 cdls, 在一些大牛的视频里也会是 cdls

➤➤ cd she/
➤➤ ls
bin  package.json  readme.md  src  test

图形界面上切换目录很直观, 点击进入另一个目录, 看到里面有什么
其实无论对路径有多熟悉, 打开文件后, 第一件事情是查看文件里有什么
或者, 在 $PS1 上提示当前是 Git 的那个分支或者什么, 总之很实用
从来就是需要的提示的, 因此切换路径, 很需要直观
比如进入路径启动 ls:

合并 cdls

➤➤ c she/
bin/  package.json  readme.md  src/  test/

为此我写了个命令, 有不少 bug, 比如文件名的空格, 文件数量:

function c(){
    cd $1
    ls --color=auto -p
}

不过怎么说, 这个命令的确带来了切换目录的方便
但是这不够, 手工操作目录能管理的目录实在有限
有 Shell 的地方, 通常都有自动提示, 按下 tab tab 能看提示
只是对于长的路径, tab 依然很幸苦, 比如 /etc/nginx/site-available/

使用 Autojump

比较早的时候 @lilydjwg 在论坛上介绍了一个工具 autojump
功能是搜索历史, 自动跳转到路径, 这成了我重装系统必装的一个脚本
https://github.com/joelthelion/autojump
http://linuxtoy.org/archives/autojump.html
但这有问题, 即便用多个候选词, 还是有目录名字重复的问题
虽然 autojump 允许多个候选词, 但终究麻烦了点

Bashmarks 做书签管理

于是我想到对目录使用书签进行管理, 这就需要调用存储和访问数据
首先我想到用我熟悉的 Node, 只要能截获每次操作, 就不难存储数据
但应对 Bash 真是难受, 我暂时找不到方案, 只好往论坛去求助了
http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=386367&start=30
另外也知道一款叫 cdargs 的命令, 可惜操作过于繁琐
http://www.skamphausen.de/cgi-bin/ska/CDargs

后来虽然在同学的指导下, 搞定了一个版本的书签, 实际上不理想
https://github.com/jiyinyiyong/cd-link
果断到 V2EX 去吐槽, 这时候, 有高人推荐了 bashmarks 这款脚本
http://www.v2ex.com/t/49973
https://github.com/huyng/bashmarks
http://goddyzhaocn.wordpress.com/2011/08/21/bashmarks-introduction/
Bashmarks 用 Bash 完成了目标的功能, 我从此开始用上了书签

其实另外不错的方案, 用 Bash 的变量也能实现目录的跳转
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/varsubn.html

➤➤ pwd
/opt/www
➤➤ export www=/opt/www/she/
➤➤ cd $www
➤➤ pwd
/opt/www/she

合在一起

只是 Bash 变量只适合临时的记忆, 添加和更改都要重写重载配置
类似的还有 alias, 相对来说重写配置来改变路径显得太繁琐了

于是目前对于 ls cd 命令, 我用了以下的方案来进行扩展:

  • c 命令用来合并 cd ls, 并且对其他插件 folk 出相应功能
  • autojump 提供跳转功能, 特别适用冷僻的目录名字
  • Bashmarks 保存经常访问的目录, 保证能快速跳转

Shell 应当改变, 应当图形化

Shell 并不是一个系统里好的方案. 字符界面必然有其局限性
字符界面对屏幕空间的利用不足, 界面排版对于查找和查看都不利
另外字体和分界线原本对视野很有帮助, 字符界面去很难做好
而 Bash 艰涩的语法, 更让其灵活性难以施展.. 迟早要被淘汰

Bash 只适合服务器上操作, 远程 ssh 连接及个人开发都该有更好的选择
而且我一直鼓吹 Metro 风格对这方面的友好: tiye/metro-wm-concept#1
我期待能用图形化的界面重新发明一次 Shell 的操作方式
最终切换目录就像 Omnibox 一样, 自动提示, 方向键选择, 最后回车

@unionx
Copy link

unionx commented Mar 9, 2013

Emacs里用Dired就没这问题

另,这些话题没啥意思啊,来开读书会吧,大家一起来读本牛逼的书~

@tiye
Copy link
Member Author

tiye commented Mar 9, 2013

@unionx 不熟悉 Emacs.. 至少不是单纯的 Shell~
...说这个是没意思. 仅仅是整理的意义
什么读书会? 最近被打击不小, 看书的精力不怎么多了

@unionx
Copy link

unionx commented Mar 9, 2013

所以你是要熟练工程实践那一套还是有空闲深入理论?

@tiye
Copy link
Member Author

tiye commented Mar 9, 2013

@unionx 分不清.. 我想做的有改造语言语法和灵活度, 改造界面, 用浏览器造玩具

@lilydjwg
Copy link

lilydjwg commented Mar 9, 2013

On Fri, Mar 08, 2013 at 07:11:05PM -0800, 题叶 wrote:

[...]
有 Shell 的地方, 通常都有自动提示, 按下 tab tab 能看提示
只是对于长的路径, tab 依然很幸苦, 比如 /etc/nginx/site-available/

zsh 对这种情况有优化:

cd /e/n/s

可以同时补全前边的目录名。

于是我想到对目录使用书签进行管理

已经有这种脚本了,你不妨在 github 上找找。

其实另外不错的方案, 用 Bash 的变量也能实现目录的跳转
http://www.tsnc.edu.cn/default/tsnc_wgrj/doc/abs-3.9.1_cn/html/varsubn.html

➤➤ pwd
/opt/www
➤➤ export www=/opt/www/she/
➤➤ cd $www
➤➤ pwd
/opt/www/she

只是 Bash 变量只适合临时的记忆, 添加和更改都要重写重载配置
类似的还有 alias, 相对来说重写配置来改变路径显得太繁琐了

常用路径可以保存到配置文件里边。zsh 对于路径有专门的 alias 方法,可以写
cd ~tmp 这种。

Shell 并不是一个系统里好的方案. 字符界面必然有其局限性

对于我来说已经没有更好的了。

字符界面对屏幕空间的利用不足, 界面排版对于查找和查看都不利

字符界面可以搜索,图形界面让我郁闷的很重要一点在于,明明你知道有段文本在
某个地方,但通常你只能人肉寻找它。

另外字体和分界线原本对视野很有帮助, 字符界面去很难做好

我更觉得图形界面能做到而字符界面做不好的是「观感」。视野我比较无所谓,因
为我倾向于用键盘让程序把我想要的给我找出来。

而 Bash 艰涩的语法, 更让其灵活性难以施展.. 迟早要被淘汰

如果你看过 zsh 的手册你就会知道原来 bash 的语法还是挺清晰的 :D

Bash 只适合服务器上操作, 远程 ssh 连接及个人开发都该有更好的选择

不。bash 只适合还没有开始使用 zsh 的人。

我期待能用图形化的界面重新发明一次 Shell 的操作方式
最终切换目录就像 Omnibox 一样, 自动提示, 方向键选择, 最后回车

我讨厌使用方向键!!!

Best regards,
lilydjwg

Linux Vim Python 我的博客:

http://lilydjwg.is-programmer.com/

A: Because it obfuscates the reading.
Q: Why is top posting so bad?

@tiye
Copy link
Member Author

tiye commented Mar 9, 2013

@lilydjwg 承认 zsh 很强大, 甚至微博上某高人说用 pushd popd 也是很强大的
但我的一个看法是解决问题应该用通用且简洁的方案, 造更多专用的语法增加的是学习成本和迁移成本
在强大的 Tricks 和简洁的普通方案之间, 我倾向于后者

图形界面的问题我认为是代码无法和图形进行很好的交互
我理想中的图形应该是和数据一样, 可以非常方面地操作, 至少说暴露一个可操作的类
现在的图形界面做不到, 我同意现在的图形是一种比命令行界面不友好的交互方式

让我再膜拜下 zsh....

@lilydjwg
Copy link

lilydjwg commented Mar 9, 2013

On Sat, Mar 09, 2013 at 06:55:23AM -0800, 题叶 wrote:

@lilydjwg 承认 zsh 很强大, 甚至微博上某高人说用 pushd popd 也是很强大的

我一向是让 cd 自动 push 和 pop 的。人脑内存有限,记不住要/已经 push 了哪
些东西进去。

但我的一个看法是解决问题应该用通用且简洁的方案, 造更多专用的语法增加的是学习成本和迁移成本
在强大的 Tricks 和简洁的普通方案之间, 我倾向于后者

zsh 我觉得主要是「专用」的 feature 吧。我也懒得学 zsh 那变态的语法= =
学习成本这得个人权衡了。迁移成本的话,我的 zsh 使用成本中就基本没有这项
:-D (我用过的第一个 shell 是 fish,第二个是 zsh。)

在文本编辑器上我付出的迁移成本也很低(EditPad Pro -> Vim)。窗口管理器上
倒是付出比较多,因为涉及到不少习惯(Compiz -> Awesome)。

图形界面的问题我认为是代码无法和图形进行很好的交互

甚是。不过,不是「代码」,而是「人」。

我理想中的图形应该是和数据一样, 可以非常方面地操作, 至少说暴露一个可操作的类

现在很多 UI 设计时都没有想过「提供机制而非策略」这句话。另,我们不需要类。
我们只需要接口。

Best regards,
lilydjwg

Linux Vim Python 我的博客:

http://lilydjwg.is-programmer.com/

A: Because it obfuscates the reading.
Q: Why is top posting so bad?

@tiye
Copy link
Member Author

tiye commented Mar 9, 2013

@lilydjwg ...好奇下你是啥时候接触 Vim 的, 还有 Bash 这些
我大二开始用天天用 Linux 前已经有一堆先入为主的观念了,
大一时候...在熟悉计算机前就算胡思乱想界面应该怎么样怎么样, 对 Windows 各种抱怨
到掌握 Linux 基本命令和熟悉 JS 前也对 Web 各种想象. 而且就该那样
所以对软件和语言我求更多灵活和直观 (也是学习不力的一个原因吧...)

图形和人不好交互的人问题, 我理不清. 不过很多场合都表明图形能带来好处
比如更多的图标, 更多的色彩, 更可可控的边距让代码更清晰
还有 popmenu 的提示, 字符无法模拟的缩进线, 所见所得的编辑等等

类只是一个例子, 需要的是接口没错. 问题就在于图形支持得太少
我期待的解决方案是要图形有更多代码能操作的接口, 代码和图形相互弥补不足

@lilydjwg
Copy link

lilydjwg commented Mar 9, 2013

On Sat, Mar 09, 2013 at 07:32:42AM -0800, 题叶 wrote:

@lilydjwg ...好奇下你是啥时候接触 Vim 的, 还有 Bash 这些

2009 年四月接触 Linux。也是那时接触 fish 的。Vim 更早一些,大学伊始就开
始学了,因为之前的 EditPad Pro 是试用版,没有机房的系统还原的话只能用 40
天,而且早已不再支持 Linux。

我大二开始用天天用 Linux 前已经有一堆先入为主的观念了,
大一时候...在熟悉计算机前就算胡思乱想界面应该怎么样怎么样, 对 Windows 各种抱怨
到掌握 Linux 基本命令和熟悉 JS 前也对 Web 各种想象. 而且就该那样
所以对软件和语言我求更多灵活和直观 (也是学习不力的一个原因吧...)

我高中时就已经厌倦了 Windows 下很难找到有趣又好用的软件,而且下载安装麻
烦了。

图形和人不好交互的人问题, 我理不清. 不过很多场合都表明图形能带来好处
比如更多的图标, 更多的色彩, 更可可控的边距让代码更清晰

桌面图标多的人很多都是使用电脑的效率比较低的吧?色彩确实更丰富,所以我喜
欢用 gvim :-)

让代码更清晰和边距有什么关系呢?不过我倒是很羡慕那种可以占据整个屏幕但是
只在中间显示的文本编辑,只可惜已有的都功能不全。

还有 popmenu 的提示, 字符无法模拟的缩进线, 所见所得的编辑等等

不是无法模拟的哦,Vim 就有模拟它们。所见即所得这个好办,左边 gvim 右边显
示效果的软件就成了。如果你是指直接进行富文本编辑的话,我还是望而却步吧。

类只是一个例子, 需要的是接口没错. 问题就在于图形支持得太少
我期待的解决方案是要图形有更多代码能操作的接口, 代码和图形相互弥补不足

等待第二个 Douglas McIlroy 的出现吧。不过上次 Jobs 挂掉的时候,DMR
和 McCathy 却没有多少人关注,真是可悲啊……

Best regards,
lilydjwg

Linux Vim Python 我的博客:

http://lilydjwg.is-programmer.com/

A: Because it obfuscates the reading.
Q: Why is top posting so bad?

@tiye
Copy link
Member Author

tiye commented Mar 10, 2013

@lilydjwg 四月我是还在绝望得等高考... 距离我听到 Linux 还差半年多啊
Windows 我在高中学会了装软件和区分浏览器, 高考完那个暑假还去找 3D 桌面之类软件
怎么说..最开始觉得 Windows 桌面效率太低, 不能自己改代码定义(那时不会编程..)
然后一边接触 Python, 一边因为桌面花哨搜到了 Ubuntu. 我还以为从此可以改桌面了...

回想起来, 小学三年级老师唯一一次带我们去机房玩电脑, 大概就他们激动所以想让下一代见识下的心情
但在小孩子眼里多神奇也能坦然接受甚至后来挑剔, 编程的难点并不是用的人关注最多的

Windows 至少在我用熟 Linux 之前, 我一点不觉得软件下载安装是麻烦的...

桌面图标效率是低的, 按 Web 设计的风格, 桌面也不是什么好东西, 个人推崇 Metro 风格的界面
如果每个界面都有命令行的输入框, 这是完全能改善的, 比如:

@sort(name: -1).filter(ext: "html") # 筛选后缀为 `.html` 并且排序

当然问题也是目前没实现, 而且麻烦在需要定义新的语言..

代码边距这.. Sublime 倒是有的, 也有 shift+f11 的代码居中显示功能
因为在网页上 CSS 自由该行高改边距, 而代码编辑我也期待有这样的方便

Vim 模拟的 popmenu 不好看, 貌似你以前推荐的插件用过.. 我颜色也没调好
字符界面不好实现阴影, 还有 popmenu 的位置和边缘都怪怪的, 不好用..

知名度没法比,, 我先去补一下 Douglas McIlroy 谁...

@bladewang
Copy link

我一向是让 cd 自动 push 和 pop 的。人脑内存有限,记不住要/已经 push 了哪些东西进去。

@lilydjwgdirs -p 可以看到 pushd 了多少目录哇。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants