4

I just don't know if it's possible and how to cd for example in a dir that is not named with latin characters.

Example: $ cd άλφα or $ cd альфа

Update: In a terminal it is ok, but in a CLI environment not.

Nikos Grigoriadis
  • 1,131
  • 4
  • 14
  • 22

4 Answers4

2

Yes, of course it's possible as long as directories with these names exists.

The simple way:

terminal

How I made:

  • I ran ls command in the parent directory where a directory what is named with non-latin characters.
  • With the mouse, I selected the name of the directory (nothing more).
  • I typed cd followed by a Space then I pressed Shift+Insert and, of course Enter(again, nothing more).

If you can't use the mouse, see this quick tutorial.

The right way:

  • Add the new keyboard layouts that you need (greek, russian,...)

    • Go in System settingsPersonalKeyboard Layout and add a new layout:

      add new keyboard layout

  • When you type in terminal, switch between layouts to type in what language do you wish.


For tty1 (where you can go with Ctrl+Alt+F1) - and not only - I found another trick:

~ $ ls 
bin         Desktop    file.gif  nohup.out  Sent to Ubuntu One  ttyrecord  άλφα
Descărcări  Documente  Muzică    Poze       tmp.txt             Video
~ $ ls > tmp.txt # redirect the output of 'ls' command to 'tmp.txt' file
~ $ cat tmp.txt
bin
Descărcări
Desktop
Documente
file.gif
Muzică
nohup.out
Poze
Sent to Ubuntu One
tmp.txt
ttyrecord
Video
άλφα
~ $ # our directory is on line 13 (in my case); we will use this number in next command
~ $ cat tmp.txt | sed -n 13p
άλφα
~ $ cd $(cat tmp.txt | sed -n 13p)
~/άλφα $ # voila
~/άλφα > rm -v ../tmp.txt
removed ‘../tmp.txt’
~/άλφα $
Radu Rădeanu
  • 169,590
1

The neat thing about files and directories on Linux is that they all have inode number. For instance, doing ls -i gives me in my home folder the following results:

6038625 图片/
5809021 搜狐影音/
6038605 文档/
6038600 桌面/

Now, what's good about this is that we can use that number to obtain its name via find command with its -inum flag, and cd to any of those folders like so:

$ pwd                                                              
/home/xieerqi
$ cd "$(find -maxdepth 1 -type d -inum 6038625)"                   
$ pwd
/home/xieerqi/图片

And of course since we did ls -i from the current working directory, we only need -maxdepth 1. This is actually a very frequent approach to deleting filenames that are problematic or impossible to obtain via copy-paste.

Sergiy Kolodyazhnyy
  • 105,154
  • 20
  • 279
  • 497
0

A possibility to avoid having to do that at all: sudo apt-get install nautilus-open-terminal

This adds an "Open in Terminal" item to the File menu and the right-click context menu (when no file is selected) in Nautilus. i.e.: Navigate to the offending folder in Nautilus and then File,Open in Terminal.

Phoeey
  • 521
0

You could use zsh as your default terminal (if you do, I'd suggest getting oh-my-zsh as well for extra goodies). zsh tab-complete allows you 'scroll' through the contents of a directory by pressing tab. You can see a what I'm talking about at 0:53 in this video: http://www.youtube.com/watch?v=fE3tYK_wUj8